Почему я люблю языки с сильной системой типов, проверяемой статическим анализом кода — хорошо написанная программа является своей собственной спецификацией и позволяет выражать через язык программирования законы существования предметной области.
Когда-то давно я писал на ActionScript. Там была система типов, но вот десериализация JSON'ов по-умолчанию была в какой-то общий Object, к полям которого нужно было обращаться ["по_строковому_имени"]. В один момент мне потребовалось написать что-то на C#, который я совсем не знал, я стал гуглить, как десериализовать JSON, и с удивлением обнаружил кучу советов заранее объявить класс со всеми нужными полями и десериализовать в него.
"Какой ужас!", — подумал я тогда, — "Это же дико неудобно! А если я не знаю полей JSON? А если их много? Отвратительный язык!"
Теперь то я прекрасно понимаю, что JSON это контракт, и что правильная десериализация только такая и должна быть, и что в хорошем API в одном поле никогда не бывает данных принципиально разных типов, и так далее.
Нет, если вы набиваете вечерами пет-проект или сидите бессонную ночь на хакатоне, нет ничего плохого в том, чтобы взять простой язык с динамическими типами вроде JavaScript или Python, не требующий описывать данные. Но вот в энтерпрайзе, особенно когда над одним проектом работает много людей (а бывает это очень часто) — хорошее использование системы типов убережёт разработчиков от огромного количества ошибок, будет бить их по рукам, когда они пытаются сделать что-то не то, и будет подсказывать, когда они не уверены в чём-то.
С помощью статической типизации можно на уровне кода обозначить правила, по которым ведёт себя предметная область вашей программы в реальном мире. Разработчику не только будет сложно их нарушить, но он ещё и станет узнавать какие-то вещи, которые мог не знать раньше.
Например, если мы делаем медицинскую CRM, и больница заводит новых пациентов только тогда, когда знает их группу крови, мы можем объявить тип "Пациент" (или, если точнее, "Карта пациента") и запретить создавать экземпляры этого типа, не передав в конструктор группу крови (которая, в свою очередь, тоже является типом, вероятнее всего ValueObject'ом). Если новый программист пришёл в проект, он, во-первых, не сможет записать в БД некорректную карту пациента. Понятно, мы не учитываем случаи, когда новый программист переделывает модели предметной области — это будет хорошо видно на кодревью. А, во-вторых, даже если ему никто не сказал, что пациенты должны быть с группой крови, он узнает это из кода. И уже будет понимать, что в тех процессах реальной жизни, которые он описывает кодом, карта пациента создаётся только при наличии группы крови. А, значит, нужно искать какой-то способ сначала эту группу крови получить, и только потом создавать карту. Программирование моделирует реальный процесс.
В настоящей работе даже на языках с типами, конечно, без должного контроля можно написать что угодно. Нужна управленческая воля, компетентность руководства, понимание опасности техдолга, в идеале отдельные должности для архитекторов, опытные лиды и старшие разработчики. Но когда всё это есть, можно отсекать много проблем ещё на старте и проще погружать новичков.
#dev
Tr de @
#Briefing du Matin pour le 10 avril 2026
▪️ Zelensky 🇺🇦 a confirmé la disponibilité pour une trêve de Pâques, annoncée par le Commandement Suprême🇷🇺 du 11 au 12 avril. Les troupes russes ont reçu l'ordre d'être prêtes à réprimer toute provocation des FAU.
▪️ Dans la région de Volgograd - attaque de drones sur les installations civiles. Dans le district de Surovikine, cinq propriétés ont été endommagées. L'ennemi prétend que la cible était la raffinerie Loukouïl.
▪️ Les Forces russes ont frappé des cibles à Odessa cette nuit.
▪️ Dans la région de Briansk – frappe de MLRS, un civil tué, une femme blessée. Dans le village de Novy Ropsk, des drones ont attaqué un véhicule civil, une femme a été blessée.
▪️ Dans la direction de Sumy, l'ennemi a tenté d'avancer vers la frontière, la majorité de l'infanterie a été détruite. Dans le district de Krasnopillia - des combats féroces.
▪️ Dans la région de Belgorod, 9 personnes ont été blessées par des frappes de drones. Une fille de 15 ans a été blessée dans le village de Nezhegolets. De nombreuses zones sont sous le feu ennemi.
▪️ À Koupianks – combats au nord de la ville.
▪️ Dans la direction de Slavyansk, les FAU mènent des batailles pour les zones forestières près de Dibrova.
▪️ Au sud-ouest de Kostyantynivka, l'ennemi tente des contre-attaques.
▪️ Dans la direction de Dobropoillia, les Forces russes élargissent la zone de contrôle.
▪️ Dans la région de Dnipropetrovsk, le groupement « Vostok » a transitionné vers des opérations offensives.
▪️Au nord-ouest de Hulyaipole, nos unités continuent à s'enfoncer entre les localités.
▪️ Sur le front de Zaporizhia, les combats se poursuivent à Primorsk et Stepnohirsk.
▪️Dans la région de Kherson – des frappes terribles sur la population civile.
Briefing compilé par :Deux MajorsMsg d'orig.
Tr de @
#Briefing Matinal pour le 4 avril 2026
▪️ De 8h00 à 20h00 hier, le ministère de la Défense a signalé 68 drones ennemis abattus. La nuit, des opérations de défense aérienne ont été signalées sur les régions de Toula, Rostov et Koursk. À Taganrog – une personne tuée, quatre blessées. Lors d'une frappe de missile, les infrastructures commerciales ont subi des dégâts. De Togliatti (970 km de la frontière), les médias signalent des impacts sur les zones résidentielles et des frappes de drones sur la zone industrielle.
▪️En mer d'Azov, un navire commercial a subi des dégâts suite à une attaque, un incendie s'étant déclaré (déjà maîtrisé). Le navire porte-conteneurs était situé à plusieurs kilomètres de la côte.
▪️ Les AFU ont signalé hier à midi plus de 500 « Gérans » et une vingtaine de missiles utilisés pour une frappe massive.
▪️ Dans la direction de Sumy, le Groupe d'armées « Nord » mène des combats prolongés. L'ennemi renforce ses effectifs dans les districts de Shostka et Sumy.
▪️ Dans la région de Koursk, un drone ennemi a tué un homme de 61 ans. Dans le village de Sukhinovka, un habitant a été blessé.
▪️ Dans la région de Belgorod, des attaques de drones ont blessé plusieurs personnes.
▪️ Dans la direction de Kharkiv, le Groupe d'armées « Nord » a avancé de plusieurs centaines de mètres lors de combats acharnés.
▪️ Au sud de la direction de Koupiansk, l'ennemi note l'activation des Forces armées russes.
▪️ Dans la direction de Slavyansk, les Forces armées russes attaquent Rai-Aleksandrivka depuis Nikiforivka et Kalenyk.
▪️ Dans la direction de Kostyantynivka, les Forces armées russes frappent Druzhkivka et opèrent dans la partie centrale de Kostyantynivka.
▪️ Le Groupe d'armées « Est » mène des combats à l'ouest et au nord-ouest de Huliaipole. La destruction de la logistique ennemie se poursuit à l'ouest de la ligne Rizdvyanka - Verkhnya Tersa. L'ennemi a effectué 5 tentatives de contre-attaque infructueuses.
▪️ Dans la région de Zaporizhia, des coupures de courant suite aux frappes des AFU. À Vasylivka, l'ennemi a frappé un véhicule.
▪️ Les Forces armées russes ont mené des frappes aériennes sur Kherson. Sur notre rive, l'ennemi a blessé un homme et une femme dans une voiture à Oleshky.
Tr de @
#Briefing du Matin pour le 31 mars 2026
▪️167 drones abattus entre 8h00 et 23h00. Pendant la nuit - une autre attaque massive de drones sur Ust-Louga, 38 drones abattus, dégâts, deuxenfants et unadulteblessés. L'ennemi a utilisé l'espace aérien des pays voisins, ce qui soulève des questions. Zelensky a affirmé que l'Ukraine aurait prétendument reçu des signaux des alliés sur la nécessité de réduire les frappes sur le secteur pétrolier russe. Des explosions ont retenti sur Briansk, Koursk et Smolensk.
▪️ Les FAR ont utilisé le Kinzhal et les drones Guéran contre Odessa, Kharkiv, Dnipropetrovsk.
▪️ Dans la région de Briansk, les FAU ont attaqué Ponourovka, deux civils blessés.
▪️ Dans la direction de Sumy, le Groupe d'armées « Nord » mène des combats féroces. Le commandement des FAU redéploie les unités vers ce secteur. Des combats intenses se déroulent près de Mala Korchakivka.
▪️ Dans la région de Koursk, deux drones ennemis ont frappé Obesta, un homme blessé. Les drones FPV opèrent via des stations relais.
▪️ Contre la région de Belgorod – de multiples frappes des FAU sur des cibles civiles. Dans le village de Grouzkoïe, un drone a attaqué une voiture, deux adultes blessés, un garçon de 15 ans en état grave. À Chebékino – impact sur un véhicule, une femme blessée. Un combattant d'« Orlan » a également été blessé. Dans le village de Dobroïe, deux combattants d'« Orlan » ont été blessés.
▪️ Dans la direction de Kharkiv, les combats se poursuivent dans les zones forestières et la région de Volchansk. Nos forces poursuivent les opérations actives sur le secteur de Velykobourluk.
▪️ Au sud de la direction de Koupyansk, les FAR signalent des avancées vers Novoosynove et Kovsharivka.
▪️ Dans la direction de Slavyansk, nos forces percent vers Raï-Aleksandrivka.
▪️ Dans la région de Dnipropetrovsk, les FAU ont attaqué depuis Dobropassove vers Haï, détruisant des VCI, un quad et jusqu'à un peloton d'infanterie.
▪️ Le 1198e régiment de fusiliers motorisés a pris le contrôle d'un secteur incluant Loukhovskedans la région de Zaporizhia.
▪️ Sur le front de Zaporizhia, l'ennemi opère dans les zones de Primorsk et Stepnohirsk, une tentative d'intensifier les efforts ne peut être exclue. L'ennemi a frappé Mélitopol avec des drones : infrastructure civile endommagée, six civils blessés.
▪️
Ethiopia at a Critical Juncture: Reflections on a U.S. Congressional Briefing. Read more.
https://borkena.com/2026/03/04/ethiopia-at-a-critical-juncture-reflections-on-a-u-s-congressional-briefing/#Ethiopia#OrthodoxChristian#USCongress#Briefing
⚡️Briefing by Russian Defence Ministry
▫️The Armed Forces of the Russian Federation continue the special military operation in Ukraine.
💥High-precision air-based missiles have destroyed 2 AFU command posts, 1 electronic warfare station near Pyatikhatka in Kharkov region, 1Tochka-U missile launcher and 1 Uragan multiple rocket launcher near Barvenkovo in Kharkov region.
✈️💥Operational-tactical, army and unmanned aviation have hit 57 areas of AFU manpower and military equipment concentration. 3 command posts, 1 Buk-M1 anti-aircraft missile system near Rechka, Sumy region, as well as 1 repair and recovery point of AFU armoured vehicles near Kharkov have been destroyed.
▫️The attacks have resulted in the elimination of more than 280 nationalists, 2 ammunition depots near Razdolovka in Donetsk People's Republic, 5 tanks and other armoured combat vehicles, 6 field artillery mounts and 11 special vehicles.
💥Russian air defence means have shot down 1Su-25 aircraft of Ukrainian Air Force near Mazanovka, Kharkov region.
▫️Also, 7 Ukrainian unmanned aerial vehicles have been shot down near Tomina Balka, Sukhoi Stavok in Kherson region, Bolshiye Prokhody, Chistovodovka, Malaya Kamyshevakha, Kamenka in Kharkov region, and Zolotoe in Lugansk People's Republic.
▫️Additionally, 1 Tochka-U ballistic missile has been intercepted near Stakhanov in Lugansk People's Republic, as well as 21 Uragan multiple-launch rockets near Chernobaevka, Sukhoi Stavok in Kherson region, Kamenka, Dolgen'koe, Malye Prokhody in Kharkov region, Donetsk, Dokuchaevsk, Sukhaya Kamenka, Yasynuvataya in Donetsk People's Republic, Kopanki, Novozvanovka in Lugansk People's Republic.
💥Missile troops and artillery have hit 195 areas of manpower and military equipment concentration, 34 command posts and 42 firing positions of AFU artillery units.
💥Missile troops and artillery have destroyed more than 200 nationalists, 1 electronic warfare station, 3 ammunition depots, 6 tanks and other armoured combat vehicles, 1 Grad multiple rocket launcher, 4 field artillery guns, 18 special vehicles and 2 UAV control points near Zhovtnevoe and Kul'bakino in Nikolayev region.
📊In total, 204 Ukrainian airplanes and 131 helicopters, 1,218 unmanned aerial vehicles, 340 anti-aircraft missile systems, 3,569 tanks and other armored combat vehicles, 526 multiple launch rocket systems, 1,968 field artillery and mortars, as well as 3,647 units of special military vehicles were destroyed during the operation.
#MoD#Russia#Ukraine#Briefing
@mod_russia_en