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

Резултати

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

Търсене: #alllivesmatter

当前筛选 #alllivesmatter清除筛选

#masa_QA Что такое «обратная дискриминация» и существует ли она? Под каждым постом о дискриминации женщин появляются комментарии вроде «мужчин тоже ущемляют», «права мужчин тоже нарушают». В ответ на движение #BlackLivesMatter белые американцы запустили хэштег #AllLivesMatter (Все жизни важны) с посылом, что с дискриминацией сталкиваются все жители США, а расизм может быть «обратным». Гетеросексуалы борются с «пропагандой гомосексуальности», заявляя, что ЛГБТ-сообщество нарушает их права. На самом ли деле существует проблема обратной дискриминации, и могут ли женщины угнетать мужчин, геи — гетеросексуалов, а черные — белых? Давайте разбираться 👇 ▪️ Как вообще работает дискриминация Дискриминация — это негативное, предвзятое отношение к человеку/группе людей, лишение прав по какому-то признаку (гендер, сексуальность, национальность, раса). Дискриминация появляется, когда одна группа людей обладает большей властью, привилегиями и ресурсами, чем другая. Представители доминирующей группы могут пользоваться этим осознанно (как при рабстве или крепостном строе), а могут и не понимать, что у них есть какие-то преимущества. И как только представители дискриминируемой группы заявляют о своих правах, — это воспринимается как посягательство. ▪️Дискриминация бывает системной и бытовой. Системная проявляется на государственном, институциональном уровне — например, во многих странах есть список запрещенных профессий для женщин (в Казахстане тоже). Или когда женщинам законом запрещено делать аборты, гомосексуалам — вступать в брак, усыновлять детей. Или когда люди определенной национальности лишены прав. Бытовая дискриминация основана на стереотипах, с ней мы сталкиваемся в повседневной жизни практически постоянно: «место женщины на кухне», «ЛГБТ хотят развратить наших детей» или «казахоязычные люди = необразованные». ▪️ По-вашему, страдают только женщины, геи и темнокожие? Все люди так или иначе сталкиваются с несправедливостью, с нарушением прав человека, особенно, если живут в авторитарных странах. Дело в том, что эти проблемы нельзя называть обратной дискриминацией. Когда мы говорим «обратная дискриминация», то подразумеваем, что для мужчин, как и для женщин, есть список запрещенных профессий; гетеросексуалам, например, так же сложно вступить в брак, как и гомосексуалам; темнокожих людей так же часто не берут на работу или задерживают, как и белых. Но это не правда. ▪️ Ну мужчин же призывают в армию! А еще им не отдают детей при разводе. Это дискриминация Примеры про армию или социальное давление из-за роли кормильца не вписываются в систему дискриминации. Об этом хорошо рассказала исследовательница Дениз Кандиоти еще в 1988 году в статье про «патриархальную сделку». Патриархат дает мужчинам привилегии (контроль, роль «главного», доступ к ресурсам), но в то же время заставляет платить издержки (принудительная армия, необходимость поддерживать роль «кормильца» и «настоящего мужика»). Исторически мужчины сами поместили себя в такую систему, и благ они получают намного больше, чем неприятностей. Что касается, например, прав на воспитание детей, по данным Kursiv.kz на 1 мая, в Казахстане более 220 тысяч должников по алиментам, 97 % из них — мужчины. При разводе дети намного реже остаются с отцами — и виновата в этом все та же патриархальная система, в которой воспитание детей — «женское дело». ▪️ Почему феминистки, ЛГБТ-активисты или активисты #BLM говорят только о себе? Почему не борются за права мужчин, гетеросексуалов, белых? Во-первых, потому что у мужчин, гетеросексуалов и людей со светлым цветом кожи (либо коренной/преобладающей национальности, зависит от страны) гораздо меньше проблем с нарушением прав. Во-вторых, феминистки, ЛГБТ и другие активисты борются за свои права. Если мужчины, гетеросексуалы или другие группы считают себя дискриминированными, никто не мешает им собраться и начать борьбу.