H значит Haskell: развеиваем мифы о языке программирования «для гениев»
На канале YouTube-блогера и разработчика АйтиБороды вышло интервью с адептом Haskell, Senior Haskell Developer и автором книг по этому языку Александром Граниным.
В интервью Александр развеял миф, что для программирования на Haskell нужно быть гуру матанализа, и рассказал, где используется язык с репутацией «академического».
Highload публикует главное из этого разговора.

Александр Гранин / LinkedIn
Что такое Haskell
Раньше Haskell был исключительно академическим языком. Он появился в 1990 году из желания сделать открытый язык в стиле семейства ML: есть С-подобные языки, LISP-подобные и ML-подобные; у LISP самый чистый синтаксис, ML — на втором месте.
Haskel должен был помочь людям изучать ленивость в языках программирования. Это стратегия, когда вычисления откладываются до тех пор, пока они не понадобятся.
Так как Haskell предназначался только для исследований, сначала в нем не было даже ввода/вывода. Но позже его расширили.
Сегодня, хотя все по-прежнему воспринимают Haskell как академический язык, он используется и в промышленной разработке. Но все равно сильно отличается от Java или C++.
Как выглядит код на Haskell
Код на Haskell — это не шаги, а цепочки выражений. Они связываются между собой монадами. Монада — математический термин, но его не нужно понимать, чтобы писать код на Haskell. В контексте этого языка каждая конкретная монада предназначена для какой-то функции: например, для ввода/вывода или отлова ошибок.
Вообще, у Haskell есть математическая сторона (лямбда-исчисления) и практическая. Но в первом разбираться не обязательно. Так же, как необязательно разбираться в монадах, чтобы их использовать: посмотрел, как по шаблону люди делают, и все.
Вычисление бесконечного списка чисел Фибоначчи за линейное время на Haskell и Java
Что пишут на Haskell
На Haskell пишут компиляторы для других языков и для самого Haskell, а еще банковский софт.
В финтехе Haskell используется потому, что это очень безопасный язык: у него отдельная группа концепций, которые как на уровне типов, так и на уровне значений хорошо между собой сочетаются. Так, например, в С++ есть фичи, которые плохо между собой сочетаются, и это может приводить к багам.
Другой безопасный язык, востребованный в финтехе — это COBOL. Но у COBOL-программистов другая задача: поддерживать старые мейнфреймы.
Также Haskell частично используется в блокчейн. Так, есть несколько проектов (например, Cardano), которые пишут на нем внешний язык для смарт-контрактов.
Как начать учить Haskell
На Windows Haskell работает, но «шатко-валко». На линуксоидных системах можно поставить компилятор GHC. Но если не хочется ставить Linux, можно зайти в онлайн-компилятор и там начать изучать синтаксис.
IDE для Haskell нет. Обычно используют плагины для продвинутых текстовых редакторов. Но функциональность, которую дают плагины, далека от того, что можно делать в IDE с Java, например.
Кстати, классический дебаггинг по шагам в Haskell тоже не сделаешь, потому что Haskell-код — это выражения, а не шаги. А с тем, что сверху накладывается ленивость, вызываться все может вообще вперемешку. Но можно пользоваться тестами 🙂
Первичный источник информации о Haskell — это официальный сайт. Разобраться в языке можно также с помощью книг:
- Денис Шевченко, «О Haskell по-человечески»
- Уилл Курт, «Программируй на Haskell»
- Миран Липовача, «Изучай Haskell во имя добра!»
- Vitaly Bragilevsky, ‘Haskell in Depth’ (русского перевода пока нет)
Книгу Мирана Липовача можно почитать на официальном сайте бесплатно (in english)
Вакансий на Haskell больше, чем желающих поработать. В свете пандемии, вакансии в основном мидловые и сеньорные, но джунов тоже берут. Главное требование: уметь писать код на Haskell и тесты к нему и корректно использовать монады. В остальном в требованиях к вакансиям стандартный набор типа понимания баз данных, форматы файлов и т.п.
Результаты ресерча от редакции Highload: на DOU вакансий для Haskell-разработчиков нет, но есть вакансии Scala, Rust или Erlang Developers с пониманием Haskell.
Скриншот части требований к вакансии Erlang Developer на DOU
В LinkedIn ситуация лучше — одна вакансия Haskell Engineer в Украине и 226 открытых предложений в ЕС. Например, разработчика на Haskell ищет польский офис Luxoft.
Но все равно эффективнее будет искать вакансии через Haskell-комьюнити: например, в русскоязычном телеграм-чате любителей языка.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: