На этом шаге мы приведем общую характеристику этого языка.
Математические основы функционального программирования были заложены в 20-х годах XX века после разработки таких мощных вычислительных формализмов, как комбинаторная логика и λ-исчисление. Впоследствии λ-исчисление и теория комбинаторов стали базисом всех разработанных функциональных языков.
Парадигма функционального программирования (к которой относится язык Haskell) основана на математическом понятии "функция", что позволяет эффективно создавать программы, предназначенные для обработки символов.
Противопоставляется парадигме императивного программирования, которая описывает процесс вычислений как процесс изменения состояний. Функциональное программирование не предполагает изменяемости данных (в отличие от императивного, где одной из базовых концепций является переменная).
Когда вы пишете программу на функциональном языке программирования, вы вначале создаёте собственный язык (набор функций), а затем с его помощью формулируете исходную задачу. Более точно, вы "подгоняете" язык функционального программирования до тех пор, пока он не станет совпадать с языком, на котором задача формулируется легко.
С помощью функционального программирования решаются следующие задачи, традиционные для направления информатики, которое называется "искусственный интеллект":
Язык Haskell (названный в честь логика Хаскелла Б. Карри, одного из основоположников функционального программирования) появился на основе первого функционального языка LISP, разработанного Дж.Маккарти в начале 60-х годов.
Haskell - это чисто функциональный нестрогий язык программирования, изначально разработанный для того, чтобы служить открытым стандартом для современных языков функционального программирования.
Высокий уровень абстракций, обеспечиваемый Haskell для решения задач, является непревзойдённым (на 2009 г.).
Язык Curry соединяет в себе возможности функционального программирования (вложенные выражения, функции высших порядков, ленивые вычисления), логического программирования (логические переменные, частичные структуры данных, встроенная система поиска) и методов программирования для параллельных систем (параллельное вычисление выражений с синхронизацией по логическим переменным). Более того, язык Curry предоставляет дополнительные механизмы по сравнению с чистыми языками программирования:
Приведём базовые характеристики языка Curry:
На следующем шаге мы поговорим немного об общей культуре программирования.