Шаг 14.
Основы языка Haskell. Основные типы данных, операции, способы определения функций. Теоретические сведения

    На этом шаге мы приведем общую характеристику этого языка.

    Математические основы функционального программирования были заложены в 20-х годах XX века после разработки таких мощных вычислительных формализмов, как комбинаторная логика и  λ-исчисление. Впоследствии λ-исчисление и теория комбинаторов стали базисом всех разработанных функциональных языков.

    Парадигма функционального программирования (к которой относится язык Haskell) основана на математическом понятии "функция", что позволяет эффективно создавать программы, предназначенные для обработки символов.

Определение.
Функциональное программирование - это раздел дискретной математики и парадигма программирования, в которой процесс вычисления трактуется как вычисление значения функции в математическом понимании последних (в отличие от функций как подпрограмм в процедурном программировании).

    Противопоставляется парадигме императивного программирования, которая описывает процесс вычислений как процесс изменения состояний. Функциональное программирование не предполагает изменяемости данных (в отличие от императивного, где одной из базовых концепций является переменная).


    Замечание (важное). Термин "парадигма" означает набор теорий, стандартов и методов, которые совместно представляют собой способ организации знаний - иными словами, способ видения некоторого фрагмента мира. В программировании этот термин используется для определения  модели вычислений, т.е. способа структурирования информации, организации вычислений и данных.

    Когда вы пишете программу на функциональном языке программирования, вы вначале создаёте собственный язык (набор функций), а затем с его помощью формулируете исходную задачу. Более точно, вы "подгоняете" язык функционального программирования до тех пор, пока он не станет совпадать с языком, на котором задача формулируется легко.

    С помощью функционального программирования решаются следующие задачи, традиционные для направления информатики, которое называется "искусственный интеллект":

    Язык Haskell (названный в честь логика Хаскелла Б. Карри, одного из основоположников функционального программирования) появился на основе первого функционального языка LISP, разработанного Дж.Маккарти в начале 60-х годов.

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

    Высокий уровень абстракций, обеспечиваемый Haskell для решения задач, является непревзойдённым (на 2009 г.).


   Замечания.
  1. Программирование - это раздел дискретной математики. Более точно, программирование - это "действующая" математика, т.е. математика, которая может интерпретироваться автоматами.
  2. Язык Haskell тесно связан с языком программирования Curry, являющимся универсальным языком программирования, в котором соединены две парадигмы декларативного программирования - функциональная и логическая. Более того, в этом языке использованы наиболее важные операционные принципы подобных декларативных языков.

    Язык Curry соединяет в себе возможности функционального программирования (вложенные выражения, функции высших порядков, ленивые вычисления), логического программирования (логические переменные, частичные структуры данных, встроенная система поиска) и методов программирования для параллельных систем (параллельное вычисление выражений с синхронизацией по логическим переменным). Более того, язык Curry предоставляет дополнительные механизмы по сравнению с чистыми языками программирования:

    Приведём базовые характеристики языка Curry:

    На следующем шаге мы поговорим немного об общей культуре программирования.




Предыдущий шаг Содержание Следующий шаг