Рассмотрим особенности функционирования
> clisp
Работа системы начинается с заставки вида:
> clisp
i i i i i i i ooooo o ooooooo ooooo ooooo
I I I I I I I 8 8 8 8 8 o 8 8
I \ `+' / I 8 8 8 8 8 8
\ `-+-' / 8 8 8 ooooo 8oooo
`-__|__-' 8 8 8 8 8
| 8 o 8 8 o 8 8
------+------ ooooo 8oooooo ooo8ooo ooooo 8
Copyright (c) Bruno Haible, Michael Stoll 1992, 1993
Copyright (c) Bruno Haible, Marcus Daniels 1994-1997
Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998
Copyright (c) Bruno Haible, Sam Steingold 1999-2002
[1]>
Символ " > " - приглашение к вводу выражений для интерпретации. Выход из Лисп-системы осуществляется как вызов функции " BYE "
[1]> (BYE) Естественно, надо набрать и "Конец строки" - "Enter".
Происходит возврат к операционной системе.
[1]> (BYE) Bye.
Основной
[1]> (CONS 1 2)
[1]> (CONS 1 2) (1 . 2) [2]>
При недостатке правых скобок ничего не происходит:
[1]> (CONS 1 2
Система ждет, пока не получит недостающие скобки, прежде чем предложить прочитанную форму
[1]> (CONS 1 2 ) (1 . 2) [2]>
Баланс скобок проще всего поддерживать, набирая пары "()" и вставляя потом между ними нужный текст. При наборе закрывающей скобки система на полсекунды перемещает курсор на соответствующую левую скобку, что также помогает замечать нарушения в балансе скобок.
При невозможности интерпретировать полученное данное как символьное выражение система печатает диагностическое сообщение:
[2]> (CONS A B) *** - EVAL: variable A has no1. Break [3]> value EVAL: переменная A не имеет значения (перевод с английского –можно выбрать версию с русской диагностикой
В этом примере перед атомами "A" и "B" следует поставить апострофы, показывающие системе, что здесь эти атомы не рассматриваются как переменные. Система перешла в режим обработки прерывания, выйти из которого можно с помощью Ctrl-D (одновременное нажатие).
[5]> (cons a 'b) *** - EVAL: variable A has no value 1. Break [6]>[7]> (cons 'a 'b) (A . B) [8]> Была набрана комбинация Ctrl-D
Оперативную коррекцию можно делать без повторного набора текста строковым редактором. Стрелка вверх, предназначенная для перемещения курсора, здесь используется для перехода к ранее набранной строке.
[1]> (CONS 1 2) (1 . 2)(CONS 1 2) [2]> При нажатии верхней стрелки появился текст "(CONS 1 2)"
Теперь эту строку можно подкорректировать:
[1]> (CONS 1 2) (1 . 2) [2]>(4 . 5) (CONS 4 5) Цифры 1 и 2 заменены на 4 и 5, затем после нажатия "Enter" получен результат.
Можно пользоваться любым регистром при наборе имен, включая
[1]> (cons 'ГОЛОВА 'хвост) (ГОЛОВА . ХВОСТ) [2]>
Программа на Лиспе – это последовательность интерпретируемых выражений.
Представим, что подготовлен файл с именем "start.lsp":
; пример программы (defun первый (x) (car x)) ;; определение новой функции (print (первый '(one two))) ;; вывод результата применения новой функции
Расширение "lsp" символизирует тексты на Лиспе. В этом файле содержится программа с построчными
Defun – функция трех аргументов: первый – имя объявляемой новой функции, второй – список ее аргументов, третий – тело определения. Функция " Defun " встраивает в систему новую, определяемую в программе функцию.
Print – унарная
Заранее подготовленный файл с программой можно ввести и сразу исполнить с помощью функции LOAD.
[1]> (LOAD 'start.lsp) T ONE [2]>
Перед именем файла ставится апостроф. Результат " T " означает, что чтение файла прошло успешно. При чтении файла произошла интерпретация содержащихся в нем выражений. Чтобы увидеть результаты работы программы здесь применение функции оформлено как аргумент PRINT ".
На примерах видно, что символьное выражение может выглядеть как имя, число или круглоскобочная структура.
В системе имеется функция " STEP ", обеспечивающая пошаговую интерпретацию сложных выражений.
Унарная функция " STEP " выполняет пошаговую интерпретацию своего аргумента. Ее работа начинается с приглашения выбрать действие по управлению интерпретацией (см. таблицу):
[2]> (step (cons (car '(a . b)) 'd )) step 1 --> (CONS (CAR '(A . B)) 'D ) Step 1 [3]>
| COMMAND | ABBR | DESCRIPTION |
|---|---|---|
| КОМАНДА | СОКР. | ОПИСАНИЕ |
| Help | :h (or ?) |
this command list |
| Полный список команд | ||
| Error | :e |
Print the recent Error Message |
| Вывод последнего сообщения об ошибке | ||
| Continue | :c |
continue evaluation |
| Продолжение вычислений | ||
| Step | :s |
step into form: evaluate this form in single |
| Продвижение к внутреннему подвыражению | ||
| Next | :n |
step over form: evaluate this form at once |
| Вычисление данной формы сразу, полностью | ||
По действию "step" выбирается вычисление первого аргумента функции "CONS":
Step 1 [2]> (step (cons (car '(a . b)) 'd )) Step 1 --> (CONS (CAR '(A . B)) 'D ) Step 1 [3]> step Step 2 --> (CAR '(A . B)) Step 2 [4]>
Это же действие "step" теперь можно выбирать с помощью стрелки вверх:
Step 1 [2]> (step (cons (car '(a . b)) 'd)) Step 1 --> (CONS (CAR '(A . B)) 'D) Step 1 [3]> step Step 2 --> (CAR '(A . B)) Step 2 [4]>Step 3 --> '(A . B) Step 3 [5]> step Этот "step" получен нажатием стрелки вверх
Теперь шаг за шагом смотрим как
(step (cons (car '(a . b)) 'd )) step 1 --> (CONS (CAR '(A . B)) 'D) Step 1 [15]> step step 2 --> (CAR '(A . B)) Step 2 [16]> step step 3 --> '(A . B) Step 3 [17]> step step 3 ==> value: (A . B) step 2 ==> value: A step 2 --> 'D Step 2 [18]> step step 2 ==> value: D step 1 ==> value: (A . D) (A . D) Step 1 [14]>
Интернет-браузер на запрос "Lisp" даст многочисленные ссылки на сайты, среди которых можно найти следующее:
| URL | Комментарий |
|---|---|
| http://www.intuit.ru/ | Сайт Интернет-Университета Информационных Технологий с большим числом дистанционных курсов по программированию |
| http://lists.unixcenter.ru/archives/mlug/2000-August/000232.html | Материалы сравнения Си с Лиспом |
| http://www.shareware-ownload.org/lisp.php | Бесплатные Lisp-системы. |
| http://ru.wikipedia.org/wiki/LISP/ | Статья про Лисп в электронной энциклопедии. |
| ftp://ftp.gnu.org/gnu/clisp/release/2.29/ | Сайт со свободно распространяемыми реализациями Clisp (clisp-2.29-win32.zip) |
| Сайт |
|
| http://penguin.kurgan.ru/doc/lisp.html | Про |
| http://www.ystok.ru/index.html | Сайт фирмы, использующей Лисп в качестве базовой технологии |
| http://www.marstu.mari.ru/mmlab/home/lisp/title.htm | Сайт Морозова с введением в программирование на Лиспе |
| http://vspu.ac.ru/~lmiker/5im/rezn.htm | Сайт Микеровой с учебником по Лиспу |
| Сайт Заочной школы программирования и Информационных технологий, включающий материалы по Лиспу |
Можно воспользоваться комплектом
Установка системы
GNU Common Lisp
Для установки:
В файлах *.bat поместить после
"SET L=" наименование каталога, где установлен
CLISP.
Запуск:
clisp - с русскими сообщениями
clisp_en - с английскими сообщениями
(в сеансе DOS под Windows 3.x или
в среде DPMI, например, cwsdpmi.exe)
L - запуск в среде без DPMI
(можно запускать в любой среде DOS и Windows,
но в Window 95 не будут работать многие
файловые операции.
Внимание! Вместо ввода команд ABORT, (BYE), (QUIT) и (EXIT)
можно нажимать клавишу <Ctrl>+Z ("конец
текстового файла").
Для L ".
@echo off SET L=C:\PROGRAMS\CLISP SET CLISP_LANGUAGE=ru %L%\lisp.exe -M %L%\lispinit.mem -x (print 'HELLO) %1
lisp.exe - базовый
lispinit.mem – база данных встроенных функций
Комплект поставки содержит документацию на английском языке и ряд примеров:
Clisp-m.txt – man-файл с описанием опций, которыми можно влиять на режим эксплуатации
Xlispdoc.txt – справочник по встроенным функциям (от другой версии, но многое соответствует)
(Load 'file.lsp ) |
Загрузка файла file.lsp, содержащего Лисп-программу |
(Apropos 'str ) |
Выдать перечень атомов, в имена которых входит str |
(Describe 'Atom ) |
Представить сведения о месте атома в системе |
(Dribble 'file.drb ) |
Протокол вычислений направить в файл file.drb |
(Print expr ) |
Напечатать результат вычисления expr |
(Read ) |
Взять очередное выражение из входного потока |
(Step expr ) |
Перейти к пошаговой интерпретации expr |
Рассмотрим особенности функционирования
> clisp
Работа системы начинается с заставки вида:
> clisp
i i i i i i i ooooo o ooooooo ooooo ooooo
I I I I I I I 8 8 8 8 8 o 8 8
I \ `+' / I 8 8 8 8 8 8
\ `-+-' / 8 8 8 ooooo 8oooo
`-__|__-' 8 8 8 8 8
| 8 o 8 8 o 8 8
------+------ ooooo 8oooooo ooo8ooo ooooo 8
Copyright (c) Bruno Haible, Michael Stoll 1992, 1993
Copyright (c) Bruno Haible, Marcus Daniels 1994-1997
Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998
Copyright (c) Bruno Haible, Sam Steingold 1999-2002
[1]>
Символ " > " - приглашение к вводу выражений для интерпретации. Выход из Лисп-системы осуществляется как вызов функции " BYE "
[1]> (BYE) Естественно, надо набрать и "Конец строки" - "Enter".
Происходит возврат к операционной системе.
[1]> (BYE) Bye.
Основной
[1]> (CONS 1 2)
[1]> (CONS 1 2) (1 . 2) [2]>
При недостатке правых скобок ничего не происходит:
[1]> (CONS 1 2
Система ждет, пока не получит недостающие скобки, прежде чем предложить прочитанную форму
[1]> (CONS 1 2 ) (1 . 2) [2]>
Баланс скобок проще всего поддерживать, набирая пары "()" и вставляя потом между ними нужный текст. При наборе закрывающей скобки система на полсекунды перемещает курсор на соответствующую левую скобку, что также помогает замечать нарушения в балансе скобок.
При невозможности интерпретировать полученное данное как символьное выражение система печатает диагностическое сообщение:
[2]> (CONS A B) *** - EVAL: variable A has no1. Break [3]> value EVAL: переменная A не имеет значения (перевод с английского –можно выбрать версию с русской диагностикой
В этом примере перед атомами "A" и "B" следует поставить апострофы, показывающие системе, что здесь эти атомы не рассматриваются как переменные. Система перешла в режим обработки прерывания, выйти из которого можно с помощью Ctrl-D (одновременное нажатие).
[5]> (cons a 'b) *** - EVAL: variable A has no value 1. Break [6]>[7]> (cons 'a 'b) (A . B) [8]> Была набрана комбинация Ctrl-D
Оперативную коррекцию можно делать без повторного набора текста строковым редактором. Стрелка вверх, предназначенная для перемещения курсора, здесь используется для перехода к ранее набранной строке.
[1]> (CONS 1 2) (1 . 2)(CONS 1 2) [2]> При нажатии верхней стрелки появился текст "(CONS 1 2)"
Теперь эту строку можно подкорректировать:
[1]> (CONS 1 2) (1 . 2) [2]>(4 . 5) (CONS 4 5) Цифры 1 и 2 заменены на 4 и 5, затем после нажатия "Enter" получен результат.
Можно пользоваться любым регистром при наборе имен, включая
[1]> (cons 'ГОЛОВА 'хвост) (ГОЛОВА . ХВОСТ) [2]>
Программа на Лиспе – это последовательность интерпретируемых выражений.
Представим, что подготовлен файл с именем "start.lsp":
; пример программы (defun первый (x) (car x)) ;; определение новой функции (print (первый '(one two))) ;; вывод результата применения новой функции
Расширение "lsp" символизирует тексты на Лиспе. В этом файле содержится программа с построчными
Defun – функция трех аргументов: первый – имя объявляемой новой функции, второй – список ее аргументов, третий – тело определения. Функция " Defun " встраивает в систему новую, определяемую в программе функцию.
Print – унарная
Заранее подготовленный файл с программой можно ввести и сразу исполнить с помощью функции LOAD.
[1]> (LOAD 'start.lsp) T ONE [2]>
Перед именем файла ставится апостроф. Результат " T " означает, что чтение файла прошло успешно. При чтении файла произошла интерпретация содержащихся в нем выражений. Чтобы увидеть результаты работы программы здесь применение функции оформлено как аргумент PRINT ".
На примерах видно, что символьное выражение может выглядеть как имя, число или круглоскобочная структура.
В системе имеется функция " STEP ", обеспечивающая пошаговую интерпретацию сложных выражений.
Унарная функция " STEP " выполняет пошаговую интерпретацию своего аргумента. Ее работа начинается с приглашения выбрать действие по управлению интерпретацией (см. таблицу):
[2]> (step (cons (car '(a . b)) 'd )) step 1 --> (CONS (CAR '(A . B)) 'D ) Step 1 [3]>
| COMMAND | ABBR | DESCRIPTION |
|---|---|---|
| КОМАНДА | СОКР. | ОПИСАНИЕ |
| Help | :h (or ?) |
this command list |
| Полный список команд | ||
| Error | :e |
Print the recent Error Message |
| Вывод последнего сообщения об ошибке | ||
| Continue | :c |
continue evaluation |
| Продолжение вычислений | ||
| Step | :s |
step into form: evaluate this form in single |
| Продвижение к внутреннему подвыражению | ||
| Next | :n |
step over form: evaluate this form at once |
| Вычисление данной формы сразу, полностью | ||
По действию "step" выбирается вычисление первого аргумента функции "CONS":
Step 1 [2]> (step (cons (car '(a . b)) 'd )) Step 1 --> (CONS (CAR '(A . B)) 'D ) Step 1 [3]> step Step 2 --> (CAR '(A . B)) Step 2 [4]>
Это же действие "step" теперь можно выбирать с помощью стрелки вверх:
Step 1 [2]> (step (cons (car '(a . b)) 'd)) Step 1 --> (CONS (CAR '(A . B)) 'D) Step 1 [3]> step Step 2 --> (CAR '(A . B)) Step 2 [4]>Step 3 --> '(A . B) Step 3 [5]> step Этот "step" получен нажатием стрелки вверх
Теперь шаг за шагом смотрим как
(step (cons (car '(a . b)) 'd )) step 1 --> (CONS (CAR '(A . B)) 'D) Step 1 [15]> step step 2 --> (CAR '(A . B)) Step 2 [16]> step step 3 --> '(A . B) Step 3 [17]> step step 3 ==> value: (A . B) step 2 ==> value: A step 2 --> 'D Step 2 [18]> step step 2 ==> value: D step 1 ==> value: (A . D) (A . D) Step 1 [14]>
Интернет-браузер на запрос "Lisp" даст многочисленные ссылки на сайты, среди которых можно найти следующее:
| URL | Комментарий |
|---|---|
| http://www.intuit.ru/ | Сайт Интернет-Университета Информационных Технологий с большим числом дистанционных курсов по программированию |
| http://lists.unixcenter.ru/archives/mlug/2000-August/000232.html | Материалы сравнения Си с Лиспом |
| http://www.shareware-ownload.org/lisp.php | Бесплатные Lisp-системы. |
| http://ru.wikipedia.org/wiki/LISP/ | Статья про Лисп в электронной энциклопедии. |
| ftp://ftp.gnu.org/gnu/clisp/release/2.29/ | Сайт со свободно распространяемыми реализациями Clisp (clisp-2.29-win32.zip) |
| Сайт |
|
| http://penguin.kurgan.ru/doc/lisp.html | Про |
| http://www.ystok.ru/index.html | Сайт фирмы, использующей Лисп в качестве базовой технологии |
| http://www.marstu.mari.ru/mmlab/home/lisp/title.htm | Сайт Морозова с введением в программирование на Лиспе |
| http://vspu.ac.ru/~lmiker/5im/rezn.htm | Сайт Микеровой с учебником по Лиспу |
| Сайт Заочной школы программирования и Информационных технологий, включающий материалы по Лиспу |
Можно воспользоваться комплектом
Установка системы
GNU Common Lisp
Для установки:
В файлах *.bat поместить после
"SET L=" наименование каталога, где установлен
CLISP.
Запуск:
clisp - с русскими сообщениями
clisp_en - с английскими сообщениями
(в сеансе DOS под Windows 3.x или
в среде DPMI, например, cwsdpmi.exe)
L - запуск в среде без DPMI
(можно запускать в любой среде DOS и Windows,
но в Window 95 не будут работать многие
файловые операции.
Внимание! Вместо ввода команд ABORT, (BYE), (QUIT) и (EXIT)
можно нажимать клавишу <Ctrl>+Z ("конец
текстового файла").
Для L ".
@echo off SET L=C:\PROGRAMS\CLISP SET CLISP_LANGUAGE=ru %L%\lisp.exe -M %L%\lispinit.mem -x (print 'HELLO) %1
lisp.exe - базовый
lispinit.mem – база данных встроенных функций
Комплект поставки содержит документацию на английском языке и ряд примеров:
Clisp-m.txt – man-файл с описанием опций, которыми можно влиять на режим эксплуатации
Xlispdoc.txt – справочник по встроенным функциям (от другой версии, но многое соответствует)
(Load 'file.lsp ) |
Загрузка файла file.lsp, содержащего Лисп-программу |
(Apropos 'str ) |
Выдать перечень атомов, в имена которых входит str |
(Describe 'Atom ) |
Представить сведения о месте атома в системе |
(Dribble 'file.drb ) |
Протокол вычислений направить в файл file.drb |
(Print expr ) |
Напечатать результат вычисления expr |
(Read ) |
Взять очередное выражение из входного потока |
(Step expr ) |
Перейти к пошаговой интерпретации expr |
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.