История возникновения функциональных языков - Функциональные языки программирования
Теоретические основы императивного программирования были заложены в 30-х годах Аланом Тьюрингом и Джоном фон Нейманом. Теория положенная в основу функционального подхода, также родилась в 20-х - 30-х годах. В числе разработчиков математических основ функционального программирования можно назвать Мозеса Шенфинкеля (Германия и Россия) и Хаскелла Карри (Англия), разработавших теорию комбинаторов, а также АлонзоЧерча (США), создателя лямбда исчисления. Теория так и оставалась теорией, пока в начале 50-х Джон МакКарти не разработал язык Lisp, который стал первым почти функциональным языком программирования и на протяжении многих лет оставался единственным таковым. Хотя Lisp все еще используется (как и FORTRAN), он уже не удовлетворяет некоторым современным запросам, которые заставляют нас взваливать как можно большую ношу на компилятор, облегчив тем самым непосильный труд программиста. Необходимость в этом, конечно же, возникла из-за все возрастающей сложности программного обеспечения. В связи с этим обстоятельством все большую роль начинает играть типизация. В конце 70-х - начале 80-х интенсивно разрабатываются модели типизации, подходящие для функциональных языков. Большинство этих моделей включали в себя поддержку таких мощных механизмов как абстракция данных и полиморфизм. Появляется множество типизированных функциональных языков: ML, Scheme, Hope, Miranda, Clean и многие другие. Вдобавок постоянно увеличивается число диалектов. В результате вышло так, что практически каждая группа, занимающаяся функциональным программированием, использовала собственный язык. Это препятствовало дальнейшему распространению этих языков и порождало многочисленные более мелкие проблемы. Чтобы исправить ситуацию, объединенная группа ведущих исследователей в области функционального программирования решила воссоздать достоинства различных языков в новом универсальном функциональном языке. Первая реализация этого языка, названного Haskell в честь Хаскелла Карри, была создана в начале 90-х годов. В настоящее время действителен стандарт Haskell 98. Большинство примеров в этой статье будут приводиться именно на этом языке. В первую очередь большинство функциональных языков программирования реализуются как интерпретаторы, следуя традициям Lisp-а. Интерпретаторы удобны для быстрой отладки программ, исключая длительную фазу компиляции, тем самым укорачивая обычный цикл разработки. Однако с другой стороны, интерпретаторы в сравнении с компиляторами обычно проигрывают по скорости выполнения в несколько раз. Поэтому помимо интерпретаторов существуют и компиляторы, генерирующие неплохой машинный код (например, ObjectiveCaml) или код на C/C++ (например, GlasgowHaskellCompiler). Что показательно, практически каждый компилятор с функционального языка реализован на этом же самом языке.
Похожие статьи
-
Строгая типизация - Основные свойства функциональных языков программирования
Практически все современные языки программирования являются строго типизированными языками (возможно, за исключением языка JavaScript и его диалектов, не...
-
История функционального программирования - Основные свойства функциональных языков программирования
Широко известно, что теоретические основы императивного программирования были заложены еще в 30-х годах XX века учеными Аланом Тьюрингом и Джоном фон...
-
Отложенные (ленивые) вычисления - Основные свойства функциональных языков программирования
В традиционных языках программирования (например, C++) вызов функции приводит к вычислению всех аргументов. Этот метод вызова функции называется...
-
Модульность, Функции - это значения - Основные свойства функциональных языков программирования
Механизм модульности позволяет разделять программы на несколько сравнительно независимых частей (модулей) с четко определенными связями между ними. Тем...
-
Основы функционального программирования - Основные свойства функциональных языков программирования
Функциональное программирование - раздел дискретной математики и парадигма программирования (совокупность идей и понятий, определяющая стиль написания...
-
Введение - Функциональные языки программирования
Функциональное программирование ставит своей целью придать каждой программе простую математическую интерпретацию. Эта интерпретация должна быть...
-
Введение - Основные свойства функциональных языков программирования
Созданная в 1998 году спецификация языка Haskell (названного так в честь ученого Хаскелла Карри, одного из основоположников функционального...
-
Функциональное программирование - Функциональные языки программирования
Функциональное программирование ставит своей целью придать каждой программе простую математическую интерпретацию. Эта интерпретация должна быть...
-
Заключение - Основные свойства функциональных языков программирования
Основной особенностью функционального программирования, определяющей как преимущества, так и недостатки данной парадигмы, является то, что в ней...
-
Завершив выбор схемы работы системы и общего принципа работы ее частей и выбрав тип базы данных, следует перейти к выбору языка программирования....
-
Чистота (отсутствие побочных эффектов) - Основные свойства функциональных языков программирования
В императивных языках функция в процессе своего выполнения может читать и модифицировать значения глобальных переменных и осуществлять операции...
-
Краткость и простота - Основные свойства функциональных языков программирования
Программы на функциональных языках обычно намного короче и проще, чем те же самые программы на императивных языках. Для примера можно сравнить программы...
-
Языки и методы параллельного программирования - Администрирование параллельных процессов
Применение параллельных архитектур повышает производительность при решении задач, явно сводимых к обработке векторов. Автоматическое распараллеливание...
-
Выбор языка программирования Язык С++ является в настоящее время наиболее распространенным и перспективным языком промышленного программирования. Он...
-
Разработка приложения на языке C++ - Программирование на языке C++
C++ - объектно-ориентированный язык программирования. Разработан в 1998--2001 годах группой инженеров под руководством Андерса Хейлсберга в компании...
-
Обзор языков программирования высокого уровня - Теоретические основы информационных технологий
Fortran (Фортран) Это первый компилируемый язык, созданный в 50-е годы. Программисты, разрабатывавшие программы исключительно на ассемблере, выражали...
-
Алгоритм работы декодера кода Рида - Маллера будем разрабатывать на основе уже приведенных выше уравнений. Алгоритм приведен на рисунке 12. В начале...
-
Turbo Pascal, О Turbo Pascal, История - Работа с языком Турбо Паскаль
Среда разработки Turbo Pascal 7.1 (Рис 1) О Turbo Pascal Turbo Pascal (произносится "турбо паскаль") -- Интегрированная среда разработки программного...
-
История развития сети Internet - Возникновение, современное состояние и развитие Internet
В 1961 году Defence Advanced Research Agensy (DARPA) по заданию министерства обороны США приступило к проекту по созданию экспериментальной сети передачи...
-
Области применения языка программирования С++ - Разработка видеолекций по программированию С++
Главным образом язык C++ используется на уровне инфраструктуры для разработки систем с ресурсными ограничениями и систем с высоким уровнем надежности....
-
В нашей курсовой работе была поставлена задача создания обучающей программы по информатике, с помощью которой студенты смогут проверить свои знания в...
-
У каждого языка программирования есть свои преимущества и недостатки, и их стоит рассматривать в контексте тех принципов, на которых строился язык, а так...
-
Основные типы данных языка Си - Основы программирования
Язык Си относится к языку с жестко определенными типами данных: каждое имя всегда обозначает объект некоторого типа, причем этот тип нельзя изменить до...
-
Идентификаторы языка Си, Понятие о типах данных - Основы программирования
Идентификаторы или имена служат для обозначения различных объектов программ: переменных (ячеек памяти), адресов, функций, файлов и т. д., иначе говоря -...
-
Применение полученных знаний на практике. Создание приложения - Программирование на языке C++
Я применил полученные знания при разработке простого приложения TodoList. Я соблюдал все принципы SOLID. Придерживаясь принципа инверсии зависимости я...
-
Платформа. NET Framework - Программирование на языке C++
.NET Framework - программная платформа, выпущенная компанией Microsoft в 2002 году. Основой платформы является общеязыковая среда исполнения Common...
-
ОПЕРАТОР ВВОДА ДЛЯ ЧТЕНИЯ ФАЙЛА, ОПЕРАТОР ВЫВОДА - Язык программирования Паскаль
Оператор ввода для чтения файла обладает всеми свойствамии обычного оператора READ. Вкачестве параметров могут быть переменные; каждая переменная поучает...
-
Правила формального описания синтаксиса языка программирования - Основы программирования
Под синтаксисом языка программирования понимают правила построения корректных конструкций данного языка. Синтаксис языка можно описать формально. Для...
-
Обоснование выбора языка и среды программирования Для реализации данного курсового проекта был выбран язык программирования Visual C#. Язык основан на...
-
CoDeSys -- универсальный инструмент разработки прикладных программ для программируемых логических контроллеров на языках стандарта IEC 61131-3. Данный...
-
Использование языка PERL для написания CGI-cкриптов - Язык программирования PERL. Сфера применения
Как вы узнали из предыдущей главы, CGI обеспечивает узлам Web вoзмoжнoсть интерактивной работы с клиентскими программами, в качестве которых обычно...
-
Технология программирования Для реализации поставленной задачи наиболее удобной парадигмой программирования будет являться объектно-ориентированная...
-
Языки программирования для Интернета - Теоретические основы информационных технологий
С активным развитием глобальной сети было создано немало популярных языков программирования, адаптированных специально для Интернета. Все они отличаются...
-
Языки программирования баз данных - Теоретические основы информационных технологий
Эта группа языков отличается от алгоритмических языков, прежде всего решаемыми задачами. База данных - это файл (или группа файлов), представляющий собой...
-
Скалярные переменные - Язык программирования PERL. Сфера применения
Как отмечалось, скалярная переменная может содержать единственное значение. В языке Perl имена скалярных переменных всегда начинаются со знака ($). В еле...
-
Поколения языков программирования Языки программирования принято делить на пять поколений. В первое поколение входят языки, созданные в начале 50-х...
-
Язык программирования R - Технологии больших данных: анализ и выбор решения для реализации проекта
Язык программирования R является универсальным и разработан для применения в следующих областях: разведочный анализ данных, классические статистические...
-
FBD (Function Block Diagram) - является графическим языком программирования. Предназначенный для программирования микро контролеров с помощью блок...
-
Для программирования агентов могут применяться: универсальные языки (Java, C++ , Visual Basic и др.), языки представления знаний (SL, KIF), языки...
-
Эволюция языков программирования - Модульное и объектно-ориентированное программирование
Принцип программного управления компьютером состоит в том, что человек подает команды на логические схемы, которые управляют различными подсистемами...
История возникновения функциональных языков - Функциональные языки программирования