Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вариант_№28.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
802 Кб
Скачать
☆

Языки функционального программирования

В этом разделе приведено краткое описание некоторых языков функционального программирования (очень немногих из существующих).

Lisp (List processor). Считается первым функциональным языком программирования. Язык нетипизирован и, хотя он содержит массу императивных свойств, однако основным для Lisp является именно функциональный стиль программирования. При вычислениях использует вызов по значению. Существует объектно-ориентированный диалект языка - CLOS.

ISWIM (If you See What I Mean). Функциональный язык-прототип. Разработан Ландиным в 60-х годах для демонстрации того, каким может быть язык функционального программирования. Вместе с языком Ландин разработал и специальную виртуальную машину для исполнения программ на ISWIM. Эта виртуальная машина, основанная на вызове по значению, получила название SECD-машины. На синтаксисе языка ISWIM базируется синтаксис многих функциональных языков, особенно на него похожи ML, и, в частности, Caml.

Scheme. Диалект Lisp, предназначенный для научных исследований в области компьютерной науки. При разработке Scheme был сделан упор на элегантность и простоту языка.

ML (Meta Language). Семейство строгих языков с развитой полиморфной системой типов и параметризуемыми модулями. ML преподается во многих западных университетах, иногда даже как первый язык программирования.

Standard ML. Один из первых типизированных языков функционального программирования. Содержит некоторые императивные свойства, такие как ссылки на изменяемые значения и поэтому не является чистым. При вычислениях использует вызов-по-значению. Очень интересная реализация модульности. Мощная полиморфная система типов. Последний стандарт языка - Standard ML-97, существует формальное математическое определения синтаксиса, статической и динамической семантик языка.

Caml Light и Objective Caml. Язык принадлежит к семейству ML. Objective Caml отличается от Caml Light в основном поддержкой классического объектно-ориентированного программирования. Также как и Standard ML является строгим, но имеет некоторую встроенную поддержку отложенных вычислений.

Miranda. Язык разработан Дэвидом Тернером, в качестве стандартного функционального языка, использовавшего отложенные вычисления. Имеет строгую полиморфную систему типов. Как и ML преподаётся во многих университетах.

Haskell. Один из самых распространенных нестрогих языков. Имеет очень развитую систему типизации. Последний стандарт языка - Haskell 98. Язык Haskell очень популярен в академических кругах. Haskell очень надежен - 99% ошибок выявляются на этапе компиляции. Тем не менее, он мало распространен в производстве (хотя есть промышленные экспертные системы, написанные на Haskell).

Gofer (GOod For Equational Reasoning). Упрощенный диалект Haskell. Предназначен для обучения функциональному программированию.

Clean. Язык специально предназначен для параллельного и распределенного программирования. Чисто функциональный язык. По синтаксису напоминает Haskell. Использует отложенные вычисления. С компилятором поставляется набор библиотек, позволяющих программировать графический пользовательский интерфейс под Win32 или MacOS.

РЕФАЛ. Алгоритмический язык Рефал (Recursive functions algorithmic language), был создан в конце 60-х начале 70-х годов В.Ф.Турчиным. Рефал, как алгоритмический язык, отличается простотой, высокой степенью модульности и имманентной структурностью программ. Простая семантика Рефала повышает надежность программирования на нем, значительно облегчает трассировку и отладку программ. Рефал доказал свою состоятельность в области трансляции машинных языков, доказательства теорем, компьютерной алгебры, создания баз данных.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]