Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Haskell язык программирования

Определение 1

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

Карри Хаскелль. Автор24 — интернет-биржа студенческих работ

Рисунок 1. Карри Хаскелль. Автор24 — интернет-биржа студенческих работ

История Haskell

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

Замечание 1

Ленивыми называются языки, в которых функции вызываются по мере их востребованности.

Miranda распространялся под коммерческой лицензией, поэтому в 1987 г. на конференции по развитию функциональных языков, проходившей в Портленде, было решено разработать свободный аналог этого языка, для чего был создан специальный комитет.

Haskell 1.0 увидел свет в 1990 г. К концу 1990-х гг. язык обрел необходимую стабильность, был оснащен стандартной библиотекой, обладал некоторыми перспективными экспериментальными особенностями. Стандарт языка под названием Haskell 98 был опубликован в начале 1999 г. и дополнен в 2003 г. Вскоре появился и эталонный компилятор - Glasgow Haskell Compiler (GHC). Актуальным на сегодняшний день является стандарт Haskel от 2010 г. с некоторыми принятыми позднее дополнениями. В настоящее время, помимо GHC, используется также The Utrecht Haskell Compiler (UHC), содержащий некоторые экспериментальные расширения.

«Haskell язык программирования» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти

Генеалогия Haskell. Автор24 — интернет-биржа студенческих работ

Рисунок 2. Генеалогия Haskell. Автор24 — интернет-биржа студенческих работ

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

Специфика Haskell

К отличительным особенностям Haskell относятся:

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

Как и у других современных языков программирования, у Haskell есть репозитории, из которых можно загружать библиотеки, расширяющие базовые возможности языка. Кроме того, инструментарий для разработки на Haskell оснащен собственной системой контроля версий Darcs и упаковщиком Cabal. Несмотря на некоторую экзотичность и сравнительно невысокую популярность, Haskell является языком общего применения и даже располагает собственными фреймворками для веб-разработки ( Yesod, Happstack, Snap).

Недостатки Haskell:

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

Программирование на Haskell

Основное понятие в Haskell — функция. Оно присутствует в описании большинства языков программирования, но в Haskell стремление выражать все сущности и процессы в виде функций возведено в ранг абсолюта. В нем нет даже переменных в привычном смысле этого слова. Например, в фрагменте

1 + (x + y) * 2 where x = 1; y = 2;

x и y являются не переменными, а возвращающими соответствующие числа функциями, правда, очень простыми.

Подобные выражения, где имеются левая и правая части, разделенный ключевым словом where, типичны для Haskell. В первой части производится вызов функции, во второй описываются передаваемые ей параметры, сами являющиеся функциями.

Типичная тестовая программа "Hello, World!" выглядит на Haskell следующим образом:

module Main where
main :: IO ()
main = putStrLn "Hello, World!"

Фрагмент кода на Haskell. Автор24 — интернет-биржа студенческих работ

Рисунок 3. Фрагмент кода на Haskell. Автор24 — интернет-биржа студенческих работ

Область применения Haskell

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

Изучение Haskell полезно в любом случае, поскольку способствует развитию эффективных навыков программирования и у разработчиков, пишущих на других языках.

Дата написания статьи: 04.05.2019
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot