TGTGInsightтелеграм анализLIVE / telegram public index
← Такты, стеки, два колеса

TGINSIGHT SIMILAR POSTS

Намери подобно съдържание

Изходен канал @clockstackwheels · Post #721 · 26.12

Почему я люблю языки с сильной системой типов, проверяемой статическим анализом кода — хорошо написанная программа является своей собственной спецификацией и позволяет выражать через язык программирования законы существования предметной области. Когда-то давно я писал на ActionScript. Там была система типов, но вот десериализация JSON'ов по-умолчанию была в какой-то общий Object, к полям которого нужно было обращаться ["по_строковому_имени"]. В один момент мне потребовалось написать что-то на C#, который я совсем не знал, я стал гуглить, как десериализовать JSON, и с удивлением обнаружил кучу советов заранее объявить класс со всеми нужными полями и десериализовать в него. "Какой ужас!", — подумал я тогда, — "Это же дико неудобно! А если я не знаю полей JSON? А если их много? Отвратительный язык!" Теперь то я прекрасно понимаю, что JSON это контракт, и что правильная десериализация только такая и должна быть, и что в хорошем API в одном поле никогда не бывает данных принципиально разных типов, и так далее. Нет, если вы набиваете вечерами пет-проект или сидите бессонную ночь на хакатоне, нет ничего плохого в том, чтобы взять простой язык с динамическими типами вроде JavaScript или Python, не требующий описывать данные. Но вот в энтерпрайзе, особенно когда над одним проектом работает много людей (а бывает это очень часто) — хорошее использование системы типов убережёт разработчиков от огромного количества ошибок, будет бить их по рукам, когда они пытаются сделать что-то не то, и будет подсказывать, когда они не уверены в чём-то. С помощью статической типизации можно на уровне кода обозначить правила, по которым ведёт себя предметная область вашей программы в реальном мире. Разработчику не только будет сложно их нарушить, но он ещё и станет узнавать какие-то вещи, которые мог не знать раньше. Например, если мы делаем медицинскую CRM, и больница заводит новых пациентов только тогда, когда знает их группу крови, мы можем объявить тип "Пациент" (или, если точнее, "Карта пациента") и запретить создавать экземпляры этого типа, не передав в конструктор группу крови (которая, в свою очередь, тоже является типом, вероятнее всего ValueObject'ом). Если новый программист пришёл в проект, он, во-первых, не сможет записать в БД некорректную карту пациента. Понятно, мы не учитываем случаи, когда новый программист переделывает модели предметной области — это будет хорошо видно на кодревью. А, во-вторых, даже если ему никто не сказал, что пациенты должны быть с группой крови, он узнает это из кода. И уже будет понимать, что в тех процессах реальной жизни, которые он описывает кодом, карта пациента создаётся только при наличии группы крови. А, значит, нужно искать какой-то способ сначала эту группу крови получить, и только потом создавать карту. Программирование моделирует реальный процесс. В настоящей работе даже на языках с типами, конечно, без должного контроля можно написать что угодно. Нужна управленческая воля, компетентность руководства, понимание опасности техдолга, в идеале отдельные должности для архитекторов, опытные лиды и старшие разработчики. Но когда всё это есть, можно отсекать много проблем ещё на старте и проще погружать новичков. #dev

Hashtags

Резултати

Намерени 4 подобни публикации

Търсене: #hypothesis

当前筛选 #hypothesis清除筛选
ALL About RSS

@AboutRss · Post #727 · 23.07.2020 г., 01:00

支持 RSS 的 #开源 全网备注/评论 #服务#Hypothesis 借助 Hypothes.is 的浏览器扩展,你可以收藏任何网上公开的文字,并配以自己的备注或评论。如果你的备注/评论是公开发布的话,它将出现在 Hypothes.is 的官方 feed 里。而且可以通过 RSS feed 订阅某个标签或某个用户的公开评论。详见: https://web.hypothes.is/help/atom-rss-feeds-for-annotations/ 有了 RSS ,玩法就多了。比如这位,把 Ta 自己的评论集成到了其 WordPress 博客中: https://boffosocko.com/2020/05/30/hypothes-is-annotations-to-wordpress-via-rss/ 发现于 https://twitter.com/ChrisAldrich/status/1267205421787316224

Ebm_base

@ebm_base · Post #313 · 07.10.2023 г., 16:00

СМЕШАЙ И (НЕ) ДЕЛАЙ Я уже рассказывал о гипотезах (1 часть, 2 часть), но теперь я решил связать это с показателем p-value и случайными ошибками (также известными как ⍺ и β или ошибки I и II рода) 🤯 Большинство медицинских исследований делается в рамках проверки значимости нулевой гипотезы (Null Hypothesis Significance Testing, NHST). Принцип предполагает, что мы проверяем нулевую гипотезу (Н0), а затем принимаем решение отвергать ее или нет. Но часто в этой концепции неосознанно соединяют 2 метода: Фишера и Нейрона-Пирсона 🍸 1) Подход Фишера Он позволяет рассчитать вероятность получить такой или более экстремальный результат в исследовании при условии, что Н0 верна. Что-то это напоминает... Верно! Это и есть определение p-value 🔥 Мы проверяем насколько вероятно наши полученные данные соответствуют заранее сформулированной Н0. Если не соответствуют, то отвергаем Н0. Т.е. мы просто оцениваем суммарную/кумулятивную вероятность в конкретном исследовании. Низкое значение p указывает только на несоответствие Н0 полученным данным, оно не может быть интерпретировано как доказательство в пользу конкретной альтернативной гипотезы (Н1) 🤔 "No isolated experiment, however significant in itself, can suffice for the experimental demonstration of any natural phenomenon" 2) Подход Неймана и Пирсона Это "игра в долгую", когда на основе предполагаемой величины эффекта выдвигаются Н0 и Н1. При этом с определенной вероятностью можно получить разные варианты результатов, в т.ч. ошибки I рода (⍺; ложноположительный; отклонить Н0, когда она верна) и II рода (β; ложноотрицательный; не отклонить Н0, когда она неверна) 🤖 В этом методе мы лишь предполагаем вероятности (грубо, пытаемся их контролировать/предсказать), но допустили их в конкретном исследовании или нет, не знаем. Т.е. только при многократном тестировании гипотез мы увидим частоту ошибок и сможем принять решение 📊 Эти 2 подхода часто ошибочно смешивают для простоты принятия решений (отклонить Н0), но в своей сути они разные 🎭 📍Когда заранее планируется эксперимент, исследователи пытаются контролировать вероятность ошибок (долгосрочная вероятность), для этого рассчитывают размер выборки. А когда уже получены результаты, то можно лишь рассчитать текущую вероятность получить такие или более экстремальные результаты, если бы Н0 была верна, но при этом нельзя быть уверенным, что мы не допускаем ошибку I или II рода. Однако, когда есть несколько исследований, тестирующих одну Н0, то возможно получится увидеть в каком из них допущена случайная ошибка (опять долгосрочная вероятность). Графически различия подходов можно увидеть на рис.1 При этом, мы не можем "доказать" гипотезу (ни нулевую, ни альтернативную), для этого нужно использовать другие методы (например, Байесовский подход) 🥵 Помните, не путайте и не давайте себя путать. Если хочется разбираться в статистике, читать "критически" статьи, то нужно учиться разбираться в основах (глупо читать книгу без знания алфавита, фонетики, грамматики, орфографии) 📖 А в статистике основ дох... много 😁 @ebm_base #ebm_statisica#ebm_base#hypothesis

dopingpong

@dopingram · Post #1890 · 15.08.2022 г., 11:50

Впоследствии стеклянные сферы-шлемы под воздействием стихии и времени были полностью уничтожены. И только недавно обнаруженный документ проливает свет на происхождение и первоначальную задумку данного скульптурного комплекса. Аборигены, обладавшие утерянными ныне технологиями, воздвигли памятник инопланетянам, открывшим их остров задолго до европейцев. Doping Pong создали новую картину на основе дорожной зарисовки, не сохранившейся до наших дней, но описанной однажды в дневнике путешественника. Набросок, сопровождаемый единственной фразой, как будто озвучивал одного из изображённых героев, указывающего на небо и с уверенностью заявляющего: «Однажды они вернутся!» Что это – картина-гипотеза или картина-документ –решать вам. #dopingpong#history#aliens #моаи#пасха#островпасхи#головыостровапасхи#trip#science#theory#document#hypothesis#russianart#archeology#easter#island#tour