Почему я люблю языки с сильной системой типов, проверяемой статическим анализом кода — хорошо написанная программа является своей собственной спецификацией и позволяет выражать через язык программирования законы существования предметной области.
Когда-то давно я писал на ActionScript. Там была система типов, но вот десериализация JSON'ов по-умолчанию была в какой-то общий Object, к полям которого нужно было обращаться ["по_строковому_имени"]. В один момент мне потребовалось написать что-то на C#, который я совсем не знал, я стал гуглить, как десериализовать JSON, и с удивлением обнаружил кучу советов заранее объявить класс со всеми нужными полями и десериализовать в него.
"Какой ужас!", — подумал я тогда, — "Это же дико неудобно! А если я не знаю полей JSON? А если их много? Отвратительный язык!"
Теперь то я прекрасно понимаю, что JSON это контракт, и что правильная десериализация только такая и должна быть, и что в хорошем API в одном поле никогда не бывает данных принципиально разных типов, и так далее.
Нет, если вы набиваете вечерами пет-проект или сидите бессонную ночь на хакатоне, нет ничего плохого в том, чтобы взять простой язык с динамическими типами вроде JavaScript или Python, не требующий описывать данные. Но вот в энтерпрайзе, особенно когда над одним проектом работает много людей (а бывает это очень часто) — хорошее использование системы типов убережёт разработчиков от огромного количества ошибок, будет бить их по рукам, когда они пытаются сделать что-то не то, и будет подсказывать, когда они не уверены в чём-то.
С помощью статической типизации можно на уровне кода обозначить правила, по которым ведёт себя предметная область вашей программы в реальном мире. Разработчику не только будет сложно их нарушить, но он ещё и станет узнавать какие-то вещи, которые мог не знать раньше.
Например, если мы делаем медицинскую CRM, и больница заводит новых пациентов только тогда, когда знает их группу крови, мы можем объявить тип "Пациент" (или, если точнее, "Карта пациента") и запретить создавать экземпляры этого типа, не передав в конструктор группу крови (которая, в свою очередь, тоже является типом, вероятнее всего ValueObject'ом). Если новый программист пришёл в проект, он, во-первых, не сможет записать в БД некорректную карту пациента. Понятно, мы не учитываем случаи, когда новый программист переделывает модели предметной области — это будет хорошо видно на кодревью. А, во-вторых, даже если ему никто не сказал, что пациенты должны быть с группой крови, он узнает это из кода. И уже будет понимать, что в тех процессах реальной жизни, которые он описывает кодом, карта пациента создаётся только при наличии группы крови. А, значит, нужно искать какой-то способ сначала эту группу крови получить, и только потом создавать карту. Программирование моделирует реальный процесс.
В настоящей работе даже на языках с типами, конечно, без должного контроля можно написать что угодно. Нужна управленческая воля, компетентность руководства, понимание опасности техдолга, в идеале отдельные должности для архитекторов, опытные лиды и старшие разработчики. Но когда всё это есть, можно отсекать много проблем ещё на старте и проще погружать новичков.
#dev
#pulpnonfiction
«Я провел в тюрьме восемь дней. Позже, когда в Германии вышел первый перевод моей книги, издатель написал на обложке, что я сидел месяц; книга плохо продавалась, поэтому на следующей они написали, что я провел в камере три месяца; к выходу третьей книги я „сидел“ уже четыре месяца. Полагаю, если книги и дальше будут плохо продаваться, мне светит пожизненное». — Из интервью чилийского писателя Роберто Боланьо, одного из героев книги «Ночная смена».
#pulpnonfiction
Книга Джулии Шоу «Психология зла» (Альпина Паблишер, 2021) простенькая, но местами даже симпатичная. Это, скорее, «этика для начинающих», а не «что читать после Ханны Арендт». Правда, в 2019 году делать далеко идущие выводы из экспериментов Милгрэма и Зимбардо немного странно. Как и иллюстрировать эффектом Дженовезе рассказ о диффузии ответственности.
В главе о психологии группового мышления Шоу упоминает еще один классический эксперимент: в 1959 году Фестингер и Карлсмит исследовали в Стэнфорде когнитивный диссонанс (собственно, Фестингер является автором этого термина). Коротко можно описать эксперимент так: студентов заставили выполнять скучную работу, а потом попросили соврать следующим испытуемым (подставным), что работа интересная. Студентов разделили на три группы: контрольная группа никому не врала, вторым предложили за ложь один доллар, третьим — 20 долларов. А в конце студентов попросили оценить, насколько работа была интересной. В итоге самый мощный когнитивный диссонанс получили участники, вравшие за 1 доллар: «Неужели я такое говно за 1 доллар? Наверное, мне действительно понравилось». То есть люди скорректировали свои убеждения под поведение.
Бегло погуглив, я не нашла разоблачающих эксперимент статей на русском и английском. Правда, в эксперименте участвовало всего 70 студентов, из них десяток сыграли не по правилам. Интересно было бы его воспроизвести, ведь в отличие от того же Милгрэма или «третьей волны» он вполне этичен. Хотя, может мы сейчас все вместе и воспроизводим.
***
В целом, если вы в последние дни читаете недостаточно текстов про дегуманизацию, ранимый нарциссизм и гипотезу справедливого мира, то Джулия Шоу в своей книге кратко об этом расскажет.
#pulpnonfiction
Дочитала две книги — «За фасадом. 25 писем о Петербурге и его жителях» (Алексей Шишкин и Эля Новопашенна; Бомбора, 2020) и «Истории домов Петербурга, рассказанные их жителями» (Юлия Галкина, Максим Косьмин, Антон Акимов; Бомбора, 2019). Оценку дам в конце, а сейчас хочу написать про один общий мотив, который меня особенно тревожит в последние дни — каково это решиться покинуть свой дом. В «Историях…» эта тема, конечно, ярче выражена, потому что авторы пытались найти в выбранных домах семьи, непрерывно живущие в одном месте на протяжении нескольких поколений. И сыскать семью, которая жила бы в доме до 1917 года и продолжала бы жить до конца XX века, едва удается. Кто-то из жильцов исчезал явно, кто-то тихо, некоторым удавалось уехать, а некоторые — не успели. Жильцы, пережившие 1917 год исчезали в конце 1930-х. А затем война, блокада, эвакуация.
#pulpnonfiction
Продолжим тему. «Скандинавские мифы. От Тора и Локи до Толкина и Игры престолов» Кэролин Ларрингтон (МИФ, 2019; оригинал 2017). МИФу надо продавать эти две книги вместе в крафтовой коробке с мишурой и еще с чем-нибудь тематическим, не знаю, с заготовкой для топора, например.
Снова серийная книга (из недавнего в той же серии вышли «Славянские мифы» Александры Барковой), двести с небольшим страниц концентрированной информация про мифы, источники и артефакты. Мифы условно поделены на богов и героев.
Хотя про скандинавские мифы уже столько перечитано, в голове я могу удержать только топ-10 персонажей с их родственными связями и парой похождений. Чуть отвлечешься, а в тексте уже Хейдрек убивает брата Ангантюра (разумеется, как и было предсказано), а мать Хервёр даёт ему меч Тюрвинг в качестве прощального дара. Кто эти люди (и люди ли?), пустят ли их в Вальхаллу, на чей стороне они будут во время Рагнарёка? Но это и неважно.
#pulpnonfiction
Стив Эшби, Элисон Леонард «Викинги» (МИФ, 2021, перевод с англ. Ольги Быковой; оригинал — 2018 год) [у книги еще есть неприятный и ненужный подзаголовок «Тайны истории», брр]
В МИФе вышла вторая книга из серии Pocket Museum. Книги серии — иллюстрированные каталоги экспонатов со всего света с небольшими комментариями и человечками на полях (для масштаба).
Может показаться, что викинги — это сплошь разбойники и все предметы их культуры ворованные. Но это не так, в книге есть еще копролиты. На самом деле, поражает широта географии викингов, торговых и неторговых контактов — от Ньюфаундленда до Ближнего Востока.
Что интересного:
- крестик, который постепенно переходит в голову волка (и, можно сказать, молот Тора; что характерно, X век, Исландия);
- браслет с подвесками-масками (прям Пандора эпохи викингов);
- ведро Будды (хотя фраза «ведро принадлежало представителю элиты» звучит забавно, ведро действительно красивое, и человечек там в позе лотоса со свастикой, на самом деле, ирландского происхождения).
Цитата:
На рубеже веков беды, связанные с набегами викингов, вынудили короля Англии Этельреда II Нерешительного прибегнуть к радикальным мерам. В 1002 он издал эдикт, позволяющий убивать данов.
Не такой уж и нерешительный, геноцид даже устроил.
Кстати, только недавно в ГИМ закончился выставка, посвященная викингам, эта книга прекрасно ее дополняет. На выставке я узнала слово «умбон» — это бляха по центру щита, защищающая руку.
#pulpnonfiction
«Странная обезьяна. Куда делась шерсть и почему люди разного цвета» (Александр Соколов, Альпина нон-фикшн, 2020)
Два главных вопроса, на которые ищет ответы автор, удобно вынесены в подзаголовок, а сама книга поделена на две больших части: собственно, про шерсть и цвет. «Странная обезьяна» — это метаисследование, обзор гипотез и их статус в современной науке. Спойлер: однозначных ответов нет, даже темная кожа как защита от ультрафиолета не такой строгий факт, как считалось раньше, а с шерстью вообще всё сложно (мой фаворит — гипотеза неотении). Кстати, по ходу чтения необязательно конспектировать все гипотезы, автор их удобно собрал в табличках в конце разделов (просветительский опыт не пропьёшь). Вторая просветительская черта — подавать информацию в формате миф-опровержение (в таком формате полностью написана другая книга Соколова «Мифы об эволюции человека», которую тоже рекомендую, особенно новичкам в теме физической антропологии).
#pulpnonfiction
«Бумага: форма терпения в российских пределах» (Алексей Малахов, 2018, Медиарост) — очень краткая история российского бумагоделания с тысячей иллюстраций и странными эпиграфами.
Наличие популярной красочной книги об истории бумаги в России — это прекрасно. Но непонятно, зачем было делать такой большой замах: от петроглифов Хакасии до киндла. В итоге начало и конец книги получились конспективными и как будто для галочки. Главы про современное производство тоже нельзя назвать удачными. Я понимаю, что у книги есть спонсор, но зачем же таким казенным языком писать.
При этом у книги есть два больших плюса:
1) иллюстрации (представляете, найти почти тысячу иллюстраций с очищенными правами, да еще заказать серию иллюстраций у художника),
2) главы об истории бумажных фабрик в России (собственно о чем могла бы быть вся книга, но нет).
#pulpnonfiction
В МИФе вышла поистине рождественская книга — «Мастер шейков и "Маргариты". Коктейли для запойных читателей» Тима Федерле (запойных!). Это сборник авторских коктейлей и небольшого числа закусок, навеянных Ферделе литературными произведениями и их персонажами. Ирония, каламбуры, теплота к любимым книгам, всё как мы любим.
#pulpnonfiction
«Путеводитель по ВДНХ» (Павел Нефедов, 2014)
Проект ABC Design и Государственного музея архитектуры им. А.В. Щусева — идеальное сочетание, нет вопросов ни к содержанию, ни к изданию. Кроме того, благодаря участию музея, в книге много архивных фотографий. Путеводители — непростой жанр, но в этом случае рубрикация, карты, маршруты сделаны здорово. Что можно улучшить: 1) нет полного списка несохранившихся павильонов, только его часть, 2) в краткой справке о павильоне не хватает истории смены его профиля по годам.
Книга вышла к юбилею в 2014 году и изменения в облике ВДНХ с тех пор, конечно, есть. Но этот путеводитель в большей степени историко-архитектурный, нежели туристско-развлекательный, поэтому процентов 95 актуально. А если нужно расписание событий и время работы музеев (центр славянской письменности «Слово» — горячо рекомендую), то лучше скачать официальное приложение ВДНХ или покопаться на сайте: https://vdnh.ru/places/
#pulpnonfiction
Андрей Зорин «Жизнь Льва Толстого. Опыт прочтения» (НЛО, 2020, перевод с английского — Андрей Зорин).
«Жизнь Льва Толстого» — очень ясная и сфокусированная работа. Андрей Зорин на 250 страницах создает объемный портрет жизни писателя через его тексты: дневники, тайные дневники, письма, публицистика и, конечно, художественные произведения.
#pulpnonfiction
Уилл Сторр «Селфи. Почему мы зациклены на себе и как это на нас влияет» (Individuum, 2019)
на картинке плохо видно, но у книги зеркальная обложка — хорошее приобретение для домашней библиотеки, если любите интересную полиграфию