Haskell - функциональное программирование

Jan 21, 2007 18:20

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


Говорят, что он похож чем-то на такие языки, как Lisp, Prolog, Refal, Scheme... Не знаю, как насчёт других, но он и вправду напоминает Prolog и Refal, которые я тоже немного знаю. Напоминает тем, что совершенно не похож на традиционные императивные языки (те, в которых мы действуем, давая компьютеру какие-то инструкции): Java, C++, Pascal и другие.

Как, возможно, самый показательный пример функционального языка, Haskell оперирует функциями: всё его конструкции - это функции. Указаний компьютеру нет, есть только вычисление одних функций через другие.
Кроме того, Haskell использует так называемые ленивые вычисления, при которых он вычисляет значение чего-либо только тогда, когда это значение реально понадобится. Это бывает полезно в ряде ситуаций.

Haskell показался мне несколько запутанным языком (как Prolog и Refal) и сложным для обучения, но при этом весьма показательно мощным в некоторых ситуациях. Вот, к примеру, быстрая сортировка массива (quicksort) на языке Haskell:

quicksort :: Ord a => [a] -> [a]
quicksort [] = []
quicksort (x:xs) = quicksort [y | y <- xs, y <= x] ++
[x] ++ quicksort [y | y <- xs, y > x]

И это всё! Впечатляет, не правда ли? При подготовке к зачёту я решал ряд учебных задач и все они могут быть решены очень элегатным способом.

Моё мнение таково. Хотя Haskell использовался какой-то компанией (Ericsson, что ли?) для разработки крупной системы и хотя имеется даже разрабатываемый фанатами 3D-шутер на Haskell'е, - я бы не стал писать что-либо на этом языке: он мне не кажется достаточно понятным, хотя и весьма лаконичен.

А вот в познавательных целях посмотреть на Haskell очень даже можно. У него есть немало инструментов для поразительно элегантных решений некоторых классических задач. Так что рекомендую, если нечем заняться ;)


Некоторые ссылки о Haskell:
  • http://www.haskell.org - официальный сайт Haskell.
  • http://www.haskell.ru/ - «Язык и библиотеки Haskell 98». На этом сайте только мануал на русском языке.
  • http://www.msiu.ru/~roganova/6sem_FP_2003-2004/main.ps - Н. А. Роганова. «Курс по функциональному программированию». Очень хороший учебник в формате PS.
  • http://alenacpp.blogspot.com/2005/12/3d-haskell.html - ссылка на 3D-шутер на Haskell'е. Для того, чтобы скомпилировать и запустить его, требуется немало повозиться, поэтому я ещё не успел посмотреть на него, но обязательно это сделаю. Особенно хочется заглянуть в исходники ;)

программирование

Previous post Next post
Up