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

Резултати

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

Търсене: #urbandata

当前筛选 #urbandata清除筛选

Начну с одного из своих любимых примеров использования городских данных из столицы Шотландии, Эдинбурга. Каждый август там проходит международный фестиваль Edinburgh Festival Fringe, на который приезжают тысячи туристов и, конечно, стандартное расписание транспорта этого относительно небольшого города не справляется с такой нагрузкой. Чтобы подстроить работу автобусов и поездов ( многие туристы ночуют вне Эдинбурга) под спрос, городские власти совместно с департаментом транспорта и университетом Эдинбурга, собирают статистику с учреждений-участников фестиваля о времени проведения их мероприятий и количестве зарегистрировавшихся, и, исходя из этого, определяют в какие часы, какое количество дополнительных рейсов и куда должно быть направлено. Говорят, что регулируют даже светофоры. Система пока не настроена, чтобы работать реал-тайм, поэтому решения принимаются заранее на основе ожидаемых цифр и исторических данных. В целом, это понятный и эффективный пример того, как данные помогают избежать перегруженности транспорта во время массовых мероприятий. Может и нашим властям попробовать вместо того, чтобы закрывать метро, подстраивать работу транспорта под спрос? #urbandata#urbanalytics#scotland#smartcity

Качество инфраструктуры-важный, но не единственный параметр при принятии решения о переезде в новый район. Другой вопрос, которые возникает в головах у многих : "а кто мои будущие соседи?". "С кем будет учиться ребенок в школе, безопасно ли вечером на площадке у дома, будут ли у меня партнеры по бегу?" . Здесь я вас разочарую : в России на эти вопросы вам ответят только бабушки на лавочке у подъезда. А вот в Европе, и в частности Британии, такую бабушку заменяет .. перепись населения! Да, та самая, которая проводится раз в 10 лет и во время которой незнакомые люди с бумажными анкетами, спрашивают вас, сколько человек у вас в семье и кто вы по-национальности Дело в том, что в Британии результаты переписи населения предназначены для аудитории значительно шире российской,а потому и данных собирается в разу больше. Сравните. В России: " цель.. - формирование федеральных информационных ресурсов". В Британии: "перепись.. дает лицам, принимающим решения в национальных и местных органах власти, общественных группах, благотворительных организациях и предприятиях, возможность лучше обслуживать сообщества и отдельных лиц. в Соединенном Королевстве". В России есть 10 показателей в разрезе регионов, в Британии 104 в 13 географических разрезах от страны до почтового индекса ( 15-20 квартир). Как результат, в России максимум, что я могу узнать, что в Тюменской области в городах живут 343тыс рабочего населения возрастом от 20-30 лет; в Британии, что в Ливерпуле в районе центрального железнодорожного вокзала живет 3700 человек от 20 до 35 лет, из которых 114 - владельцы собственного бизнеса на фул-тайм и 18 из них еще параллельно учатся. Заметили разницу? Кроме того в Британии помимо основной анкеты про пол/возраст/национальность есть еще расширенная, по которой опрашивают выборочно, но так чтобы составить полное представление о каждом районе. Вопросы такие: сколько часов в день у них уходит на дорогу на работу, как часто члены семьи ездят на машине/велосипеде/автобусе, как давно переехали в эту квартиру, какой процент дохода тратите на коммунальные услуги и т.д. Все эти данные крайне важны для политиков,городских планировщиков, социальных служб, исследователей и да, для тех, кто выбирает новый район для жизни, ведь с точностью до 20 квартир можно многое узнать про соседей. Британский сайт переписи : https://www.nomisweb.co.uk/census/2011/data_finder Российский сайт переписи: https://vpngis.gks.ru:8443/ #census#opendata#urbandata#datainthecity#перепись2021