Слайд 2Конец 1968 года
Джон Маккарти прочел в Москве и Новосибирске циклы
лекций
по Lisp-у и автоматизации доказательств теорем
Слайд 3Московская (ВЦ АН СССР)
Lisp-система
Лавров С.С., Силагадзе Г.С. Входной язык и интерпретатор системы программирования
на базе языка ЛИСП для машины БЭСМ-6. - М.: ВЦ АН СССР, 1967.
Лавров С.С., Силагадзе Г.С. Входной язык и интерпретатор системы программирования на базе языка ЛИСП для машины БЭСМ-6. - М.: ИТМ и ВТ АН СССР, 1969.
Лавров С.С., Силагадзе Г.С. Автоматическая обработка данных. Язык Лисп и его реализация. - М.: Наука, 1978, 176 с.
Слайд 4С.С. Лавров.
Научная автобиография
«Существенно более успешной была реализация языка Лисп на БЭСМ-6
(совместно с Г.С. Силагадзе). Удалось создать неплохие интерпретатор и компилятор Лиспа. В книге тех же авторов "Язык Лисп и его реализация" (М.: Наука, 1978) описана более совершенная реализация. »
Слайд 5Новосибирская (ВЦ СО АН СССР) Лисп-система
Применялась в пионерских исследованиях по верификации программ, организации недоопределенных вычислений,
конструированию семантических моделей и макетированию программ с целью поддержки процесса их разработки.
Включает русифицированную версию языка.
Эксплуатировалась система без особых переделок практически до демонтажа БЭСМ-6
Слайд 6История языка Lisp
John McCarthy. Recursive Functions of Symbolic Expressions and Their Computation
by Machine. Communications of the ACM, April 1960.
John McCarthy et al. LISP 1.5 Programmers Manual. MIT Press, 1962.
Lisp 1. Programmer’s Manual. Massachusetts, 1960. 156 p.
Mitchell, R.W., "LISP 2 Specifications Proposal", Stanford Artificial Intelligence Laboratory Memo No. 21, Stanford, Calif., 1964.
Слайд 7Первые реализации
Сложилась структура открытой системы из:
интерпретатора,
компилятора,
средств ввода-вывода списков,
доступа к памяти с
автоматической «сборкой мусора»,
встроенной базой данных с динамически изменяемым форматом записей, хранящих информацию об атомах, обеспечивающих взаимодействие всех элементов системы и программы.
Слайд 8Освобождение от непринципиальных затруднений
Беззаботное размещение в памяти гибких списков произвольного размера
с автоматической «сборкой мусора».
Работа с целыми неограниченной длины и вещественными с задаваемой точностью.
Отображение структур данных в интегральный результат посредством независимо программируемых функций.
Компиляции как встроенная функция, вызываемая в любой момент по мере необходимости.
Слайд 9Расширение круга специалистов
ввод/вывод данных любой сложности без особых ритуальных действий.
Выделено концептуальное
подмножество (Pure Lisp), достаточное для освоения наиболее важных особенностей языка,
Разработан небольшой, но содержательно полный, сборник задач с ответами для быстрого самостоятельного перехода к программированию на языке.
Слайд 10Многолетняя дружба
более 340 документов
Язык Lisp упоминается в большинстве документов того времени –
преимущественно Lisp 2
Джон Маккарти участвовал в ВКП-2 с докладом «Текущее состояние математической теории вычислений»
После участия в Международном симпозиуме «Проблемы теории программирования» Джон Маккарти и Джекоб Шварц на две недели включились в работы ВЦ СО РАН СССР по реализации языков Лисп и Сетл.
Слайд 11Много более давняя и тесная дружба связывает Андрея Петровича Ершова со Святославом Сергеевичем
Лавровым.
Научный архив С.С. Лаврова передан на хранение в электронный архив А.П. Ершова
Слайд 12LISP – БЭСМ-6 (ВЦ АН СССР)
Мнение авторов:
«в основу языка Lisp положены
оригинальные идеи, знакомство с которыми обогащает программистскую квалификацию и культуру и приносит пользу, даже если программист в дальнейшем и не работает с этим языком».
Слайд 13Мнение авторов
«описание интерпретатора может служить примером подхода к составлению любых больших программ,
т.е. программ, значительно превосходящих по размеру и сложности те программы, которые встречаются в учебных пособиях или излагаются на занятиях по программированию».
Слайд 14Мнение авторов
«язык Lisp устроен так, что он во многих случаях позволяет находить
путь к решению задачи постепенно, последовательно сводя ее к более простым задачам».
Слайд 15FUNARG-проблема
Изобретено и реализовано оригинальное эффективное решение FUNARG-проблемы, заключающееся в особой разметке
областей действия переменных в ассоциативном списке
Слайд 16Фольклор
На Ростовской молодежной Школе системного программирования (Мелиховка) в 1970 году в
стенгазете отмечен «Лавровый Лисп».
Слайд 17Судьба Лиспа в России
весьма волновала С.С. Лаврова
подготовил серию статей, адресованных старшеклассникам, для
журнала «Компьютерные инструменты в образовании»
реализовал новую учебную систему на Паскале
Слайд 18ЛИСП – БЭСМ-6 (ВЦ СО АН СССР)
Начатая в 1967 году первая версия
реализации Лисп-интерпретатора в Новосибирске, была прервана из-за несовершенства исходных решений (реализация хэш-таблицы атомов оказалась неприспособленной к удалению объектов).
Слайд 19Вторая версия реализации полного Lisp 1.5
Для производительного варианта был реализован специальный
механизм контроля стека с выгрузкой во внешнюю память.
Для производительного варианта был реализован специальный механизм контроля стека с выгрузкой во внешнюю память.
Слайд 20Руссификация
КАР, КДР, КОНС, СОВП, АТОМ,
ЛАМБДА, МЕТКА, КАВЫЧ, УСЛ,
ФУНК,
НИЛ, И, Л, ИНТЕРП, ЧТЕНИЕ, ПЕЧАТЬ, ПЕЧ0, ПЕЧФ, СПИСОК, НИЛС,
ДЛИНА, ДОСТ, ЗНАЧ,
ПОДПР, СВЫР, СПЕЦВЫР, СПЕЦПОЛПР,
ОШИБКА, РЕЖИМ, СБОЙ, КОНЕЦ, …)
Слайд 21Стандартизация языка Lisp
Раскол между сторонниками академических (Lisp-1) и производственных (Lisp-2) диалектов
(fn a1 a2 … ) ;;
Scheme
(FUNCALL fn a1 a2 …) ;; Common Lisp
Слайд 22Другие
MuLisp
Interlisp
AutoLisp
GNU Clisp
CMUCL
Слайд 23Новые реализации
Дмитрий Иванов и Арсений Слободюк реализовали (ок. 500 функций) учебное подмножество
языка Common Lisp, соответствующее стандарту X3J13
Б.Л. Файфель создал систему HomeLisp, обеспечивающую Windows-интерфейс, средства машинной графики, COM-объекты и BLOB-объекты, WEB-компоненты, т.е. все, к чему привык программист, воспитанный на Visual Studio и Delphi
Слайд 24«Зная Лисп, легко понимать
любые языки программирования»
Хендерсон П Функциональное программирование М.: Мир, 1983
- в переводе Л.Т. Петровой
В предисловии к этой книге А.П. Ершов утверждает, что «понять и принять функциональное программирование легче, если рассматривать задачу программирования в ее полном контексте, начиная со спецификации задачи и логического анализа ее разрешимости, побочным продуктом которого является сама программа».