Почему я люблю языки с сильной системой типов, проверяемой статическим анализом кода — хорошо написанная программа является своей собственной спецификацией и позволяет выражать через язык программирования законы существования предметной области.
Когда-то давно я писал на ActionScript. Там была система типов, но вот десериализация JSON'ов по-умолчанию была в какой-то общий Object, к полям которого нужно было обращаться ["по_строковому_имени"]. В один момент мне потребовалось написать что-то на C#, который я совсем не знал, я стал гуглить, как десериализовать JSON, и с удивлением обнаружил кучу советов заранее объявить класс со всеми нужными полями и десериализовать в него.
"Какой ужас!", — подумал я тогда, — "Это же дико неудобно! А если я не знаю полей JSON? А если их много? Отвратительный язык!"
Теперь то я прекрасно понимаю, что JSON это контракт, и что правильная десериализация только такая и должна быть, и что в хорошем API в одном поле никогда не бывает данных принципиально разных типов, и так далее.
Нет, если вы набиваете вечерами пет-проект или сидите бессонную ночь на хакатоне, нет ничего плохого в том, чтобы взять простой язык с динамическими типами вроде JavaScript или Python, не требующий описывать данные. Но вот в энтерпрайзе, особенно когда над одним проектом работает много людей (а бывает это очень часто) — хорошее использование системы типов убережёт разработчиков от огромного количества ошибок, будет бить их по рукам, когда они пытаются сделать что-то не то, и будет подсказывать, когда они не уверены в чём-то.
С помощью статической типизации можно на уровне кода обозначить правила, по которым ведёт себя предметная область вашей программы в реальном мире. Разработчику не только будет сложно их нарушить, но он ещё и станет узнавать какие-то вещи, которые мог не знать раньше.
Например, если мы делаем медицинскую CRM, и больница заводит новых пациентов только тогда, когда знает их группу крови, мы можем объявить тип "Пациент" (или, если точнее, "Карта пациента") и запретить создавать экземпляры этого типа, не передав в конструктор группу крови (которая, в свою очередь, тоже является типом, вероятнее всего ValueObject'ом). Если новый программист пришёл в проект, он, во-первых, не сможет записать в БД некорректную карту пациента. Понятно, мы не учитываем случаи, когда новый программист переделывает модели предметной области — это будет хорошо видно на кодревью. А, во-вторых, даже если ему никто не сказал, что пациенты должны быть с группой крови, он узнает это из кода. И уже будет понимать, что в тех процессах реальной жизни, которые он описывает кодом, карта пациента создаётся только при наличии группы крови. А, значит, нужно искать какой-то способ сначала эту группу крови получить, и только потом создавать карту. Программирование моделирует реальный процесс.
В настоящей работе даже на языках с типами, конечно, без должного контроля можно написать что угодно. Нужна управленческая воля, компетентность руководства, понимание опасности техдолга, в идеале отдельные должности для архитекторов, опытные лиды и старшие разработчики. Но когда всё это есть, можно отсекать много проблем ещё на старте и проще погружать новичков.
#dev
https://youtu.be/GLKhLHdh86E
Неожиданно обнаружил, что мое второе видеопутешествие по Байкало-Амурской магистрали было заблокировано на территории России. Оказывается правообладатель музыки запретил ее для прослушивания; никакого дохода со своих видео я не получаю, музыку использую из-за ее настроения и ощущения «красиво, это то, что надо!».
Населению России, запертому наедине с президентом-безумцем теперь даже непозволительно слушать определенную музыку.
Я переозвучил вторую часть и добавил фоном музыку из своего подкаста. В комментариях под видео собирались очень душевные истории, в которых люди рассказывают про свою жизнь, молодость, некая Людмила Северова написала красивый комментарий: «Жила, работала, служила в Февральске».
Теперь видео снова доступно для зрителей из России, я не мог оставить этих людей без воспоминаний.
#bam
Уникальный контент только для подписчиков моего телеграм-канала!
Я собрал свои аудио записи, которые записывал на телефон в дороге по БАМу.
Плейлист таков:
1. В купе с японцами.
2. Носитель сумок из Хабаровска
3. Соседка по купе пытается говорить с иностранными соседями.
4. Музей музыкальных аппаратов в Хабаровске.
5. Мужики на БАМе обсуждают бурение и беседы за жизнь.
6. Проводница отчитывает мужа.
#bam
Ехал я через всю Россию не в одиночестве. Рядом со мной была Алена, и у нее в инстаграме получилась очень интересная и живая версия этого путешествия.
Можно даже сказать бэкстейдж всей нашей поездки.
Поезда
Байкал
Дальний Восток
Хабаровск
Комсомольск-на-Амуре
Биробиджан
#bam
Про БАМ и свой путь через всю Россию я могу писать еще долго, да и фотографий у меня в запасе десятки, сотни, тысячи! Но думаю пора остановиться и полностью посвятить себя новым творческим работам. Поэтому пока завершу историю про БАМ здесь вот этой фотографией избы на просторах Пермского края.
Почти вернулся в свою обычную форму, поэтому начинаю активнее браться за дело. Задачу я поставил перед собой сложную, но от этого ещё интереснее, видео будет длинное. Надеюсь, закончу к концу месяца, а потом и возьмусь за новый выпуск подкаста. Так что делаю я это все неспешно и нерегулярно, к тому же в свободное от основной работы время. Но не очень переживаю по этому поводу, ведь главная причина продолжать: я просто не могу это не делать. #bam
Горный хребет Кодар можно увидеть, когда поезд спускается с перевала. Его вид вызвал во мне очень непонятные чувства: из-за того, что он резко вздымается вверх, кажется — это стена, ограждающая нас неизвестно от чего или кого. Еще и туман, нависший над его пиками, добавил мистической атмосферы. Где-то в его дебрях заключенные ГУЛАГа добывали уран, хотя кто знает, что еще творилось или творится за этой горной стеной. #bam
Перевал Мурурин - самый высокогорный участок РЖД, 1323 метра над уровнем моря. Ощущения, когда поезд несется по нему, странные, то закладывает уши, то бросает в пот, не знаю с чем это связано: с перепадом высот или с эмоциональным перевозбуждением. В мае на склонах гор зима, и если в вагоне открыты окна, то начинает завывать лютый холод, думаю есть шанс при низкой облачности проехать на поезде сквозь облако. Эта горная гряда для нас стала границей не только двух регионов Сибири и Дальнего Востока, но и границей двух сезонов. Ехали мы из солнечной весны, а спустившись с гор, оказались в пасмурном дождливом пейзаже с затянутым серым небом.
P.S на стеле между двумя регионами есть один несуществующий: Читинская область исчезла в 2008 году, теперь это Забайкальский край. #bam
Станция Хани. Отправившись в путешествие по БАМу вы можете буквально на пару часов заглянуть в Якутию и прогуляться по одному из населенных пунктов этой огромной республики. Если бы на Якутию свалилась независимость в 1991 году, она бы стала 8 государством в мире по своему размеру, обойдя Аргентину и почти идя ноздря в ноздрю с Индией. Прогуляться полчаса по поселку Хани и купить сомнительные чипсы по завышенной цене - бесценно, чувствуешь, что гуляешь по владениям гигантского северного, даже арктического края. #bam
Больше ничего подобного не случалось. Очередной сосед был из их компании, но совершенно не пил, был задумчив и немногословен, даже рассказал, что впереди нас ждут настоящие впечатляющие виды, а тут на восточном БАМе тоска и тьма. Достал телефон и показал фотографии гор, добавив, что снимал из едущего поезда, открыв дверь на полном ходу. Мы попрощались в Тынде, он сказал что если бы мы остались в городе на день, показал бы его и позвал в гости.
На Западном БАМе и Транссибе нашими соседями были уже обычные люди, возвращающиеся домой от родных или наоборот едущие на такой вожделенный русский юг. Отец с детьми, его сын мог без остановки кричать: «Едем дальше!» (я чуть не сошел с ума)
Семейная пара, едущая из Благовещенска, взрослые, но очень любознательные, все вокруг меряли ценами на продукты и одежду. Гордо говорили, что у них побывать в Китае такая же банальщина, как зайти к соседу в огород.
Были и иностранцы, японская пара, у нас случилась огромная симпатия, было жалко покидать их, а они очень грустили, когда настал наш черед выходить. Они были нашими первыми попутчиками, из-за чего мы решили, что впереди нас будут ждать куча новых людей. Но таких запоминающихся как Кохей и Нотока больше не встретили, к сожалению забыли взять у них контакты, помню только, что они были из Осаки.
БАМ место суровое и люди, живущие там гармонично его дополняют. Это атмосфера уставших рабочих мужчин, хоть мы и ехали в купе, иногда в одиночестве, но на станциях видели как из плацкартных вагонов бегут толпы мужчин в соседние ларьки, скупая десятки литров пива. Кстати за все время стал свидетелем как сняли с поезда только одного дебошира, да и в целом люди в тех краях очень спокойные и родные, но уставшие, чувствуется, что их потребности и желания намного ниже среднестатистического жителя России, а тем более жителей Москвы и крупных городов. Покой да уют, да чтоб продукты были хорошие и денег хватало, это чувствуется во всем, забытые люди и края, но готовые радостно встретить новых гостей с большой земли. Даже пресс-карта не потребовалась, которую я брал на всякий случай. Добро пожаловать, странник, здесь рады всем. #bam