Интернет Университет информационных технологий Твой путь к знаниям
  Искать!
Курсы | Обучение | Школа | Магазин | Общение | Новости | Помощь

поддержка курса Введение в программирование на Лиспе
информация [+] Авторы: Л.В. Городняя, Н.А. Березин


 
 
12. Лекция: Расширения и приложения Лиспа
Страницы: 1 | 2 | вопросы | » для печати и PDA
Если Вы заметили ошибку - сообщите нам или выделите ее и нажмите Ctrl+Enter
В заключении рассмотрим как дальше осваивать Лисп, практично использовать возможности Лисп-систем и систем функционального программирования. Познакомимся немного с историей Лиспа

На примере GNU Clisp ( Common Lisp language interpreter and compiler) рассмотрим типичные возможности Лисп-систем, описанные в man-файле комплекта поставки [GNU Clisp]1)

Вызов Лисп-интерпретатора и/или компилятора.

Без аргументов (опций) выполняется цикл "чтение-вычисление-печать", при котором выражения читаются поочередно из стандартного потока ввода, вычисляются Лисп-интепретатором, и полученные результаты выводятся в стандартный поток вывода. Опция –c специфицирует Лисп-файлы, предназначенные для компиляции в байт-код, который выполняется более эффективно.

Формат вызова Лисп-системы:

clisp [ -h ] [ -m memsize ] [ -M memfile ] 
[ -L language ] [ -N directory ] [ -q ] [ -I ] 
[ -i initfile ... ]        [ -c [ -l ] lispfile 
[ -o outputfile ] ...  ] [ -p packagename ] [ -x expression ]2)

OPTIONS

-h Показывает формат вызова Лисп-системы

-m memsize Установливает объем памяти. Для современных версий игнорируется.

-M memfile Определяет внутреннее наполнение памяти Лисп-системы. Оно должно быть создано функцией "saveinitmem".

-L language Задает язык сообщений для взаимодействия с пользователем. (английский, немецкий, французский и др.) Влияет на тексты диагностики.

-N directory Указывает, где искать файлы с текстами сообщений.

-q Ни заставки, ни прощального текста не выдается.

-I вариант диалога в стиле ILISP (популярный интерфейс, принятый в редакторе Emacs)

-i initfile ... Специфицирует инициализирующие файлы, которые будут загружены при запуске системы. Это должны быть исходные или компилированные Лисп-файлы,

-c lispfile ... Компилирует специфицированные Лисп-файлы в байт-код. Компилированные файлы затем загружаются вместо исходных, чтобы повысить эффективность.

-o outputfile Задает файл вывода или директорию для компиляции предшествующего лисп-файла.

-l будет выполняться листинг байткода для компилируемых файлов. Полезно только для целей отладки.

-p packagename При загрузке устанавливает начальное значение переменной *package*

-x expressions Выполняет серию произвольных выражений вместо цикла "read-eval-print". Значения выражений выводятся в стандартный поток вывода. Согласно системным соглашениям выражения должны быть заключены в скобки, а двойным кавычкам и обратным чертам следует предпослать обратную черту.

@optionfile Подставляет содержимое файла как аргумент для запуска Лисп-системы. Каждая строка воспринимается как отдельный аргумент.

При работе с Лисп-системой полезны следующие возможности:

(apropos name) перечисляет символы, включающеие " name "

(exit) or (quit) or (bye) - выход из Лисп-системы

EOF (Ctrl-Z) Покидает текущий " read-eval-print " цикл

Стрелки управления курсором позволяют построчно редактировать и просматривать историю ввода текста программы.

Соглашение об именах файлов:

lisp.exe основной исполнитель

lispinit.mem исходный/начальный образ/состояние памяти

config.lsp конфигурация и настройки

*.lsp исходные тексты на Лиспе

*.fas результат компиляции – байт-код

*.lib библиотечная информация, создаваемая и используемая компилятором

*.c Си-код, компилированный по исходному Лисп-тексту

Практичные расширения Лиспа

Средства и методы программирования на Лиспе образуют два слоя. Глубинный слой - локальное программирование, нацеленное на определение:

  • строгих функций,
  • безотходных структур данных,
  • регулярных отображений,
  • методов оперирования вычислениями.

Внешний слой - моделирование практичных парадигм программирования и механизмов их реализации:

  • прототипы и макеты программ,
  • интеграция разных стилей и методов программирования,
  • учебное и экспериментальное программирование,
  • проверка новых идей и подходов к организации информационных систем.

Естественно, работа на внешнем слое требует своей терминологии и развития понятий, отражающего расширение класса решаемых задач, повышение уровня общности и организованности решений:

Реальные Лисп-системы обеспечивают полный спектр средств работы с числами с особым вниманием к повышенной точности вычислений и длине представления числа. Средства обработки структур данных обычно позволяют работать с векторами, строками, массивами, хэш-таблицами, деревьями, последовательностями и файлами. Имеется работа с мульти-значениями, удобная при моделировании параллельных вычислений.

Строение Лисп-системы формируется как взаимодействие интерпретатора и компилятора, что позволяет гибко сочетать достоинства того и другого подходов к обработке программ. Для нужд компиляции программа дополняется спецификациями типов данных и декларациями, указывающими направление наследования определений. Имеются средства подготовки и использования встроенной документации и системной информации относительно фактического контекста вычислений. Обстановка функционирования системы регулируется механизмом пакетов, в составе которых хранятся различные варианты определений символов, включаемых в создаваемый комплект.

Так, например, пакет CLOS (Common Lisp Object System) поддерживает ООП в терминах классов, методов, суперклассов, экземпляров и семейств функций, подчиненных механизмам инкапсуляции и наследования с управляемым полиморфизмом.

Дальше »
Страницы: 1 | 2 | вопросы | » для печати и PDA
 
 

Внимание! Если Вы увидите ошибку на нашем сайте, выделите её и нажмите Ctrl+Enter.
Нужна помощь?
• Забыли пароль? Вам сюда...
• Есть вопрос? Спрашивайте!
Вы можете:
• Изменить персональные данные
• Изменить параметры подписки
Интернет-магазин:
• Ваши заказы здесь
• Ваш личный счет
Курсы | Учебные программы | Учебники | Вопросы и Ответы | Форум | Новости | Помощь

Телефон: +7 (499) 253-9312, 253-9313, факс: +7 (499) 253-9310, email: info@intuit.ru
© INTUIT.ru::Интернет-Университет Информационных Технологий - дистанционное образование, 2003-2011
Проект Издательства "Открытые Системы".
Партнеры: РМ Телеком, KRAFTWAY COMPUTERS.
Rambler's Top100