Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Laboratorny_praktikum_1

.doc
Скачиваний:
14
Добавлен:
11.02.2015
Размер:
164.86 Кб
Скачать

На Ростовской молодежной Школе системного программирования (Мелиховка) в 1970 году в стенгазете отмечен «Лавровый Лисп».

Судьба Лиспа в России весьма волновала С.С. Лаврова. Он подготовил серию статей, адресованных старшеклассникам, для журнала «Компьютерные инструменты в образовании» и реализовал новую учебную систему на Паскале.

В конце 1968 года в кабинете А.П. Ершова Джон Маккарти прочел серию лекций, посвященных языку Лисп. Возможность практичного применения такого языка на ЭВМ БЭСМ-6 вызывала сомнения у специалистов.

Первая версия реализации Лисп-интерпретатора в Новосибирске, начатая в 1967 году, была прервана из-за обнаруженного несовершенства исходных решений (хэш-таблица атомов оказалась неприспособленной к удалению объектов). Вторая версия экспериментальной реализации полного Lisp 1.5 в условиях получения пяти минут машинного времени в день, чего с трудом хватало на прогон одной колоды на автокоде, потребовала изрядной изобретательности при выборе результативных проектных и технологических решений. Например, для представления интерпретатора был специально сконструирован язык загрузчика, удачно сочетавший эффективность программирования в кодах с гибкостью символьной обработки. В результате за пять минут вполне удавалось пропустить более пяти колод по 1000 перфокарт. Протокол работы программы начинал печататься моментально, сразу вслед за завершением приема перфокарт. Это определило достаточную результативность отладки Лисп-интерпретатора.

Алгоритмы и реализация были разработаны и отлажены Л.В. Городней. Л.В. Суковатицина (Черноброд)выполнила отладку Лисп-арифметики с целью поддержки будущих исследований в области верификации программ. Производственная версия Лисп-системы существовала в двух вариантах — быстрая и производительная.Для производительного варианта был реализован специальный механизм контроля стека с выгрузкой во внешнюю память. Внутреннее представление выбрано так, чтобы не требовалось при освобождении памяти в случае полных слов привлекать специальную память для разметки. Слова с единицей в разряде, зарезервированном для работы «мусорщика», представляются как отдельный тип данных, что можно рассматривать как перенос этого разряда в поле тега при адресе полного слова.

Работа с атомами поддержана в полном объеме, достаточном для представления любых фреймов. Система поддерживала одновременно английскую и русифицированную лексику. (КАР, КДР, КОНС, СОВП, АТОМ,ЛАМБДА, МЕТКА, КАВЫЧ, УСЛ, ФУНК, НИЛ, И, Л, ИНТЕРП, ЧТЕНИЕ, ПЕЧАТЬ, ПЕЧ0, ПЕЧФ, СПИСОК,НИЛС, ДЛИНА, ДОСТ, ЗНАЧ, ПОДПР, СВЫР, СПЕЦВЫР, СПЕЦПОЛПР, ОШИБКА, РЕЖИМ, СБОЙ,КОНЕЦ и др.)

При недостатке закрывающих скобок при чтении по умолчанию завершаются все построенные структуры. В тексте программы в позициях с нулевым балансом скобок можно было ставить символ «;».

Лисп-система на БЭСМ-6 эксплуатировалась практически без изменений почти до 1986 года (до смены элементной базы). О ней имеется косвенное упоминание в книге «Мир Лиспа», один из авторов которой бывал в Новосибирске и очень дотошно вникал во все, относящееся к Лиспу и его применению. Мюнхенский музей Лиспа в качестве экспоната располагает публикацией о новосибирском Лисп-проекте. Основное применение системы исследования в области верификации программ, эксперименты по организации недоопределенных вычислений и конструированию семантических моделей.

В начале 1980-х годов, после осознания кризиса технологии программирования, увлечения Lisp-машинами и поиска эффективных алгоритмов «сборки мусора», произошел спад интереса к проблемам искусственного интеллекта, что сказалось на уменьшении коммерческой поддержки Lisp-проектов. Это побудило ведущиеLisp-группы объединить усилия по стандартизации семейства Lisp-языков с целью повышения их выразительной силы и производительности.

В этом процессе произошел раскол между сторонниками академических (Lisp-1) и производственных(Lisp-2) диалектов языка Lisp. Наиболее заметное различие связано с реализацией принципа представления функций и значений. Для академических диалектов характерна реализация единого пространства адресов для всех категорий хранимых в памяти данных. В 1970-е годы практиковались подходы к расширению доступной памяти посредством организации раздельного адресного пространства для разных категорий данных — программ, значений, стека и т.д. Естественно, что в производственных диалектах возникли реализации с раздельными пространствами для функций, переменных, тегов и т.п. В практике программирования эта разница проявляется в представлении вызовов динамически вычисляемых определений функций. Вместо (fn a1 a2 ... ) в программах на производственных диалектах приходится писать (FUNCALL fn a1 a2 ...), т.е. возникает необходимость во встроенной функции FUNCALL, выполняющей перевод данных из одного пространства в другое. Дебаты вокруг противопоставления диалектов Lisp-1 и Lisp-2 не утихли до сих пор. Языки Scheme и Common Lisp — наиболее популярные современные представители направлений Lisp-1 и Lisp-2 соответственно.

Следует отметить, что решения, принятые в системе LISP — БЭСМ-6 (ВЦ АН СССР), по духу близки Lisp2, а ЛИСП — БЭСМ-6 (ВЦ СО АН СССР) более соответствует Lisp-1.

Идеи языка Lisp дали жизнь целому ряду современных парадигм компьютерных языков. Важнейшая из них — парадигма функционального программирования. Эта парадигма впервые полно на русском языке изложена в переводе Л.Т. Петровой. В предисловии к этой книге А.П. Ершов утверждает, что «понять и принять функциональное программирование легче, если рассматривать задачу программирования в ее полном контексте, начиная со спецификации задачи и логического анализа ее разрешимости, побочным продуктом которого является сама программа».

С приходом DEC-совместимой техники многие работы перекочевали на заимствованное программное обеспечение. Переход на диалекты Лиспа, такие как MuLisp и Interlisp, показал, что Лисп-программы менее чувствительны к аппаратным различиям, но зависят от системных вариаций семантики языка.

Студенты технических университетов и архитектурных академий практикуют на AutoCAD, языком реализации и входным языком которого является AutoLisp.

С 1990-х годов стали доступными плоды свободно распространяемого обеспечения, включая систему GNU Clisp.

В середине 1990-х годов Дмитрий Иванов и Арсений Слободюк эффективно и аккуратно реализовали представительное (ок. 500 функций) учебное подмножество языка Common Lisp.

Историю отечественных реализаций языка Lisp в новом тысячелетии продолжил Б.Л. Файфель, создавший систему HomeLisp, обеспечивающую программирование в рамках современного Windows-интерфейса, используя средства машинной графики, COM-объекты и BLOB-объекты, WEB-компоненты, т.е. все, к чему привык современный программист, воспитанный на Visual Studio и Delphi. Система содержит в своем составе COM-библиотеку и два скриптовых движка, позволяющих писать скрипты на Лиспе, а также вызывать Лисп из любой среды, поддерживающей COM. Реализована возможность построения автономных EXE-файлов, в т.ч. и с графическим интерфейсом. Поддерживается сверхдлинная арифметика целых. Входной язык этой системы, в основном навеянный идеями С.С. Лаврова и реализацией GNU CLisp, содержит обобщение техники работы с атомами: список свойств можно связать не только с именем, но и с числом. Реализован встроенный редактор, средства дампирования, справочная подсистема с полным описанием языка и вспомогательный сервис для начинающих с примерами программирования и шаблонами применения функций.

По меткому выражению Л.В. Черноброд: «Зная Лисп, легко понимать любые языки программирования».Такому применению Лиспа способствует обилие дистанционно доступных любительских сайтов и учебных материалов.

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

На основе анализа текста изобразим в виде графа тематическую структуру (рис. 1.2):

Используя программу TextAnalyst, создадим для подготовленного текста реферат. Он будет выглядеть следующим образом:

К наиболее известным можно отнести "Visual Prolog", "Тurbo Prolog", "SWI-Prolog".

Также рассмотрены структура программы SWI-Prolog, Тurbo Prolog и Visual Prolog.

В рабочем порядке он описал с помощью языка Algol-60 основные алгоритмы системы программирования для языка Lisp 1.5, выражая при этом серьезный скепсис относительно возможности полноценной ее реализации на нашей лучшей ЭВМ БЭСМ-6.

После участия в Международном симпозиуме «Проблемы теории программирования» Джон Маккарти и Джекоб Шварц на две недели включились в работы ВЦ СО РАН СССР по реализации языков Лисп и Сетл, что и позволило ему поэкспериментировать с новой реализацией Lisp-системы на БЭСМ-6, разработанной в ВЦ СО АН СССР.

Возможность практичного применения такого языка на ЭВМ БЭСМ-6 вызывала сомнения у специалистов.

Следует отметить, что решения, принятые в системе LISP — БЭСМ-6 (ВЦ АН СССР), по духу близки Lisp2, а ЛИСП — БЭСМ-6 (ВЦ СО АН СССР) более соответствует Lisp-1.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]