Haskell vs Lisp незамутненным взглядом

Что в хаскеле, что в лиспе, что в ФП еще недавно я совсем ничего не знал. Начал их освоение практически с нуля. Поэтому могу сравнить их как человек со стороны, а не ярый приверженник того или иного языка. Параллельно читаю SICP и Learn You a Haskell.

SICP, надо сказать - это действительно революция в голове программиста. Каждый человек, который хочет стать настоящим программистом, а не просто всю жизнь лабать плохонький код, как он научился по туториалу "Изучи язык XX за 10 минут", обязан прочитать эту книгу. Не знаю, есть ли у нас ВУЗ, где учат по этой книге, но если есть, то идти на программиста надо только туда. В качестве интригующей затравки скажу, что оттуда я узнал, что граница между данными и функциями весьма размыта. Замечу, для тех кто не читал, что в этой книге учат программированию на примере лиспа.

Learn You a Haskell - это даже не книга, а серия онлайн статей, в которых автор в живой и увлекательной манере рассказывает основы языка haskell. Статьи приправлены великолепными иллюстрациями и не менее ярким юмором. Читать их - сплошное удовольствие.

Теперь собственно к самим языкам. Не буду повторять все то, что без труда можно найти про сравнение их в Интернете. Добавлю к этому, лучше, отсебятины. Для меня, как человека, изучающего одновременно и саму парадигму функционального программирования и новые языки программирования, более важно насколько легко изучать и то и другое. Лисп в этом плане отличается минимальным синтаксисом, хаскель напротив - изобилует специальными символами, синтактическим сахаром, без точного знания смысла которых, понять программу невозможно.

В связи с простотой своего синтаксиса Лисп поражает сложностью программ, которые можно на нем реализовывать. Он похож на музыку - всего 8 нот и огромное количество прекрасных произведений.

Хаскель, напротив, напоминает математический анализ - куча специальных символов. Зато программы похожи на доказательства теорем, где в паре десятков символов зашифровано полчаса речи автора.

Исходя из этого, даже не принимая во внимание остальные доводы, мне кажется, что Лисп больше подходит для изучения ФП, так как позволяет сконцентрироваться на идеях, а хаскель - для "промышленного производства", так как позволяет писать очень четкий, сжатый, но в то же время понятный код.

Хотя я еще только начал изучать эти материи, но я уже вижу мощь и красоту языков программирования высшего порядка. Правду говорят - изучив их, писать на всем остальном может заставить разве что большая нужда. Для императивного программиста надо перестроить способ мышления, чтобы стать функциональным программистом, но черт возьми, это приятный процесс :)

2 Комментарии:

  1. Вот, я тоже одновременно изучаю и парадигму, и языки, и тоже читаю всё параллельно. И тоже с огромным удовольствием!

    Однако читая SICP, не могу отделаться от ощущения, что Scheme — ассемблер :-) Подсчёт скобок, префиксная арифметика, отсутствие оператора для композиции функций и другие «мелочи» — напрягают.

    ОтветитьУдалить
  2. Зато, когда пишешь программу на лиспе тебя ничто не отвлекат от твоей задачи, ты думаешь только о ней, а не о том, как бы красивее написать код. Это как полноэкранный режим, о котором ты недавно писал ;)

    И меня поражает мощь нескольких простых конструкций, с помощью которых можно решать задачи невероятной сложности.

    А скобки... их можно и полюбить :)

    А в хаскеле мне доставляет наслаждение эстетическая красота исходного кода программ :)

    ОтветитьУдалить