Haskell – это прекрасно, но…

Правда, я не понимаю как я мог заниматься разработкой в течении 18 лет и не удосужиться прочитать хотя бы одной книги по Haskell и даже не написать простенького “Hello world!” на этом изумительном языке. Наверное, меня всё время так или иначе отпугивали разные слухи и истории на тему того, какой это дико сложный и непойми-нахрена-нужный язык. Не иначе!

К счастью у меня, с одной стороны, нашлось довольно большое количество свободного времени для изучения чего-то совершенно не нужного в повседневной работе, а с другой стороны, мне посоветовали несколько книг по Haskell в рамках внезапно разросшейся дискуссии об этом языке на Facebook и пусть ни одна из них мне не подошла, но начало было положено. Проблема с книгами собственно в том, что имея за плечами изрядный опыт программирования, большинство из них выглядят невероятно скучными. Ну зачем долго и в мельчайших деталях обсуждать что такое let или сопоставление с образцом? Ясно же, что Haskell не будет для кого-то первым языком и у читателя уже есть что-то за плечами для того, что бы провести аналогии и понять о чем идет речь с полуслова. К моей радости я наткнулся на What I wish I Knew, которая отвечает на изрядное количество прикладных вопросов относительно языка и наиболее распространенных паттернов использования и мне где-то я разыскал рекомендацию Get Programming with Haskell в которой кратко и по делу рассматривают основные концепции языка. Сначала мне эта книга сильно не понравилась, но оказалось что нужно просто пропустить/пролистать первые две главы и всё будет просто великолепно.

В процессе чтения и написания разных Hello World  так же был дико интересен вопрос, как так получилось, что такой замечательный язык коммерческая разработка фактически обошла стороной? Да, я знаю что есть Standard Chartered с самой большой кодовой базой на Haskell в мире и они периодически рассказывают о том, насколько этот язык прекрасен (например так или вот так), но это именно что исключение, а не стандартная ситуация. Почему по рейтингу того же TIOBE Haskell обгоняют даже D с LISP, хотя казалось бы, стюардесс же вроде закопали, верно? Ответ оказался очевиден, но очень неприятен… документация к библиотекам Haskell не просто плохая, она ужасная, если смотреть с точки зрения коммерческой разработки! Можно взять любую базовую функцию наугад, например fold (что может быть более базовое в функциональном программировании, правда?) и попытаться прочесть документацию из Hackage… не знаю у кого как, но у меня возникает ощущение, что этот текст был написан для “посвященных” в некое таинство, но никак не для желающих начать писать и быстро войти в тему. Куда в конце концов пропал простой пример использования этой функции?! Отягощает ситуацию то, что это хорошая документация, обычно либо хуже, либо вообще ничего нет. Так же у языка довольно долгая история и в какой-то степени тяжелая наследственность в виде подхода к дизайну языка через математику, что плохо согласуется с коммерческой разработкой.

В итоге я немного в смятении. С одной стороны, прекрасный и удобный язык, замечательно подходит для практически любой задачи, где скорость не очень важна, да и то, если верить длинномеру от Benchmarks Game, то скорость на уровне Go и явно выше Python2/3. С другой стороны, если с документаций всё так плохо, то ситуация с востребованностью языка явно не улучшится ни сейчас, ни в отдаленном будущем, что очень грустно. При наличии действительно высококлассной команды такой язык был бы очень удачным выбором для многих проектов включая те, над которыми я сейчас работаю, но где-же такую команду найти и сколько будет стоить работодателю её поддерживать? Создается ощущение что ведение проектов на Haskell может быть под силу только компаниям с фактически неистощимыми ресурсами типа S.Ch.

Так же мне стало казаться, что Rust – это Haskell для обычных программистов. Пусть и Rust, в целом, куда страшнее внешне чем Haskell, но парадигмы и подходы вызывают ощущение дежавю. Наигравшись в доволь я в итоге решил, что для меня это первый и последний эксперимент с Haskell, так как “слона я точно не продам”. Но было познавательно и в очередной раз заставило подумать о том, что, когда нибудь, я может и гляну на Rust более плотно

3 Comments Haskell – это прекрасно, но…

  1. NN

    Проблем там немало .Как минимум в некоторых местах нужно ломать мозги:)
    Поэтому и с Rust тоже нелегко.
    Нередко читаешь о том как люди борются с ленивостью потому что иначе тормозит.
    Вот был бы синтаксис для комонад так бы можно было писать в ООП стиле, тогда получилось быбподавать в красивой упаковке: http://www.haskellforall.com/2013/02/you-could-have-invented-comonads.html

    На самом деле язык это малая часть экосистемы , поэтому даже языки вроде Go или Ruby могут хорошохпреуспеть.

    Reply
    1. Alexander Stavonin

      У меня сложилось ощущение, что экосистема Haskell довольно развитая. Он много кому интересен, но мало кто решается затащить его в боевой проект и это совершенно оправданно.

      Reply

Leave a Reply