Техника - молодёжи 1994-07, страница 42

Техника - молодёжи 1994-07, страница 42

HELP

Software

В «ТМ» Ms 4 за этот год начинающие компьютерные полиглоты вкратце познакомились с популярным язы ком программир вания Фортом. Продолжая обзор машинных рече-ни ин е ер-п ограммист Дмитрий ИВАЩЕНКО рассказывает о другом, не менее важном средстве общения с ЭВМ - Лиспе.

ГОЛОСУЕМ ЗА СПИСОК!

В иссл дованиях по искусственному интеллекту редкий программист обходится без Лиспа. Его англоязычное название составлено из слов List Processing», то есть обработка списков. Язык был предложен Дж. Маккарти в 1960 году и на протяжении более чем тридцвти лет своего существования разветвился на ряд диалектов. Для любимого читателями «ТМ» «Энтерпрайза» фирмой Intelligent S ftware Ltd разработа а вер я IS-LISP, реализующая широкие возможности это о компьютера.

Лисп — язык так называемого функционального программирования, которое принципиально отличается от опер торно о, используемого в большинстве других основных языков Он основан на алгебре списочных структур лямбда исчислении и теории рекурсивных функций. Списки предста яют собой упорядочении з последовательности элементе) , заключенные в круглые скобки В виде списков удобно представлять алгебраически выражения, графы множества, различные правила и многие другие сложные объекты Списки являются н иболее гибкой формой предст вления информации в памяти современных компьютеров В Лиспе в виде списков оформляются не только данные, но и программы (и отдельные функции). Например, (PLUS 2 3) оз начает, в зависимости от окружения, либо действие сложения, дающее в результате 5, либо список остоящий из 3 элементов

Основа Лиспа - набор базовых функций. В результате выполнения любой из них ее значение становится аргументом следующее и так до тех пор, пока не будет получена такая функция, кото рая осуществляет все, что хотел пользователь. При вводе новых функций происходит их трансляция (перевод на язык машинных команд) и занесение в список.

Теория рекурсивных (то есть вызывающих самих себя) функций позволяет писать очень ком пактныв программы (правда выглядят они весьма необычно с трвдиционной точки зрения).

В Лиспе формы представления программы и обрвбатываемых ею данных одинаковы. Таким образ про раммы могут обраб тывать и преобразовывать другие программы и даже самих себя. Благодаря этому появилас великолепная возможность создать универсальную вычислительную машину для обработки данных, способную к самосовершенствованию.

Списки, представляющие программы и данные, состоят из списочных ячеек, резервирование и освобождение которых осуществляется динамически Памя ь при этом используется очень экономно.

Кроме функционального программирования, в Лиспе можно применять обычное операторное с присваиваниями, передачами управлений и циклами, а также макропрограммирование и объектно ор внтированное программирование.

Компактность программ на Лиспе, разнообразные формы преде авления данных, бережное использование памяти, способность к самообучению в зависимости от внешних условий — все зто делает Лисп наиболее эффективным в самых различных областях применения: в обработк естественного языка; в экспертных системах принятия решений, в том числе в автоматизирован ном проектировании, планировании действий, работе с нече кими данными, управлении проиэ водством а также для осуществления символьных вычислений, синтеза прогрвмм, моделирования работы различных систем, распознавания образов и многих других полезных занятий

В качестве примера Лисп програм ы приведем определение функции на IS-LISP, которая сортирует в алфавитном порядке неупорядоченное множество слов любой длины. Алфавит задается как отдельный список последовательности букв. (SLOVAR '((F U N С Т 1 О N) (Е N Т Е R Р R I S Е) (L I S Р») Результат:

(Е N Т Е R Р R I S Е) (F U N С Т I О N) (L I S Р)

Быстродействие функции весьма велико, а запись довольно компактна. В традиционных языках програ мирования (Бейсике или Па кале) она заняла бы не колько страниц и солидный объем ашинной памяти Звдание алфавита:

(SETQ ALFAVIT '(ABCDEFGHIJKLMNOPQRSTUVWXYZ) Функция RAN проверяет, нах дится пи элемент А ранее В: (DEFU RAN (А В POR) % А.В - элеме ты, POR - список алфавита

(COND ((NULL POR) NIL) % условие: элемента в алфавите нет - ЛОЖНО ((EQ A (CAR POR)) Т) % А встретился - EPHO ((EQ В (CAR POR)) NIL) % В встретился - ЛОЖНО (Т (RAN А В (CDR POR))))) % проверка следующей буквы % алфавита

Функция ALF проверяет алфавитный порядок 2 слов: (DEFUN ALF (X Y)

(COND ((NULL X) Т) % условие: X нет - ВЕРНО ((NULL Y) NIL) % Y нет - ЛОЖНО

((EQ (CAR X) (CAR Y)) (ALF (COR XI (CDR Y))) % если буквы

% равны — переход к следующей (Т (RAN (CAR X) (CAR Y) ALFAVIT)))) % проверка букв Функция ST вставляет слово: (DEFUN VST (SLOVO SLOVA)

(COND ((NUL SLOVA) (LIS " SLOVO))

((ALF SLOVO (CAR SLOVA)) (CONS SLOVO SLOVA)) (T (CONS (CAR SLOVA) (VST SLOVO (CDR SLOVA)))))) Окончательная функция: (DEFUN SLOVAR (SLOVA (REZ . NIL) (COND ((NULL SLOVA) REZ)

(T (SLOVAR (CDR SLOVA) (VST (CAR SLOVA) REZ)))))

Info

ПРОГРАММЫ ДЛЯ КОМПЬЮТЕРОВ:

IBM-совместимые, MC-0511 (УКНЦ), БК-0010(01), БК-11 (М), 1895 0, Г.Ломоносов, а/я 649, А В.Молчанову (для получения каталога укажите на кон ерте тип ЭВМ и вложите конверт с марками).

Для удобства расчета тоимость предлагаемых ниже товаров и услуг приведена в долларах США Оплата роизводится в рублях по курсу ЦБ РФ на момент покупки или отправлени ценежн го перевода КЛУБ ЭЛЕКТРОННЫХ ИГР 112302 Москва а/я 77, «Техника — молодежи»):

- ПРОДОЛЖАЕТ РАСПРОДАЖУ КОМПЬЮТЕРОВ АНГЛИЙСКОЙ СБОРКИ ENTERPRISE 128 в комплекте с магнитофоном, картриджем с интерпретатором IS-BASfC, демонстрационной и игровой кассетами Стоимость комплекта —130$. Тел.: (095) 285-16-87, 285-88-48;

- ПРЕДЛАГАЕТ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ДЛЯ ENTERPRISE 128 В ОТДЕЛЬНЫХ КАРТРИДЖАХ: графическ *

едакторы, текстовый процессор PALEX игровые картриджи прикладной кар тридж PASMON с кассетными приложениями (игры, техническое описание операционной системы на русском языке и др.). Стоимость одного артридж (без кассетных приложе ий) 10-15$. Тел.: (095) 2В5-8В-48;

- ПРЕДЛАГАЕТ ПРОГРАММЫ ДЛЯ ENTERPRISE 128 НА КОМПАКТ-КАССЕТАХ И ДИСКЕТАХ: игрь языки программирования (в том числе LISP и FORTH с подробными описаниями на русском языке); прикладные и системные программы (цветной эмулятор-конвертор Спектрума SP 2 1 с приложе ием игр, русификатор ABC для всех стандартных сред Enterprise, многофункциональный текстовый процессор RED 1.4, операционная система виртуального диска RAM 0.1 и др.), а также справочник пс 1£ В SIC на русском языке. Твл.: (095) 285-88-01

- ПРОИЗВОДИТ :М НТ КОМПЬЮТЕРОВ ENTERPRISE. in (095) !5-88 8 Компьютеры, картриджи и кассетные приложения к ним можно приобрести в редакции по адресу: Москеа, ул. Новод митровская, 5а, 9-й этаж, к. 907Б; кассеты и дискеты с программным обесп е нием — к. 903. Проезд до ст. метро «Дмитровская». Пересыпка по почте не произ водится.

- ПРЕДЛАГАЕТСЯ НА ДИСКЕТАХ КОМПЬЮТЕРНОЕ ПРИЛОЖЕНИЕ К «ТМ» «КАК ЗАЩИТИТЬ ИНФОРМАЦИЮ (пособие по борьбе с хакерами)» дискета с текстом брошюры + дискета с программами и исходными те м (для ПК, совместимых с IBM PC/XT/AT). Стоимость комплекта редакции — 1,3$. Для получения приложения необходимо отправить перевод на сумму (с учетом почтовых расходов): для жителей России —1,4$, стран СНГ —2,0 $-поадр ;у 123022, Москва, а/я 77, Ко-нюшкову А. А.

По этому же адресу принимаются заявки на объявления К тексту приложите кви танцию почтового перевода из расчета 0,5$ за слово (для частных лиц) и 1 $ за слово для организаций.

40