Статья:

История создания языка LISP

Конференция: XXXVII Студенческая международная научно-практическая конференция «Технические и математические науки. Студенческий научный форум»

Секция: Технические науки

Выходные данные
Полежаев С.В. История создания языка LISP // Технические и математические науки. Студенческий научный форум: электр. сб. ст. по мат. XXXVII междунар. студ. науч.-практ. конф. № 2(37). URL: https://nauchforum.ru/archive/SNF_tech/2(37).pdf (дата обращения: 28.03.2024)
Лауреаты определены. Конференция завершена
Эта статья набрала 0 голосов
Мне нравится
Дипломы
лауреатов
Сертификаты
участников
Дипломы
лауреатов
Сертификаты
участников
на печатьскачать .pdfподелиться

История создания языка LISP

Полежаев Сергей Владимирович
студент, Армавирский государственный педагогический университет, РФ, г. Армавир
Давиденко Алексей Николаевич
научный руководитель, доцент, Армавирский государственный педагогический университет, РФ, г. Армавир

 

Автором языка Лисп принято считать Джона Маккарти, который во время разработки языка работал в Массачусетском технологическом институте профессором по связи. Он и Марвин Мински вместе были погружены в работу с искусственным интеллектом, по причине чего и появилась необходимость в создании языка программирования, который адекватно отвечал бы требованиям задач этой области. Основная работа по разработке лиспа была проделана Маккарти в MIT в с 1958 - 1963 гг., после чего он перевелся в Калифорнийский Стенфордский университет , в котором получил должность профессора по искусственному интеллекту.

За основу Лиспа был взят более ранний язык IPL, который был разработан Ньюэллом, Шоу и Саймоном. IPL являлся языком обработки списков и имел предназначение для реализации проекта «Логик-теоретик» — такой системы искусственного интеллекта, которая была предназначена для автоматического вывода теорем математической логики. IPL можно назвать языком низкого уровня , но он имел в себе несколько базовых идей, такие как единый механизм хранения программ и данных в виде списков — иерархических структур элементов, связанных ссылками, и еще идея динамического распределения памяти. После того, как в 1956 г. Маккарти ознакомился с языком IPL, у него родилась идея реализации обработки IPL-списков в Фортране, который как раз в тоже время проектировался в IBM, но данная идея так и не была воплощена в реальность. Спустя какое то время, Маккарти было принято участие в работе «комитета по языку высокого уровня», который разрабатывал Алгол, но и там его идеи не были приняты. И по итогу к Маккарти пришла идея важности создания нового языка программирования

Изначально Маккарти было сформулирован списочный формализм, служащий для описания данных и также основанный на нём же механизм описания лямбда-выражений, что дало возможность записи программы в виде наборов функций, в виде списочной формы. Как уже потом писал Маккарти, сначала он хотел применять отдельный формализм для записи программ, который отличается от S-выражений, но как оказалось, это было лишним. Когда Маккарти был описан с помощью своей списочной записи алгоритм функционирования интерпретатора нового языка, Стивом Расселом было замечено, что сейчас для создания на самом деле работающего интерпретатора вполне хватит простого перевода этой записи в машинный код. Маккарти относился к этой мысли со скептицизмом, но Рассел реально проделал эту работу и смог получил первый интерпретатор Лиспа для компьютера IBM 704. Далее идея написания транслятора языка на нём самом использовалась часто, и свое применение находило не только в функциональных и логических языках, но и так в императивных.

Исторически сложилось так, что первой реализацией Лиспа которая включает все современные базовые элементы языка, являлся интерпретатор, который работал на появившийся в 1958 г. IBM 704. Это позволяет считать Лисп одним из двух старейших языков высокого уровня, находящиеся в употреблении с самого создания до нашего времени (первый -Фортран). Кроме того, Лиспом было сохранено первенство ещё кое в чем. Речь идет о том, что активная работа с динамическими списками сделала невозможным ручное управление памятью, которое сохраняется в императивных языках и сейчас. Создание новых списочных ячеек и списков и выход из использования имеющихся при работе лисп-программы происходят настолько активно, что почти не дает возможности обойтись без системы автоматического управления памятью, которая могла бы контролировать использование ранее созданных в памяти объектов и периодически удаляла те из них, использование которых прекратилось. То есть системы сборки мусора. Маккарти был вынужден реализовать эту систему, благодаря которой Лисп, помимо всего остального, считается ещё и самым старым из применяемых на сегодняшний день языков программирования с автоматическим управлением памятью и сборкой мусора.

Позже были созданы реализации для IBM 7090, а потом - для серий IBM 360 и 370. Компьютеры IBM были неудобными для работы в интерактивном режиме, из-за чего в 1950-х гг. немногочисленная группа разработчиков, вместе с бывшими работниками IBM, организовалась в самостоятельную компанию Digital Equipment Corporation. Первым её изделием был компьютер PDP-1, предназначенный изначально для интерактивного режима работы. На нем в 1960 г. была реализована интерактивная система «Lisp 1», которая включала в себя интегрированные интерпретатор и редактор исходного кода и отладчик, позволявшая выполнять весь цикл работ над программой в самой системе. Можно сказать, что это была первая «среда программирования» в том же смысле, в котором оно подразумевает себя сегодня. В тоже время в журнале «Communications of ACM» была опубликована статья Маккарти «Recursive Functions of Symbolic Expressions and their Computation by Machine.», в которой Лисп был описан в виде алгебраического формализма на самом Лиспе. Статья стала классической, а формализм типа «Лисп на Лиспе» с того времени стал одним из наиболее употребимых в литературе по теории программирования. Ещё одной технологической новинкой, появившимся в результате реализации системы «Lisp 1» являлся изобретённый Маккарти механизм, который мог позволить запускать интерпретатор Лиспа вместе с выполнением обычных вычислительных работ в пакетном.

К 1962 г. была готова новая версия оригинального лиспа «Lisp 1.5», в которой устранялись все обнаруженные за время эксплуатации недостатки первой версии. Её описание было издано в «MIT Press» как отдельная книга. Так как руководство включало описание реализации системы, оно стало основой для создания лисп-систем для большинства других компьютеров как в США, так и в других странах.

Несмотря на активное использование Лиспа в европейских и азиатских странах и разработку там же своих собственных лисп-систем, большинство распространённых диалектов Лиспа имеют американское происхождение. В начале 80-х гг. в лисп-сообществе случилась ситуация, которую многие авторы сравнивали с Вавилонской башней: параллельно существовали и развивались больше десяти крупных диалектов Лиспа,а общее число несовместимых между собой реализаций было значительно больше. Подобная ситуация развивалась в то время и в большинстве других распространённых языков программирования, а в случае же с Лиспом ситуация была еще хуже из-за того, что язык изначально был разработан как произвольно расширяемый, что спровоцировало развитие его возможностей в разных диалектах в существенно разных направлениях. Если на начальном этапе, когда Лисп использовали в основном в лабораториях и институтах, многообразие диалектов не особенно мешало и даже было в каком то смысле полезным, поскольку способствовало быстрому развитию языка, то к 1980-м гг., в то время когда появилась нужда в промышленных разработках на Лиспе, многообразие реализаций сыграло роль тормоза, потому что оно приводило к массовому дублированию разработок и рассредоточению сил на поддержку множества лисп-систем.

Попытки стандартизации Лиспа предпринимались практически с момента его появления, но из-за разобщённости и значительных различий в потребностях заинтересованных групп разработчиков ни одно из предложений не было принято. В конце 70-х гг. Министерством обороны США была проведена немалая работа по анализу ситуации в программных разработках военного назначения. Был организован конкурс на разработку нового языка высокого уровня для встроенных систем, им стал язык Ада. Но Ада не предназначалась первоначально для искусственного интеллекта и символьной обработки, из-за чего для таких разработок военное ведомство США было вынуждено прибегнуть к использованию более подходящего языка. И поэтому Министерство обороны США оказало содействие формированию промышленного стандарта языка Лисп, который вскоре и приняло в качестве дополнительного средства разработки ПО для военных целей.

Начальный вариант стандарта начал изготавливаться в Университете Карнеги - Меллона на базе внутреннего проекта Spice Lisp, также изначально нацеленного на разработку лисп-системы для рабочей станции. Разрабатываемому стандарту с самого начала было дано название «Common Lisp»,что подчёркивало цель разработки - получение единого базового языка, на основании которого было бы возможным создание программно-совместимых систем. В этапе разработки и редактирования стандарта приняло участие примерно 80 специалистов из университетов, лабораторий и фирм США. Разработка проводилась дистанционно, через компьютерную сеть ARPANET, которая передавала более трех тысяч сообщений. В 1984 г. разработка стандарта завершилась. Результаты были зафиксированы и опубликованы Гаем Стилом в первом издании руководства «Common Lisp: the Language» .

Создание Common Lisp притормозило появление новых диалектов языка. «Старые» диалекты еще существовали, но по мере выхода из употребления платформ, на которых они работали, прекращали использоваться и соответствующие Лисп-системы. Большое количество перестало существовать в 1985 - 1995 гг.. Последующие разработки были произведены уже на Common Lisp. И все же, в последующих годах отмечается появление нескольких новых диалектов Лиспа, которые в основном упрощались и ориентировались на микрокомпьютеры. В последующие десятилетия обширно распространились языки, которые использовали автоматическое управление памятью, компиляцию в промежуточный код и выполнение его в виртуальной машине, такие как Java, Python, C#, и др.. Были созданы и еще несколько диалектов Лиспа, которые были ориентированы на выполнение в динамических средах других языков. Таким диалектам становится возможным работа напрямую с библиотеками соответствующей языковой среды и взаимодействовать с программами на других языках, выполняемых в этой же среде. Например:

  • Clojure - Scheme-подобный язык, служащий для исполнения под JVM.
  • Kawa - тоже вариация реализации Scheme для JVM.
  • Hylang - диалект, работающий под управлением среды исполнения языка Python.
  • Lisp Flavored Erlang - диалект Лиспа, написанный на Erlang и исполняемый под его виртуальной машиной BEAM.

 

Список литературы:
1. С.С. Лавров, Г.С. Силагадзе «Автоматическая обработка данных. Язык Лисп и его реализация», 1978г..
2. Т. Пратт «Языки программирования: разработка и реализация», 1979 г..
3. Л.В. Городняя «Основы функционального программирования», 2004..