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.


Текст в окне браузера

История функционального программирования

  1. Какой язык стал первым почти функциональным языком программирования?

    Lisp
    С++
    Java
    XML

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

    В начале 60-х годов XIX века
    В конце 70-х — начале 80-х годов XX века
    В конце 90-х годов XX века
    В 70-х годах

  3. Что препятствовало распространению функциональных языков программирования на этапе 80-х гг XX века?

    Появление множества типизированных функциональных языков и увеличение числа диалектов
    Разхождение мнений разработчиков
    Маленькое финансирование
    Появление более современных языков программировании

  4. В честь кого был назван первый универсальный функциональный язык программирования?

    Чарльза Бэббиджа
    Хаскелла Карри
    Денниса Ритчи
    Ричарда Столлмана

  5. Как называется универсальный функциональный язык, созданный в начале 90-х годов?

    Haskell
    Hask
    Haskell-90
    Haskeln

  6. Каким образом в первую очередь реализуется большинство функциональных языков программирования?

    Как расширение
    В качестве интерпретаторов
    Как модуль реализации
    Как модуль определений


    

Комментарии

Популярные сообщения из этого блога

1.1 ИСТОРИЯ РАЗВИТИЯ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА КАК НАУЧНОГО НАПРАВЛЕНИЯ (Маячкин Александр)

3.2 ВИДЫ ЭКСПЕРТНЫХ СИСТЕМ И ТИПЫ РЕШАЕМЫХ ЗАДАЧ (Ермолаева-Синицына Анна)

3.6 ИНТЕЛЛЕКТУАЛЬНЫЕ ИНФОРМАЦИОННЫЕ СИСТЕМЫ (Богаткин Олег)