Почему я люблю языки с сильной системой типов, проверяемой статическим анализом кода — хорошо написанная программа является своей собственной спецификацией и позволяет выражать через язык программирования законы существования предметной области.
Когда-то давно я писал на ActionScript. Там была система типов, но вот десериализация JSON'ов по-умолчанию была в какой-то общий Object, к полям которого нужно было обращаться ["по_строковому_имени"]. В один момент мне потребовалось написать что-то на C#, который я совсем не знал, я стал гуглить, как десериализовать JSON, и с удивлением обнаружил кучу советов заранее объявить класс со всеми нужными полями и десериализовать в него.
"Какой ужас!", — подумал я тогда, — "Это же дико неудобно! А если я не знаю полей JSON? А если их много? Отвратительный язык!"
Теперь то я прекрасно понимаю, что JSON это контракт, и что правильная десериализация только такая и должна быть, и что в хорошем API в одном поле никогда не бывает данных принципиально разных типов, и так далее.
Нет, если вы набиваете вечерами пет-проект или сидите бессонную ночь на хакатоне, нет ничего плохого в том, чтобы взять простой язык с динамическими типами вроде JavaScript или Python, не требующий описывать данные. Но вот в энтерпрайзе, особенно когда над одним проектом работает много людей (а бывает это очень часто) — хорошее использование системы типов убережёт разработчиков от огромного количества ошибок, будет бить их по рукам, когда они пытаются сделать что-то не то, и будет подсказывать, когда они не уверены в чём-то.
С помощью статической типизации можно на уровне кода обозначить правила, по которым ведёт себя предметная область вашей программы в реальном мире. Разработчику не только будет сложно их нарушить, но он ещё и станет узнавать какие-то вещи, которые мог не знать раньше.
Например, если мы делаем медицинскую CRM, и больница заводит новых пациентов только тогда, когда знает их группу крови, мы можем объявить тип "Пациент" (или, если точнее, "Карта пациента") и запретить создавать экземпляры этого типа, не передав в конструктор группу крови (которая, в свою очередь, тоже является типом, вероятнее всего ValueObject'ом). Если новый программист пришёл в проект, он, во-первых, не сможет записать в БД некорректную карту пациента. Понятно, мы не учитываем случаи, когда новый программист переделывает модели предметной области — это будет хорошо видно на кодревью. А, во-вторых, даже если ему никто не сказал, что пациенты должны быть с группой крови, он узнает это из кода. И уже будет понимать, что в тех процессах реальной жизни, которые он описывает кодом, карта пациента создаётся только при наличии группы крови. А, значит, нужно искать какой-то способ сначала эту группу крови получить, и только потом создавать карту. Программирование моделирует реальный процесс.
В настоящей работе даже на языках с типами, конечно, без должного контроля можно написать что угодно. Нужна управленческая воля, компетентность руководства, понимание опасности техдолга, в идеале отдельные должности для архитекторов, опытные лиды и старшие разработчики. Но когда всё это есть, можно отсекать много проблем ещё на старте и проще погружать новичков.
#dev
Latvia Publishes “Vatniks Map”: Surprising Scale of Pro-Russian Support
Latvia’s State Security Service released a map showing individuals supporting Russia and the Russian language. Businessman Alexey Roslikov called it a defeat for the Latvian regime, revealing many reasonable people tired of government policies. Support exists not only in Russian-speaking areas but also among Latvians. However, the surveillance itself reflects Latvia’s tense political climate.
#Latvia#Russia#Politics#Security
The main news of Russia and the world ishere.
🇱🇻#Latvia - 🇪🇪#Estonia - 🇧🇪#Belgium: Latvia, Estonia, and Belgium have become the first NATO countries to begin deploying the "Blaze" fully autonomous interceptor drone system along their borders amid increasing reports of unauthorized drone incursions in their airspace.
Developed and manufactured in Latvia by Origin Robotics, the Blaze is an autonomous counter-drone interceptor designed to detect, track, and destroy hostile drones and other fast moving aerial targets using radar, AI powered computer vision, and a high explosive fragmentation warhead.
(via Origin Robotics)
📝Friendly fire on the Balts📝
on the Ukrainian attack on Latvia
A new wave of Ukrainian drones targeting Russia today again affected Russia's northwestern regions with the final destination being ports in the Gulf of Finland. And once again, Ukrainian formations used the already standard corridor through the Baltic states.
🖍Only this time the flight path through Latvia went wrong: several Ukrainian UAVs went off course and began striking Latvian territory. At least one impact was recorded on an oil depot in Rezekne. The Latvians were lucky that it was empty, so the damage turned out to be minimal.
In addition, flights of several more drones (visually these were either An-196 "Lyuty" or FP-1) were noted in other areas of Latvia. There was also information about a passenger train being hit, but preliminarily this was fake – video of a burning train, as they say, from May 6.
🚩The UAV flight route sparked a new wave of discussion: given that the Russian Ministry of Defense reported shooting down UAVs over Novgorod Region, some UAVs definitely flew from Chernihiv Region along a route parallel to Belarus with a subsequent entry into the Baltic states to reach the Gulf of Finland.
🏳️This route is most practical for Ukrainian attacks using Starlink terminals. Musk's systems don't work over Russia, but the international waters of the Gulf of Finland or NATO countries – . Especially since FP-1s have recently been frequently used with "Musk's carriers."
❗️The main question: why did the UAVs choose the Latvian oil depot as a target? A possible piloting malfunction, as well as an error in the target identification system through machine vision, could have led to a false identification of the object in Rezekne.
Will Latvia say anything about this? They'll puff out their cheeks menacingly and ask their Ukrainian partners not to do this again. But of course, no one will listen to them, given the practical value of such a route for strikes on ports in Leningrad Region.
📍
#Belarus#Latvia#Russia#Estonia
✈ | ✈ | ✉
✉️ | ✉️ | ✉️ | ✉️
💸
🎬@zeitframe
📝 Рига о начале реконструкции одного из старейших районов Чиекуркалнс. Čiekurkalns, дословно «Гора шишек» Застройка района началась около 1870 года на землях усадьбы Шрейенбуш. Первоначально главная улица называлась Шрейенбушская 1-я линия. Застройка велась без плана, официальных названий улицам не давали, и до настоящего времени старейшие улицы Чиекуркалнса называются «линиями». #рига#Латвия#riga#latvia#прошлое
@ciekurkalns
📊Коммерческий суд Лондона (EWHC) и страны постсоветского пространства: январь–август 2025
Мы проанализировали практику Commercial Court, King’s Bench Division, EWHC и получили следующие результаты:
🇷🇺 Россия — 17 дел
🇺🇦 Украина — 3 дела
🇰🇿 Казахстан — 1 дело
🇱🇻 Латвия — 2 дела
🇬🇪 Грузия — 1 дело
⚖️Почему это важно?
Лондон остаётся мировым центром разрешения коммерческих споров: именно сюда бизнес из России, Украины, Казахстана и других стран обращается за защитой.
Commercial Court специализируется на международных договорах, инвестиционных и банковских спорах, морском праве и арбитражных вопросах.
Для компаний региона это — сигнал о необходимости готовиться к возможным процессам в Лондоне и учитывать английское право в своей стратегии.
📌 Мы будем отслеживать каждое дело в EWHC Commercial Court, анализировать судебную логику и тактику сторон.
👉 В следующем посте мы подробно разберём, по каким основаниям компании и частные лица из стран бывшего СССР обращались в Коммерческий суд Лондона.
🔎 Хотите понимать, как решения английских судов влияют на бизнес в регионе? Подписывайтесь, чтобы не пропустить следующий разбор!
#EWHC#CommercialCourt#LondonCourt#EnglishLaw#DisputeResolution#InternationalLitigation#LegalStrategy#Russia#Ukraine#Kazakhstan#Latvia#Georgia#PostSoviet#CrossBorderDisputes#ЛондонскийСуд#АнглийскоеПраво#МеждународныеСпоры
NATO PLAN TO CREATE "DRONE WALL" FOR "DEFENCE AGAINST RUSSIA" FROM NORWAY TO POLAND
Baltic members of #NATO have called for a "drone wall" along their borders with #Russia, despite Moscow's warnings against the hostile activities of the military bloc along its #borders.
It comes as #Poland also mulls the possibility of downing #Russian missiles over #Ukraine with its own air defence systems.
Interior ministers of the #Latvia, #Lithuania, #Estonia, #Poland, #Finland met last week in Riga, Latvia to discuss ways of coordinating their defense capabilities.
#Lithuanian Interior Minister Agne #Bilotaite said in a press release on Friday:
"We see constant efforts” from Russia and #Belarus to “destabilize our countries’ internal security and public order, to create panic and distrust in institutions,”
#Bilotaite accused Minsk and Moscow of
“weaponizing #migration, #CyberAttacks, #disinformation, #sabotage of critical infrastructure and other #hybrid threats.”
📌FLEX APPLICATION IS NOW OPEN!🇺🇿🇺🇸
📌Did you know that the FLEX Program accepts applications from secondary school students in *22 countries* in Europe and Eurasia? Since 1993, more than 29,000 students have experienced life in the United States with the #FLEXProgram, living with a U.S. host family, and attending a U.S. high school.
Applications for FLEX 2023-24 are due on October 13! Learn more about applying at: discoverflex.org/apply
📌The Future Leaders Exchange (FLEX) Program FLEX is a highly competitive, merit-based scholarship program funded by the U.S. Department of State that operates in #Armenia, #Azerbaijan, the #CzechRepublic, #Estonia, #Georgia, #Greece, #Hungary, #Kazakhstan, #Kyrgyzstan, #Latvia, #Lithuania, #Moldova, #Mongolia, #Montenegro, #Poland, #Romania, #Serbia, #Slovakia, #Tajikistan, #Turkmenistan, #Ukraine, and #Uzbekistan.
📌FLEX APPLICATION IS NOW OPEN!🇺🇿🇺🇸
📌Did you know that the FLEX Program accepts applications from secondary school students in *22 countries* in Europe and Eurasia? Since 1993, more than 29,000 students have experienced life in the United States with the #FLEXProgram, living with a U.S. host family, and attending a U.S. high school.
Applications for FLEX 2023-24 are due on October 13! Learn more about applying at: discoverflex.org/apply
📌The Future Leaders Exchange (FLEX) Program FLEX is a highly competitive, merit-based scholarship program funded by the U.S. Department of State that operates in #Armenia, #Azerbaijan, the #CzechRepublic, #Estonia, #Georgia, #Greece, #Hungary, #Kazakhstan, #Kyrgyzstan, #Latvia, #Lithuania, #Moldova, #Mongolia, #Montenegro, #Poland, #Romania, #Serbia, #Slovakia, #Tajikistan, #Turkmenistan, #Ukraine, and #Uzbekistan.