Математика | ||||
Автоматическая обработка данных. Язык лисп и его реализация-Лавров С. С «Наука», М., 1978. стр.175 | ||||
Автоматическая обработка данных. Язык лисп и его реализация. Серия «Библиотечка программиста». Лавров С. С., С и-лагадзе Г. С. Главная редакция физико-математической литературы издательства «Наука», М., 1978.
Язык, одна из версий которого описана в книге, пользуется широкой известностью как язык для описания задач обработки символьной информации и искусственного интеллекта. В книге довольно подробно изложены методы интерпретации и компиляции программ на этом языке. Некоторые из этих методов могут с успехом быть использованы при реализации других языков, в частности при составлении программ обработки символьной информации на языках низкого уровня. Приводится много примеров описаний функций. Книга рассчитана на широкий круг программистов, сталкивающихся с задачами указанных классов, в частности, — на студентов старших курсов, специализирующихся в области математического обеспечения ЭВМ. ОГЛАВЛЕНИЕ Предисловие ........................... 5 Введение.............................. 7 ГЛАВА 1. Описание языка.................. 8 1.1. Литеры и алфавит..................... 8 1.2. Атомы........................... 8 1.3. Списки........................... 10 1.4. Выражения......................... 11 1.5. Функции.......................... 12 1.6. Функция QUOTE..................... 13 1.7. Функция CAR....................... 13 1.8. Функция CDR....................... 14 1.9. Композиции CAR и CDR ................ 15 1.10. Пустой список....................... 16 1.11. Функция CONS..................... 16 .12. Логические значения и предикаш........... 18 .13. Функция АТОМ...................... 18 .14. Функция EQ......... .............. 19 .15. Условные выражения................... 20 .16. Определяющие выражения функций........... 21 1.17. Функция NULL...................... 23 1.18. Встроенные и определяемые функции......... 23 1.19. Обычные и специальные функции............ 24 1.20. Функции SEXPR и SFEXPR.............. 25 1.21. Рекурсивные функции................... 27 1.22. Функция CSETQ, константы............... 29 1.23. Программа........... ......,...... 30 .24. Аппарат PROG..................... 31 •25. Переменные........................ 34 .26. Приемы программирования................ 35 .27. Функции READ, PRINT и GENSYM......... 37 •28. Функция EVAL..................... 39 .29. Функция LIST...................... 40 1.30. Предикаты AND к OR.................. 40 1* 3 .31. Обобщение понятия выражения............. 41 .32. Числа...............,............ 44 .33. Предикаты, классифицирующие атомы ......... 45 .34. Арифметические функции и предикаты......... 46 .35. Операции над строками бигов.............. 50 .36. Функционалы....................... 51 .37. Функция SELECTQ................. 54 .38. Пример программы................... . 55 ГЛАВА 2. Реализация языка лисп ............. 62 2.1. Внутреннее представление выражений.......... 62 2.2. Списки свойств атомов.................. 65 2.3. Язык для описания реализации............ 69 2.4. Распределение памяти................... 74 2.5. Список объектов...................... 75 2.6. Подпрограммы функций PRINT и READ...... 78 2.7. Ассоциативный список.................. 83 2.8. Интерпретатор....................... 85 2.9. Интерпретация PROG................... 90 2.10. Функциональные аргументы................ 93 2.11. Арифметические функции................. 97 2.12. Организация рекурсивных подпрограмм......... 98 2.13. Уборка мусора....................... 102 2.14. Компилятор........................ ПО 2.15. Ограничения................... .... 121 2.16. Переходы.......................... 124 ГЛАВА 3. Библиотека вспомогательных функций ...... 128 3.1. Операции над списками.................. 128 3.2. Функции с побочным эффектом............. 132 3.3. Предикаты......................... 138 3.4. Порядок и упорядочивание................ 139 3.5. Поиск............................ 143 3.6. Операции над множествами ............... 144 3.7. Ассоциативные списки .................. 148 3.8. Функционалы....................... 153 3.9. Операторы......................... 154 3.10. Списки свойств.........,............ 156 Приложение...................... 162 Литература............................ 166 Предметный указатель ................. 168 Указатель лисповских функций и констант....... 171 Указатель обозначений, использованных в описании 174 ПРЕДИСЛОВИЕ В этой книге отражен опыт авторов по работе с языком лисп и его реализации на вычислительных машинах БЭСМ-6, ОДРА-1204 и др. Этот язык входит в десятку наиболее распространенных языков, хотя и не занимает «призовых» мест. В его основу положены оригинальные идеи, знакомство с которыми обогащает программистскую квалификацию и культуру и приносит поэтому пользу, даже если программист в дальнейшем и не работает с этим языком. Уже после лиспа появились другие языки, предназначенные для тех же целей и в чем-то его превосходящие: рефал, PLANNER, CONNIVER и др. Современные универсальные языки также обладают большими возможностями в части обработки символьной информации. Но все это не умаляет значения лиспа, который содержит в наиболее чистом виде понятия, теряющиеся среди многих других понятий в более современных и универсальных языках. Большое внимание уделено в этой книге реализации языка. Авторы не предполагают, что создание интерпретаторов или компиляторов для этого языка станет массовым занятием программистов. Однако методы интерпретации и компиляции, описанные в книге, могут быть применены во многих других случаях, особенно при реализации языков, имеющих дело с символьной информацией. Кроме того, описание интерпретатора может, по нашему мнению, служить примером подхода к составлению любых больших программ, т. е. программ, значительно превосходящих по размеру и сложности те программы, которые встречаются в учебных пособиях или излагаются на занятиях по программированию. Отсутствие подобных примеров создает довольно большие трудности при изучении программирования для ЭВМ. Глава 2 книги в какой-то мере заполняет этот пробел. В соответствии с традицией, насчитывающей более 20 лет, многие авторы (в том числе и авторы этой книги) пишут названия языков программирования прописным шрифтом. Однако Главная редакция Цена: 150руб. |
||||