5.1 ИСТОРИЯ ФУНКЦИОНАЛЬНОГО ПРОГРАММИРОВАНИЯ (Щелина-Свинцова Ирина)
Теоретические
основы императивного программирования были заложены ещё в 30-х годах XX века
Аланом Тьюрингом и Джоном фон Нейманом. Теория, положенная в основу
функционального подхода, также родилась в 20-х — 30-х годах.
В числе
разработчиков математических основ функционального программирования можно
назвать МозесаШёнфинкеля (Германия и Россия) и Хаскелла Карри (Англия),
разработавших комбинаторную логику, а также АлонзоЧёрча (США),
создателя l-исчисления.
Теория
так и оставалась теорией, пока в начале 50-х прошлого века Джон МакКарти не
разработал язык Lisp, который стал первым почти функциональным языком
программирования и на протяжении многих лет оставался единственным таковым.
Хотя Lisp всё ещё используется (как, например, и FORTRAN), он уже не удовлетворяет
некоторым современным запросам, которые заставляют разработчиков программ
взваливать как можно большую ношу накомпилятор, облегчив тем самым свой
непосильный труд. Необходимость в этом, конечно же, возникла из-за всё более
возрастающей сложности программного обеспечения.
В
связи с этим обстоятельством всё большую роль начинает играть типизация. В
конце 70-х — начале 80-х годов XX века интенсивно разрабатываются модели
типизации, подходящие для функциональных языков. Большинство этих моделей
включали в себя поддержку таких мощных механизмов как абстракция данных и
полиморфизм. Появляется множество типизированных функциональных языков: ML,
Scheme, Hope, Miranda, Clean и многие другие. Вдобавок постоянно увеличивается
число диалектов.
В
результате вышло так, что практически каждая группа, занимающаяся
функциональным программированием, использовала собственный язык. Это
препятствовало дальнейшему распространению этих языков и порождало
многочисленные более мелкие проблемы. Чтобы исправить ситуацию, объединенная
группа ведущих исследователей в области функционального программирования решила
воссоздать достоинства различных языков в новом универсальном функциональном
языке. Первая реализация этого языка, названного Haskell в честь Хаскелла
Карри, была создана в начале 90-х годов. В настоящее время действителен
стандарт Haskell-98.
В
первую очередь большинство функциональных языков программирования реализуются
как интерпретаторы, следуя традициям Lisp'а. Интерпретаторы удобны для быстрой
отладки программ, исключая длительную фазу компиляции, тем самым укорачивая
обычный цикл разработки. Однако с другой стороны, интерпретаторы в сравнении с
компиляторами обычно проигрывают по скорости выполнения в несколько раз.
Поэтому помимо интерпретаторов существуют и компиляторы, генерирующие неплохой
машинный код (например, ObjectiveCaml) или код на C/C++ (например,
GlasgowHaskellCompiler). Что показательно, практически каждый компилятор с
функционального языка реализован на этом же самом языке.
Литература:
1. Филд А., Харрисон П. Функциональное
программирование. М.: Мир, 1993.
2. Хендерсон П. Функциональное программирование.
Применение и реализация. М.: Мир, 1983.
3. Джонс С., Лестер Д. Реализация функциональных
языков. М.: Мир, 1991.
Комментарии
Отправить комментарий