русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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

Как известно, теоретические основы императивного программирования были заложены ещё в 30-х годах XX века Аланом Тьюрингом и Джоном фон Нейманом. Теория, по­ло­жен­ная в ос­но­ву функционального подхода, также родилась в 20-х — 30-х годах. В числе раз­ра­ботчиков математических основ функционального программирования можно назвать Мо­зеса Шён­финкеля (Германия и Россия) и Хаскелла Карри (Англия), разработавших ком­бинаторную логику, а также Алонзо Чёрча (США), создателя l-исчисления.

Теория так и оставалась теорией, пока в начале 50-х прошлого века Джон МакКарти не раз­работал язык Lisp, который стал первым почти функциональным языком прог­рам­ми­ро­ва­ния и на протяжении многих лет оставался единственным таковым. Хотя Lisp всё ещё ис­пользуется (как, например, и FORTRAN), он уже не удовлетворяет некоторым сов­ре­мен­ным запросам, которые заставляют разработчиков программ взваливать как можно боль­шую ношу на компилятор, облегчив тем самым свой непосильный труд. Не­об­хо­ди­мость в этом, конечно же, возникла из-за всё более возрастающей сложности программного обес­печения.

В связи с этим обстоятельством всё большую роль начинает играть типизация. В конце 70-х — начале 80-х годов XX века интенсивно разрабатываются модели типизации, под­хо­дящие для функциональных языков. Большинство этих моделей включали в себя под­дер­жку таких мощных механизмов как абстракция данных и полиморфизм. Появляется мно­жест­во типизированных функциональных языков: ML, Scheme, Hope, Miranda, Clean и мно­гие другие. Вдобавок постоянно увеличивается число диалектов.

В результате вышло так, что практически каждая группа, занимающаяся функциональ­ным программированием, использовала собственный язык. Это препятствовало дальней­шему распространению этих языков и порождало многочисленные более мелкие пробле­мы. Чтобы исправить ситуацию, объединенная группа ведущих исследователей в области функционального программирования решила воссоздать достоинства различных языков в новом универсальном функциональном языке. Первая реализация этого языка, названного Haskell в честь Хаскелла Карри, была создана в начале 90-х годов.

В первую очередь большинство функциональных языков программирования реализу­ются как интерпретаторы, следуя традициям Lisp’а. Интерпретаторы удобны для быстрой отладки программ, исключая длительную фазу компиляции, тем самым укорачивая обыч­ный цикл разработки. Однако с другой стороны, интерпретаторы в сравнении с компиля­торами обычно проигрывают по скорости выполнения в несколько раз. Поэтому помимо интерпретаторов существуют и компиляторы, генерирующие неплохой машинный код (например, Objective Caml) или код на C/C++ (например, Glasgow Haskell Compiler). Что показательно, практически каждый компилятор с функционального языка реализован на этом же самом языке.

В этом курсе для описания примеров функционального программирования будет ис­пользоваться в основном Haskell, бесплатные компиляторы которого можно скачать с сайта www.haskell.org.

Просмотров: 882


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.