Основы функционального программирования/Вводная лекция: различия между версиями
Содержимое удалено Содержимое добавлено
м Кавычки "" -> «», пробелы т.д. -> т. д. |
м Добавлены ссылки, убраны повторные ссылки |
||
Строка 170:
*<math>P (x_{1},\, x_{2},\, \ldots, \,x_{n})</math> — некоторая процедура.
*<math>x_{1} = a_{1},\
*<math>x_{3},\, \ldots,\, x_{n}</math> — неизвестные значения параметров.
Строка 177:
'''2. Построение математического описания функций.'''
Пусть имеется программа <math>P</math>. Для неё определены входные значения <math>\langle x_{1},\, \ldots,\, x_{n} \rangle</math> и выходные значения <math>\langle y_{1},\, \ldots,\, y_{m} \rangle</math>. Требуется построить математическое описание функции
<center><math>f : D_{x_{1}} \times \ldots \times D_{x_{n}} \rightarrow D_{y_{1}} \times \ldots \times D_{y_{m}}</math>.</center>
Строка 199:
В этом разделе приведено краткое описание некоторых языков функционального программирования (очень немногих). Дополнительную информацию можно почерпнуть, просмотрев ресурсы, перечисленные в следующем разделе.
#'''
#'''[[w:ISWIM|ISWIM]]''' (If you See What I Mean). Функциональный язык-прототип. Разработан Питером Ландиным в 60-х годах XX ве́ка для демонстрации того, каким может быть язык функционального программирования. Вместе с языком П. Ландин разработал и специальную [[w:Виртуальная машина|виртуальную машину]] для исполнения программ на ISWIM’е. Эта виртуальная машина, основанная на вызове-по-значению, получила название [[w:SECD-машина|SECD-машины]]. На синтаксисе языка ISWIM базируется синтаксис многих функциональных языков. На синтаксис ISWIM похож синтаксис ML, особенно Caml.
#'''
#'''
#'''Standard ML'''. Один из первых типизированных языков функционального программирования. Содержит некоторые императивные свойства, такие как ссылки на изменяемые значения и поэтому не является чистым. При вычислениях использует вызов-по-значению. Очень интересная реализация модульности. Мощная полиморфная система типов. Последний стандарт языка — Standard ML-97, для которого существует формальные математические определения синтаксиса, а также статической и динамической семантик языка.
#'''[[w:Caml Light|Caml
#'''
#'''
#'''Gofer''' (GOod For Equational Reasoning). Упрощённый диалект Haskell’а. Предназначен для обучения функциональному программированию.
#'''Clean'''. Специально предназначен для параллельного и распределённого программирования. По синтаксису напоминает Haskell. Чистый. Использует отложенные вычисления. С компилятором поставляется набор библиотек (I/O libraries), позволяющих программировать графический пользовательский интерфейс под [[w:Windows API|Win32]] или
=== Сайты о функциональном программировании ===
Строка 215:
#[http://cm.bell-labs.com/cm/cs/what/smlnj/ http://cm.bell-labs.com/cm/cs/what/smlnj/] — Standard ML of New Jersey. Очень хороший компилятор. В бесплатный дистрибутив помимо компилятора входят утилиты MLYacc и MLLex и библиотека Standard ML Basis Library. Отдельно можно взять документацию по компилятору и библиотеке.
#[http://www.harlequin.com/products/ads/ml/ http://www.harlequin.com/products/ads/ml/] — Harlequin MLWorks, коммерческий компилятор Standard ML. Однако в некоммерческих целях можно бесплатно пользоваться версией с несколько ограниченными возможностями.
#[http://caml.inria.fr/ http://caml.inria.fr/] — институт INRIA. Домашний сайт команды разработчиков языков Caml Light и Objective Caml. Можно бесплатно скачать дистрибутив Objective Caml, содержащий интерпретатор, компиляторы [[w:Байт-код|байт-кода]] и машинного кода, Yacc и Lex для Caml, [[w:Отладчик|отладчик]] и [[w:Профайлер|профайлер]], документацию, примеры. Качество компилированного кода у этого компилятора очень хорошее, по скорости опережает даже Standard ML of New Jersey.
#[http://www.cs.kun.nl/~clean/ http://www.cs.kun.nl/~clean/] — содержит дистрибутив компилятора с языка Clean. Компилятор коммерческий, но допускается бесплатное использование в некоммерческих целях. Из того, что компилятор коммерческий, следует его качество (очень быстр), наличие среды разработчика, хорошей документации и стандартной библиотеки.
|