Почему я люблю языки с сильной системой типов, проверяемой статическим анализом кода — хорошо написанная программа является своей собственной спецификацией и позволяет выражать через язык программирования законы существования предметной области.
Когда-то давно я писал на ActionScript. Там была система типов, но вот десериализация JSON'ов по-умолчанию была в какой-то общий Object, к полям которого нужно было обращаться ["по_строковому_имени"]. В один момент мне потребовалось написать что-то на C#, который я совсем не знал, я стал гуглить, как десериализовать JSON, и с удивлением обнаружил кучу советов заранее объявить класс со всеми нужными полями и десериализовать в него.
"Какой ужас!", — подумал я тогда, — "Это же дико неудобно! А если я не знаю полей JSON? А если их много? Отвратительный язык!"
Теперь то я прекрасно понимаю, что JSON это контракт, и что правильная десериализация только такая и должна быть, и что в хорошем API в одном поле никогда не бывает данных принципиально разных типов, и так далее.
Нет, если вы набиваете вечерами пет-проект или сидите бессонную ночь на хакатоне, нет ничего плохого в том, чтобы взять простой язык с динамическими типами вроде JavaScript или Python, не требующий описывать данные. Но вот в энтерпрайзе, особенно когда над одним проектом работает много людей (а бывает это очень часто) — хорошее использование системы типов убережёт разработчиков от огромного количества ошибок, будет бить их по рукам, когда они пытаются сделать что-то не то, и будет подсказывать, когда они не уверены в чём-то.
С помощью статической типизации можно на уровне кода обозначить правила, по которым ведёт себя предметная область вашей программы в реальном мире. Разработчику не только будет сложно их нарушить, но он ещё и станет узнавать какие-то вещи, которые мог не знать раньше.
Например, если мы делаем медицинскую CRM, и больница заводит новых пациентов только тогда, когда знает их группу крови, мы можем объявить тип "Пациент" (или, если точнее, "Карта пациента") и запретить создавать экземпляры этого типа, не передав в конструктор группу крови (которая, в свою очередь, тоже является типом, вероятнее всего ValueObject'ом). Если новый программист пришёл в проект, он, во-первых, не сможет записать в БД некорректную карту пациента. Понятно, мы не учитываем случаи, когда новый программист переделывает модели предметной области — это будет хорошо видно на кодревью. А, во-вторых, даже если ему никто не сказал, что пациенты должны быть с группой крови, он узнает это из кода. И уже будет понимать, что в тех процессах реальной жизни, которые он описывает кодом, карта пациента создаётся только при наличии группы крови. А, значит, нужно искать какой-то способ сначала эту группу крови получить, и только потом создавать карту. Программирование моделирует реальный процесс.
В настоящей работе даже на языках с типами, конечно, без должного контроля можно написать что угодно. Нужна управленческая воля, компетентность руководства, понимание опасности техдолга, в идеале отдельные должности для архитекторов, опытные лиды и старшие разработчики. Но когда всё это есть, можно отсекать много проблем ещё на старте и проще погружать новичков.
#dev
Шумит над вами желтая листва,
Друзья мои, — и порознь вы, и вместе,
А все-таки достаточно родства
И таинства — для горести и чести.
И празднества старинного черты,
Где радости нам выпало так много,
С годами точно светом налиты,
И верю я, что это вот — от Бога.
Пред утренним туманом этажи
Нам брезжили в застойные годины, —
Кто пил, как мы? — попробуй завяжи,
Когда не все ли, в общем-то, едино!
Кто выжил — цел, — но сколько вас в земле,
Друзья мои, — и с кем ни говорю я,
О вас — в толпе, в хандре, навеселе,
В беспамятстве оставленных — горюю.
И ветер налетающий, застыв,
Приветствую пред осенью свинцовой,
Немотствующий выстрадав мотив
Из лучших дней, приправленных перцовой.
Отшельничать мне, други, не впервой —
Впотьмах полынь в руках переминаю.
Седеющей качая головой,
Чтоб разом не сгустилась мгла ночная.
Владимир Алейников
#jugaat#poetry#aleynikov
В пальто обшарпанном,
изранен и упрям,
Не ты ли рощу видывал нагую,
Что листьев ждёт,
открытая ветрам,
А ночь ведёт,
подобно входу в храм,
Хранящий нашу веру дорогую.
Не укротить стремление уздой –
И если век,
что начат столь крылато,
Не упадёт падучею звездой,
Быть может,
ты поднимешься когда-то
Над рощей мартовской,
как месяц молодой.
Владимир Алейников
#jugaat#poetry#Aleynikov
Я побеждён самим собой.
Устал.
И небо угасает.
Пора уже, пора…
Постой!
Вгляделся вдаль — а там светает.
Свой крест всё тяжелей нести.
А память свод грехов листает.
Жизнь прожита, почти…
Почти!
Вперёд вгляжусь — а там светает.
Прошли и высохли дожди,
Снег падает и снова тает.
Казалось, темень впереди.
Но вот вгляжусь — а там светает!
Александр Володин
#jugaat#poetry#volodin
А между прочим, осень на дворе.
Ну что ж, я вижу это не впервые.
Скулит собака в мокрой конуре,
Залечивая раны боевые.
Бегут машины, мчатся напрямик
И вдруг с ухаба шлёпаются в лужу.
Когда, буксуя, воет грузовик,
Мне этот вой выматывает душу.
Кругом шумит холодная вода,
И всё кругом расплывчато и мглисто,
Незримый ветер, словно в невода,
Со всех сторон затягивает листья...
Раздался стук. Я выдернул засов.
Я рад обняться с верными друзьями.
Повеселились несколько часов,
Повеселились с грустными глазами.
Когда в сенях опять простились мы,
Я первый раз так явственно услышал,
Как о суровой близости зимы
Тяжёлый ливень жаловался крышам.
Прошла пора, когда в зелёный луг
Я отворял узорное оконце –
И все лучи, как сотни добрых рук,
Мне по утрам протягивало солнце...
Николай Рубцов
#jugaat#poetry#rubtsov
Очень больно
(по мотивам Аттилы Йожефа)
Когда душа
Во мраке мечется, шурша,
Как обезумевшая крыса,
Ищи в тот миг
Любви спасительный тайник,
Где от себя можно укрыться.
В огне любви
Сгорят злосчастия твои,
Все, что свербило и болело,
Но в том огне
С проклятой болью наравне,
Имей в виду, сгорит и тело.
И если ты
Платить не хочешь горькой мзды
И от любви бежишь в испуге
Тогда живи,
Как жалкий зверь, что акт любви
Легко справляет без подруги.
Пусть ты сожжен,
И все ж — хоть мать пытай ножем!
Покой души в любви и вере.
Но та, к кому
Я шел сквозь холод, грязь и тьму,
Передо мной закрыла двери.
И боль во мне
Звенит цикадой в тишине,
И я глушу ее подушкой,
Так сирота
С гримасой плача возле рта
Бренчит дурацкой погремушкой.
О есть ли путь,
Чтоб можно было как-нибудь
Избавить душу от смятенья?..
Я без стыда
Казнил бы тех, чья красота
Для окружающих смертельна!..
Мне ль, дикарю,
Носить пристойности кору,
Что именуется культурой?..
Я не хочу
Задаром жечь любви свечу
Перед божественною дурой!..
Дитя и мать
Вдвоем обязаны орать —
Всегда двоим при родах больно!
Во тьме дворов,
Рожая нищих и воров,
Вы, женщины, орите: больно!
В чаду пивных,
Стирая кровь с ножей хмельных,
Вы, мужики, орите: больно!
И вы, самцы,
Уныло тиская соски
Постылых баб, — орите: больно!
И вы, скопцы,
Под утро вешаясь с тоски
На галстуках, — орите: больно!
Ты, племя рыб,
С крючком в губе ори навзрыд,
Во все немое горло: больно!
Моя же боль
Сильней означенной любой,
Ее одной на всех довольно.
И тот из вас,
Кто ощутит ее хоть раз,
Узнает, что такое «больно»!
Ты, майский жук,
Что прянул точно под каблук,
Всем малым тельцем хрустни: больно! Ты, добрый пес,
Что угодил под паровоз,
Кровавой пастью взвизгни: больно! Пусть адский хор,
Растущий, как лавина с гор,
Ворвется грозно и разбойно
К ней в дом — и там,
Бродя за нею по пятам,
Орет ей в уши: очень больно!
И пусть она,
Разбита и оглушена,
Поймет среди орущей бойни,
Что не любви
Пришел просить я, весь в крови,
А лишь спасения от боли…
Леонид Филатов
#jugaat#poetry#filatov
Романс Скрипача
Тогда, когда любовей с нами нет,
тогда, когда от холода горбат,
достань из чемодана пистолет,
достань и заложи его в ломбард.
Купи на эти деньги патефон
и где-нибудь на свете потанцуй
(в затылке нарастает перезвон),
ах, ручку патефона поцелуй.
Да, слушайте совета Скрипача,
как следует стреляться сгоряча:
не в голову, а около плеча!
Живите только плача и крича!
На блюдечке я сердце понесу
и где-нибудь оставлю во дворе.
Друзья, ах, догадайтесь по лицу,
что сердца не отыщется в дыре,
проделанной на розовой груди,
и только патефоны впереди,
и только струны-струны, провода,
и только в горле красная вода.
Иосиф Бродский, 1961 г.
#jugaat#poetry#brodsky
Гонит ветер туч лохматых клочья,
снова наступили холода.
И опять мы расстаемся молча
так, как расстаются навсегда.
Ты стоишь и не глядишь вдогонку.
Я перехожу через мосток...
Ты жесток жестокостью ребенка
от непонимания жесток,
Может, ни день, может, ни год целый эта боль мне жизнь укоротит.
Если б знал ты подлинную цену
всех твоих молчаний и обид!
Ты бы позабыл про все другое,
ты схватил бы на руки меня,
Поднял бы и вынес бы из горя,
как людей выносят из огня.
Вероника Тушнова
#jugaat#poetry#tushnova
Благодарю за всё. За тишину.
За свет звезды, что спорит с темнотою.
Благодарю за сына, за жену.
За музыку блатную за стеною.
За то благодарю, что скверный гость,
я всё-таки довольно сносно встречен -
и для плаща в прихожей вбили гвоздь,
и целый мир взвалили мне на плечи.
Благодарю за детские стихи.
Не за вниманье вовсе, за терпенье.
За осень. За ненастье. За грехи.
За неземное это сожаленье.
За бога и за ангелов его.
За то, что сердце верит, разум знает.
Благодарю за то, что ничего
подобного на свете не бывает.
За всё, за всё. За то, что не могу,
чужое горе помня, жить красиво.
Я перед жизнью в тягостном долгу,
и только смерть щедра и молчалива.
За всё, за всё. За мутную зарю.
За хлеб. За соль. Тепло родного крова.
За то, что я вас всех благодарю,
за то, что вы не слышите ни слова.
Борис Рыжий
#jugaat#poetry#ryzhiy
Пока Земля еще вертится,
пока еще ярок свет,
Господи, дай же ты каждому,
чего у него нет:
мудрому дай голову,
трусливому дай коня,
дай счастливому денег…
И не забудь про меня.
Пока Земля еще вертится —
Господи, твоя власть! —
дай рвущемуся к власти
навластвоваться всласть,
дай передышку щедрому,
хоть до исхода дня.
Каину дай раскаяние…
И не забудь про меня.
Я знаю: ты все умеешь,
я верую в мудрость твою,
как верит солдат убитый,
что он проживает в раю,
как верит каждое ухо
тихим речам твоим,
как веруем и мы сами,
не ведая, что творим!
Господи мой Боже,
зеленоглазый мой!
Пока Земля еще вертится,
и это ей странно самой,
пока ей еще хватает
времени и огня,
дай же ты всем понемногу…
И не забудь про меня.
Булат Окуджава
#jugaat#poetry#Okudzhava
Не верь, что я забыл родные наши горы,
Густой, безоблачный, глубокий небосвод,
Твои задумчиво-мечтательные взоры
И бедный наш аул, и бедный наш народ.
Нет, друг мой, никогда! Чем тягостней изгнанье,
Чем дальше я от вас, чем бессердечней враг,
Тем слаще и милей мне грезится свиданье
Со всем, мне дорогим в родных моих горах.
Не бойся за меня!— Я не способен к мщенью,
Но злу противиться везде присуще мне,—
Не бойся!— я и здесь не дамся оболыценью
Красавиц, чуждых мне по крови и стране...
Люблю я целый мир, люблю людей, бесспорно,
Люблю беспомощных, обиженных, сирот,
Но больше всех люблю, чего скрывать позорно? —
Тебя, родной аул и бедный наш народ.
За вас отдам я жизнь... все помыслы и силы,—
Всего себя лишь вам я посвятить готов...
Вы так мне дороги, так бесконечно милы,
Что сил нет выразить, что высказать нет слов!..
Коста Хетагуров, 1896 г.
#jugaat#poetry#khetagurov