Неимперативные языки

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

Функциональные языки

Основная идея, лежащая в основе функционального программирования, — это представление программы в виде математических функций (т.е. функций, значение которых определяется лишь их аргументами, а не контекстом выполнения). Оператор присваивания в таких языках не используется (или, как минимум, его использование не поощряется). Императивные возможности, как правило, имеются, но их применение обставлено серьезными ограничениями.

В конце 1950-х гг. появился язык ЛИСП (LISP — List Information Symbol Processing, язык для обработки списков) для работы со строками символов. Это особое предназначение ЛИСПа открыло для программистов новую область деятельности, известную ныне как «искусственный интеллект». В настоящее время ЛИСП успешно применяется в экспертных системах, системах аналитических вычислений и т.п.

Обширность области возможных приложений ЛИСПа вызвала появление множества различных диалектов ЛИСПа. Это легко объяснимо: применение ЛИСПа для понимания естественного языка требует определенного набора базисных функций, отличных, например, от используемого в задачах медицинской диагностики. Потомки ЛИСП — Planner (1967), Scheme (1975), Common Lisp (1984). Последний был принят в университетах США, а также многими разработчиками систем искусственного интеллекта в качестве основного диалекта языка ЛИСП. Многие его черты были унаследованы современными языками функционального программирования.

Кроме перечисленных, можно упомянуть ML и два его современных диалекта — Standard ML (SML) и CaML. Последний имеет объектно-ориентированного потомка — Objective CaML (O’CaML), а также Haskell и его более простой диалект Clean.

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >