FUNCTIONAL PROGRAMMING LANGUAGE HASKELL




П. С. Петров

ФУНКЦИОНАЛЬНЫЙ ЯЗЫК ПРОГРАММИРОВАНИЯ HASKELL

История возникновения, характерные особенности, свойства, перспективы развития. Сравнение с языком C.

Haskell, функциональный язык программирования, функция, «ленивые» вычисления, чистый код, модульность.

P. S. Petrov

FUNCTIONAL PROGRAMMING LANGUAGE HASKELL

History of occurrence, characteristics, properties and development prospects. Comparison with in C.

Haskell, a functional programming language, function, "lazy" computing, clean code, modularity.

История программирования включает в себя следующие важнейшие вехи становления этой науки. В 1940-х годах появились первый цифровые компьютеры, которые управлялись пере­ключением множества тумблеров, проводов и кнопок. Следующим этапом эволюции про­граммирования считается создание ассемблерных языков, основанных на машинных кодах. Такой способ не был общедоступным, в силу своей сложности и громоздкости. Позднее по­явились императивные языки типа Бейсик, Паскаль, Си. Они были основаны на последова­тельном исполнении команд – алгоритме действий.

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

Прародителем всех функциональных языков был, созданный в 1958г, язык Лисп. К восьмидесятым годам 20 века было разработано множество функциональных языков, одним из которых был Miranda, существенно повлиявший на создание языка Haskell, на котором я и хочу остановиться подробнее. Язык получил название в честь Haskell Brooks Curry, чья работа в математической логике создала основу функциональных языков. Haskell, созданный в 1990г командой ученых в качестве экспериментального языка, в настоящее время по данным сайта Github занимает 23-ю позицию в рейтинге по популярности среди языков программирования. В 2009г создана последняя стабильная версия Haskell 2010. В тот же год была сформирована единая концепция дистрибутива Haskell Platform. В настоящее время Haskell Platform является рекомендованным дистрибутивом для программных разработчиков. Созданы готовые сборки Haskell Platform которые доступны для следующих операционных систем: Windows, MacOS X, Linux.

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

В Haskell используются «ленивые» вычисления. «Ленивым» называется такое вычисление, которое откладывается до тех пор, пока не понадобится результат этого вычисления. За счёт этого оптимизируются вычислительные процессы, сокращается время на выполнение операций. По сути это иной способ восприятия. Код, который представляет собой бесконечный цикл, потребляет огромные объемы памяти на простых языках программирования, в языке Haskell всё управляется элементарными инструментами.

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

Поскольку в Haskell значительно меньше грязного кода, мы получаем гораздо больше уверенности в том, что наше программное обеспечение является стабильным.

В языке Haskell осуществляется автоматическое управление памятью. При программировании в других языках, например С, разработчику необходимо заранее думать о том, как, где и когда необходимо выделить определённое количество ячеек памяти. В Haskell разработчик избавляется от необходимости подобных действий.

Haskell позволяет быстро создать надёжные, корректно работающие программы, при сохранении достаточно небольшого объёма программного продукта. Ярким примером этому является алгоритм сортировки на Haskell, по сравнению с языком Си (рис. 1).

рис. 1

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

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

В свободном доступе имеется много готовых к использованию приложений и библиотек для решения всесторонних задач, например:

- Работа с базами данных: haskelldb, HDBC, Takusen.

- Работа с графикой: Blobs, Diagrams, Glome, Grapefruit, Haven, HaskellCharts, Yampa.

- Языки и компиляторы: Agda, Curry, Epigram, Language.Python, Lava, WebBits.

- Системные программы: House, FreeArc, Xmonad.

- Работа с текстами: HaXml, HXT, Pandoc, Parsec, The grammatical framework.

- Работа в интернете: gitit, happstack, Twidge.

Haskell нашёл широкое применение в крупнейшей социальной сети Facebook для решения задач по фильтрации спама.

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

ЛИТЕРАТУРА

1. Википедия – свободная энциклопедия. [Электронный ресурс] — https://library.kiwix.org/wikipedia_ru_all/A/html/H/a/s/k/Haskell.html— (дата обращения: 15.10.2015)

2. Викиучебник - Основы функционального программирования. [Электронный ресурс] — https://ru.wikibooks.org/wiki/%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F/%D0%92%D0%B2%D0%BE%D0%B4%D0%BD%D0%B0%D1%8F_%D0%BB%D0%B5%D0%BA%D1%86%D0%B8%D1%8F— (дата обращения: 14.10.2015)

3. Википедия – свободная энциклопедия. — https://ru.wikipedia.org/wiki/Haskell


Петров Павел Сергеевич

студент международного факультета прикладных информационных технологий Саратовского государственного технического университета имени Гагарина Ю.А.

Petrov Pavel Sergeevich

Student

International Faculty of Applied

Information Technologies,

Yuri Gagarin State Technical University of Saratov


 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-04-14 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: