|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
|
Точность выполнения кода в задачах жизни и смерти. Утиная типизация (Duck tuping)19.11.2019, 07:48. Показов 15339. Ответов 125
Это принцип в Python по аналогии, что когда что-то крякает, как утка и ходит, как утка, то это является уткой. Если буду писать программы, связанные с медицинской диагностикой с разветвлениями алгоритма в тысячи вариантов, то как избежать ошибок, чтобы программа не приняла одни данные за другие?
0
|
|
| 19.11.2019, 07:48 | |
|
Ответы с готовыми решениями:
125
Утиная типизация Утиная типизация дело жизни и смерти |
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
||
| 23.11.2019, 10:39 [ТС] | ||
0
|
||
|
Просто Лис
|
|
| 23.11.2019, 10:42 | |
|
Что в переменной случайно могут оказаться данные не того типа, которые ожидались. Например, я выше приводил пример с функцией у которой один аргумент int, а ей передали строку.
В строготипизированных языках такая ошибка отлавливается ещё на этапе компиляции, а не runtime.
1
|
|
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
|
| 23.11.2019, 15:30 [ТС] | |
|
0
|
|
|
|
||
| 23.11.2019, 15:50 | ||
|
Аннотация типов + проверка кода посредством mypy. И нужно понимать, что любой серьезный код (не важно на каком языке) должен покрываться тестами. P.S. Кстати говоря, спутники все равно падают, даже если их ПО написано на статич. типизируемых языках. Потому что самые частые (и фатальные) ошибки программистов лежат вовсе не в плоскости несоответствия типов (они обнаруживаются на стадии компиляции\тестирования кода, то есть не в рантайме). А логические ошибки, ошибки переполнения и ошибки на единицу. Миллионы долларов падают на дно океана или сгорают в атмосфере именно из-за них. И эти ошибки нельзя исправить используемым языком. Это ошибки человека.
1
|
||
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
||
| 23.11.2019, 16:24 [ТС] | ||
|
Поискал на Ютубе про Mypy и обнаружил видео про PyRe https://www.youtube.com/watch?v=-Lz81ex3jP8
Добавлено через 8 минут Надо чтобы в подобных алгоритмах Python не переключил на соседнюю ветку по ошибке. Это в Драконе делалось (требует для понимания знание этого языка, как думаю), что не совсем наглядно, потом поищу получше пример.
0
|
||
|
Просто Лис
|
|||||||||||
| 23.11.2019, 16:46 | |||||||||||
|
Какая-то ересь, а не блок-схема.
В принципе, опасения понятны. if будет отрабатывать без проблем:
Как я понял, ты будешь писать что-то вроде интерактивных инструкций? Добавлено через 9 минут По идее такие алгоритмы пишутся как можно проще. Картинку "химический ожог глаза" перевёл в псевдо-код:
0
|
|||||||||||
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
||
| 23.11.2019, 18:19 [ТС] | ||
|
Благодарю.
Алгоритм подобной структуры, это один из вариантов, есть и другие. Потом возможно поищу образец. Смысл другого варианта в том, что определённым симптомам присваивается оценка, например по пятибальной шкале (под симптомами подразумевается например боль в определённой части тела, сыпь, изменения цвета кожи, сознания, поза больного, изменения в глазах, во рту, дрожь, потливость, цвет и вид выделений, температура тела). Одни симптомы имеют больший вес перед другими благодаря цифровой оценке и при подсчёте определённым образом это помогает автоматизировать диагностику.
0
|
||
|
Просто Лис
|
|
| 23.11.2019, 18:27 | |
|
Это называется экспертная система. Крутая штука. Надо только грамотно составить вопросы и раздать их экспертам-людям, чтобы они ответили. Бонусом можно назначать каждому эксперту коэффициент достоверности.
Добавлено через 24 секунды Круто работает даже в консольном исполнении.
1
|
|
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
|
| 23.11.2019, 18:31 [ТС] | |
|
А экспертную систему с цифровой оценкой симптомов как лучше программировать в контексте этой темы форума?
0
|
|
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
||
| 23.11.2019, 20:04 [ТС] | ||
|
Идея ещё в том, что если научусь писать десктопную программу (из отдельных алгоритмов-модулей), то чтобы потом в будущем, если научусь делать интернет - приложения (знаю html и когда то знал css), можно было запрограммированные алгоритмы перенести в веб, а не переписывать по новой.
В чём смысл такой индексации, а не программировать взаимодействие разных схем-алгоритмов вручную. Потому что эта работа будет разнесена во времени. В один месяц запрограммирую одну схему-алгоритм, потом когда то при наличии свободного времени другой и так далее. Хотя возможно вместо индексации симптомы, чтобы автоматически становились тегами. Чтобы на отдельной странице можно было организовать систему тегов, разнеся разные симптомы по группам (например, по принципу отношения к разным частям тела). Таким образом, отметив несколько симптомов на этой странице, можно было бы выбрать алгоритм диагностики, с которым несколько симптомов совпадают. С тегами ещё может быть связан один полезный функционал, который не буду описывать в этом сообщении, чтобы его не перегружать. Также смысл подобия поисковой системе может быть следующий. В интерфейсе будет строка поиска с надписью, например "На что жалуется пациент? Введите одну или несколько жалоб или признаков болезни". И по введенным заранее в программу ключевым словам будет осуществляться переключение на определённый диагностический алгоритм. Если введённых данных будет недостаточно для переключения на соответствующий алгоритм, то будут отображаться наводящие вопросы или слова с чек-боксами для галочек или других вариантов выбора. Добавлено через 54 минуты Следующий функционал программы в чат-боте. Назовем всю программу виртуальной поликлиникой. В выпадающем списке у чат-бота можно выбрать из списка профильного врача-чатбота (офтальмолога, хирурга, дерматолога, гинеколога, уролога, генетика и других). В разные дни можно диагностироваться у разных чат-ботов, занося данные в программу. И пройдя обследование у разных виртуальных специалистов (которые в недрах программы будут взаимодействовать между собой) за несколько дней (так как всё сразу делать утомительно), можно соориентироваться в отношении хронического заболевания, которое не удаётся диагностировать обычными способами (так как заболеваний, включая сотни генетических, существует несколько тысяч). Как быть с тем, что при самолечении не используется опыт врачей, имеющих соответствующее образование и поведавших разных пациентов с реально видимыми симптомами на практике, а не в текстовых записях. Не знаю как. Программа будет в первую очередь ориентирована на таких людей, как сам, увлекающихся изучением медицины, но у которых знания не упорядочены в мозгу в виде алгоритмов. Или например для гипотетического случая, когда врач после института попадает на рабочее место и говорит заведующему, что ему бы надо ещё попрактиковаться под присмотром более опытного специалиста и почитать учебники, а его ставят в ситуацию, что наставник на больничном, а людей нужно лечить, потому что из прибывших больных кто-то может умереть, потому что в региональную больницу не направить, так как дороги замело снегом (читать надо было типа в институте, а сейчас пора начинать работать). Часть из того, что хочу заложить в программу, разрабатывалась для автоматизированной диагностики на ЭВМ в СССР, только не было реализовано в доступном людям виде из-за распада Советского Союза.
0
|
||
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
|
| 24.11.2019, 12:40 [ТС] | |
|
А если конвертировать в exe, то исчезают ли риски, связанные с тем, что что то пойдёт не так, что если запустят на другой версии Python, которая может выполнить код как то по другому, чем было задумано?
0
|
|
|
Просто Лис
|
||||||
| 24.11.2019, 12:58 | ||||||
|
Нет. Это фактически упаковка интерпретатора и код в один файл.
Но есть такая замечательная вещь как cython. Переводится в чистый Си и компилируется. Вот пример с википедии:
1
|
||||||
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
|
| 24.11.2019, 13:15 [ТС] | |
|
А упаковка интерпретатора и кода в один файл имеет недостатки с точки зрения повышения надёжности в контексте обсуждаемой темы? Что может помешать выполниться коду правильно (как было задумано разработчиком написанной программы)? Там может произойти некоторый random? Это менее надёжно по сравнению с преобразованием в код из последовательности 0 и 1? А в cython код хранится в виде последовательности 0 и 1? Или сейчас 0 и 1 не используется или добавлены другие принципы?
0
|
|
|
Просто Лис
|
||
| 24.11.2019, 13:22 | ||
|
Надёжность не повышается. Если в коде есть ошибки - они точно также будет влиять.
Какие ошибки? Да любые. Тип данных не проверили, в одной из веток забыли создать переменную. Выход за границы списка. Хотите надёжный код: покрывайте все функции тестами и ещё раз тестами. И не важно какой язык: строготипизируемый или нет. Рекомендую pytest - на нём проще писать тесты. Добавлено через 1 минуту https://habr.com/ru/post/269759/
1
|
||
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
|
| 24.11.2019, 13:32 [ТС] | |
|
Имел в виду, что если программу напишу сейчас без ошибок, а запустят её через 10 лет, когда Python может быть другой. То если встроить Python в программу, то повысит ли это надёжность или всё равно останутся влияющие факторы через оперативную память от других программ например и что код на другом железе через 10 лет может выполняться по другому?
0
|
|
|
Просто Лис
|
|
| 24.11.2019, 13:57 | |
|
В любом случае собирать "exe" из питона плохая идея на мой взгляд.
Если хочешь чтобы программа гарантированно работала без внешних зависимостей - таскай с программой фиксированную портативную версию питона и все библиотеки к нему. Тогда программа точно будет запускаться до тех пор, пока будет запускаться этот интерпретатор на ОС/железе. Добавлено через 2 минуты Не по теме: хотя я знаю программу, которая написана на питоне и успешно работает более 10-ти лет и пережила небольшой переезд с питона 2.6 на текущую стабильную ветку где-то 2.7.15
1
|
|
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
||
| 24.11.2019, 15:49 [ТС] | ||
0
|
||
|
Просто Лис
|
|
| 24.11.2019, 16:00 | |
|
Такая "упаковка" работает криво, некоторые библиотеки упаковываются с болью или не упаковываются вообще.
Код на питоне требует установленного в системе интерпретатора, а в windows он по умолчанию не стоит нигде. Так что остаётся устанавливать питон в систему, чтобы работала твоя программа, или таскать с собой портативную версию интерпретатора. В линуксах с этим попроще - какой-нибудь питон да уже установлен в системе. А библиотеки для программы можно принести с собой.
0
|
|
| 24.11.2019, 16:00 | |
|
Помогаю со студенческими работами здесь
40
вопрос жизни и смерти!!
Вопрос жизни и смерти.. Файлы.(Вопрос жизни и смерти)
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|
|
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию группы. . .
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит значение перечислений.
/ / Событие "НачалоВыбора" реквизита на форме. . .
|