Вступление

Обреченность на успех и на неудачу

Этот учебник был обречён на неудачу ещё до того, как он был написан до конца. Начать стоит с того, что к тому моменту, как я пишу эти строчки, я программирую на хаскеле очень плохо. Как, впрочем, программирую в целом. Зачастую перед тем, как объяснять тему, мне придётся её самому изучать. Но это не реальная причина обречённости.

Реальная сторона вопроса — политическая. Сегодня 25 марта 2022 года, прошёл один месяц и один день с момента начала специальной операции по демилитариазации и денацификации на Украине. Если только я не попаду в параллельный мир, с заграничным наймом в России будут проблемы ещё минимум несколько месяцев, а из местных работодателей, которые готовы брать кого-то из хаскеллистов, я насчитал три компании, из которых только одна (Metalamp) нанимает хаскеллистов-джунов, но и она работала на заграницу и у ней найм приостановлен минимум до конца апреля.

Так что, с учетом того, что проекты внутри России делаются в основном либо на Java (банки), либо на питоне и голанге (все остальные), то смысла писать такие учебники у меня, кажется, и вовсе не должно быть: я даже сам рискую не устроиться на работу.

Тогда почему же этот учебник обречён на успех? Потому что, блин, цель у меня далека от того, чтобы кого-то выучить этим учебником. Моя цель — перестать депрессовать и начать делать хоть что-то полезное. Не для Вас, а для меня самого. Написав этот учебник и, по возможности, отработав технологии я приобрету чуть-чуть славы в обществе, которую, возможно, получится сконвертировать во что-то полезное (не доллары и не евро! Только рубль, только нефть, газ, и электричество, только хардкор).

Отсюда следует, что учебник вроде как должен быть некоммерческим... А вот нет. Или да. Или нет. Это уж мне решать. Как и то, будет ли он вообще дописан до конца, а не оборвётся ли на полуслове, как учебник моего тезки Дениса Шевченко.

К сожалению, текущие учебники по хаскелю мне не подошли — за исключением книги "О haskell по человечески" Д. Шевченко, но она так и не была дописана. Нет, проблема даже не в том, что по этим талмудам нельзя чему-то научиться. Научиться можно, они хорошие, но очень желательно при этом попутно изучать какой-нибудь нормальный нефункциональный язык программирования… Простите, но тогда какой смысл вообще изучать хаскель? Похвастаться? Развлечься? Простите, если бы я действительно хотел развлечься, я бы прошёл Ведьмак 3 на плохую концовку.

На самом деле есть несколько проблем:

  1. Они не учат, как моделировать с помощью хаскеля реальный мир. То есть, собственно говоря, они не учат программированию. Моё основное затруднение — я вроде понял, что такое функции, но при попытке написать банальный веб-сервер у меня уже нихрена не получалось сделать.

  2. Они не учат пробивать входной когнитивный барьер, который, собственно говоря, мешает делать на хаскеле что-то полезное.

  3. У всех без исключения учебников по хаскелю есть фатальный недостаток — их делал не я.

  4. Они просто скучные, и я уже к пятому-шестому дню терял всякую мотивацию к их изучению. А пересиливать себя, поверьте, путь в никуда.

И ещё одно качественное отличие. Обычно такие учебники программирования аполитичны. Мой — не будет таким.

Принцип китайских романов

Эта книга делается по принципу, по которому наши братья-китайцы делают романы (новеллы) про культивацию. Иными словами, здесь будет много слов, но плотность материала будет низкая. Много питательной воды — а, как известно, человек на 80% состоит из воды.

А вот то, что современные китайские фантастические романы поголовно не дружат с логикой — миф. А вот от гуглоперевода они страдают едва ли не поголовно, но тут уж сложно кому-то предъявить претензии.

Как вы думаете, начнём мы с синтаксиса, верно? Нет. Начнём мы со вселенского секрета суперуспешного программиста (сарказм).

Мой перевод The Offspring — A Lot Like Me:

Так что же ты чувствуешь?
Когда у тебя есть всё?
Так как ты живёшь?
Не имея ничего.

Где ты бежишь?
К чему ты придёшь?
Ища только ложь,
Сколько боли найдёшь?

И дождь пришёл ко мне,
И мир в моей голове
Молится о солнце,
Но я не могу подняться с постели.

Как ты мог принять мечты?
Не оглядываясь назад?
Как это может работать?
Оно же полностью сломано?

Так что же ты чувствуешь?
(И не удивляешься, что сердце и разум вновь победили)
Так что же ты чувствуешь?
(И я удивляюсь как это стало последствием противоречия)

И дождь пришёл ко мне,
И мир в моей голове
Молится о солнце,
Но я не могу подняться с постели.

Жаждешь? Ты получил это.
Ты сожалеешь, что ты приобрёл, ты избегаешь
Жаждешь? Ты получил это.
Ты сожалеешь, что ты приобрёл, ты не можешь скрыться.
Скажи мне, что ты видишь?
Поскольку ты выглядишь так же как я.
(Ты выглядишь так же как я).