êóðñîâûå,êîíòðîëüíûå,äèïëîìû,ðåôåðàòû
Ëàáîðàòîðíàÿ ðàáîòà ¹ 1.
Òåìà: Îçíàêîìèòåëüíàÿ ðàáîòà â ñðåäå MuLisp. Áàçîâûå ôóíêöèè Ëèñïà. Ñèìâîëû, ñâîéñòâà ñèìâîëîâ. Ñðåäñò-âà ÿçûêà äëÿ ðàáîòû ñ ÷èñëàìè.
Öåëü: Îçíàêîìèòüñÿ ñî ñðåäîé MuLisp. Èçó÷èòü áàçîâûå ôóíêöèè Ëèñïà, ñèìâîëû è èõ ñâîéñòâà, à òàêæå ñðåäñòâà äëÿ ðàáîòû ñ ÷èñëàìè.
Îñíîâíûå ïîëîæåíèÿ ïðîãðàììèðîâàíèÿ íà Ëèñïå.
Çàãðóçêà ñèñòåìû, ñèñòåìíûé ðåäàêòîð.
Áàçîâûå ôóíêöèè ÿçûêà. Ñèìâîëû, ñâîéñòâà ñèìâîëîâ.
Ñðåäñòâà ÿçûêà äëÿ ðàáîòû ñ ÷èñëàìè.
Çàäàíèå ê ëàáîðàòîðíîé ðàáîòå.
1. Îñíîâíûå ïîëîæåíèÿ ïðîãðàììèðîâàíèÿ íà Ëèñïå.
Ëèñï îðèåíòèðîâàí íà îáðàáîòêó íå÷èñëîâûõ çàäà÷. Îí îñíîâàí íà àëãåáðå ñïèñî÷íûõ ñòðóêòóð, ëÿìáäà-èñ÷èñëåíèè è òåîðèè ðåêóðñèé.
ßçûê èìååò ôóíêöèîíàëüíóþ íàïðàâëåííîñòü, ò. å. ëþáîå ïðåäëîæåíèå çàêëþ÷åííîå â ñêîáêè, ââåäåííîå âíå ðåäàêòîðà ñ÷èòàåòñÿ ôóíêöèåé è âûïîëíÿåòñÿ ñðàçó ïîñëå íàæàòèÿ «ENTER».
×òîáû ïðåäîòâðàòèòü âû÷èñëåíèå çíà÷åíèÿ âûðàæåíèÿ, íóæíî ïåðåä ýòèì âûðàæåíèåì ïîñòàâèòü àïîñòðîô «’». Àïîñòðîô ïåðåä âûðàæåíèåì - ýòî íà ñàìîì äåëå ñîêðàùåíèå ëèñïîâñêîé ôóíêöèè QUOTE.
 Ëèñïå ôîðìû ïðåäñòàâëåíèÿ ïðîãðàììû è îáðàáàòûâàåìûõ åþ äàííûõ îäèíàêîâû. È òî è äðóãîå ïðåäñòàâëÿåòñÿ ñïèñî÷íîé ñòðóêòóðîé èìåþùåé îäèíàêîâóþ ôîðìó.
Òèïû äàííûõ íå ñâÿçàíû ñ èìåíàìè îáúåêòîâ äàííûõ, à ñîïðîâîæäàþò ñàìè îáúåêòû. Ïåðåìåííûå ìîãóò â ðàçëè÷íûå ìîìåíòû âðåìåíè ïðåäñòàâëÿòü ðàçëè÷íûå îáúåêòû.
Îñíîâíûå òèïû äàííûõ ÿçûêà - àòîìû è ñïèñêè.
Àòîìû - ýòî ñèìâîëû è ÷èñëà.
Ñïèñîê - óïîðÿäî÷åííàÿ ïîñëåäîâàòåëüíîñòü, ýëåìåíòàìè êîòîðîé ÿâëÿþòñÿ àòîìû ëèáî ñïèñêè. Ñïèñêè çàêëþ÷àþòñÿ â êðóãëûå ñêîáêè, ýëåìåíòû ñïèñêà ðàçäåëÿþòñÿ ïðîáåëàìè. Íåñêîëüêî ïðîáåëîâ ìåæäó ñèìâîëàìè ýêâèâàëåíòíû îäíîìó ïðîáåëó. Ïåðâûé ýëåìåíò ñïèñêà íàçûâàåòñÿ «ãîëîâîé», à îñòàòîê , ò. å. ñïèñîê áåç ïåðâîãî ýëåìåíòà, íàçûâàåòñÿ «õâîñòîì. Ñïèñîê â êîòîðîì íåò íè îäíîãî ýëåìåíòà, íàçûâàåòñÿ ïóñòûì è îáîçíà÷àåòñÿ «()» ëèáî NIL.
Ñèìâîë - ýòî èìÿ, ñîñòîÿùåå èç áóêâ, öèôð è ñïåöèàëüíûõ çíàêîâ, êîòîðîå îáîçíà÷àåò êàêîé-íèáóäü ïðåäìåò, îáúåêò, äåéñòâèå.  Ëèñïå ñèìâîëû îáîçíà÷àþò ÷èñëà, äðóãèå ñèìâîëû èëè áîëåå ñëîæíûå ñòðóêòóðû, ïðîãðàììû (ôóíêöèè) è äðóãèå ëèñïîâñêèå îáúåêòû. Ñèìâîëû ìîãóò ñîñòîÿòü êàê èç ïðîïèñíûõ, òàê è èç ñòðî÷íûõ áóêâ, õîòÿ â áîëüøèíñòâå Ëèñï-ñèñòåì, êàê è â îïèñûâàåìîé çäåñü âåðñèè MuLisp, ïðîïèñíûå è ñòðî÷íûå áóêâû îòîæäåñòâëÿþòñÿ è ïðåäñòàâëÿþòñÿ ïðîïèñíûìè áóêâàìè.
Ñèìâîëû T è NIL èìåþò â Ëèñïå ñïåöèàëüíîå íàçíà÷åíèå: T - îáîçíà÷àåò ëîãè÷åñêîå çíà÷åíèå èñòèíà, à NIL - ëîãè÷åñêîå çíà÷åíèå ëîæü.
Ïðè ãåíåðàöèè èëè ñ÷èòûâàíèè MuLispîì íîâîãî ñèìâîëà, çà åãî âåëè÷èíó ïðèíèìàåòñÿ îí ñàì. Òàêàÿ ññûëêà ñèìâîëà íà ñåáÿ íàçûâàåòñÿ àâòîññûëêîé.
Ñîçäàíèå ïðîãðàììû íà Ëèñïå - íàïèñàíèå íåêîòîðîé ôóíêöèè, âîçìîæíî ñëîæíîé, ïðè âû÷èñëåíèè èñïîëüçóþùåé äðóãèå ôóíêöèè ëèáî ðåêóðñèâíî ñàìó ñåáÿ. Íà ïðàêòèêå, íàïèñàíèå ïðîãðàìì îñóùåñòâëÿåòñÿ çàïèñüþ â ôàéë îïðåäåëåíèé ôóíêöèé, äàííûõ è äðóãèõ îáúåêòîâ ñ ïîìîùüþ èìåþùåãîñÿ â ïðîãðàììíîì îêðóæåíèè ðåäàêòîðà. Ôàéëó ïðèñâàèâàåòñÿ ðàñøèðåíèå LSP.
Íåîáÿçàòåëüíî äåëàòü îòñòóïû â ñòðîêàõ âûðàæåíèé, âõîäÿùèõ â âàøè ôóíêöèè. Íà ñàìîì äåëå, ïî æåëàíèþ, âû ìîæåòå íàïèñàòü âñþ ïðîãðàììó â îäíó ñòðîêó. Îäíàêî îòñòóïû â ñòðîêàõ è ïóñòûå ñòðîêè äåëàþò ñòðóêòóðó ïðîãðàììû ïîíÿòíåé è áîëåå ÷èòàáåëüíåé. Òàê æå âûðàâíèâàíèå íà÷àëüíûõ è êîíå÷íûõ ñêîáîê îñíîâíûõ âûðàæåíèé ïîìîãàþò óáåäèòüñÿ â áàëàíñå âàøèõ ñêîáîê.
Îïðåäåëåíèÿ ôóíêöèé ìîãóò õðàíèòüñÿ â ôàéëàõ è çàãðóæàòüñÿ èñïîëüçóÿ ôóíêöèþ LOAD:
(load <èìÿ ôàéëà>)
Ýòà ôóíêöèÿ çàãðóæàåò ôàéë âûðàæåíèé è âûïîëíÿåò ýòè âûðàæåíèÿ. <Èìÿ ôàéëà> - ýòî ñòðîêîâàÿ êîíñòàíòà, êîòîðàÿ ïðåäñòàâëÿåò ñîáîé èìÿ ôàéëà áåç ðàñøèðåíèÿ (ïîäðàçóìåâàåòñÿ ðàñøèðåíèå ".lsp"). Åñëè îïåðàöèÿ óñïåøíî çàâåðøåíà, LOAD âîçâðàùàåò èìÿ ïîñëåäíåé ôóíêöèè, îïðåäåëåííîé â ôàéëå. Åñëè îïåðàöèÿ íå âûïîëíåíà, LOAD âîçâðàùàåò èìÿ ôàéëà â âèäå ñòðîêîâîãî âûðàæåíèÿ.
Ôóíêöèÿ LOAD íå ìîæåò âûçûâàòüñÿ èç äðóãîé ôóíêöèè LISP. Îíà äîëæíà âûçûâàòüñÿ íåïîñðåäñòâåííî ñ êëàâèàòóðû, â òî âðåìÿ êàê íè îäíà äðóãàÿ ôóíêöèÿ LISP íå íàõîäèòñÿ â ïðîöåññå âûïîëíåíèÿ.
Èíòåðïðåòàòîð ñ÷èòàåò ôàéëàìè, ñîäåðæàùèìè èñõîäíûå òåêñòû ïðîãðàìì íà Ëèñïå, âñå ôàéëû, èìåþùèå ðàñøèðåíèå LSP.
 ñâÿçè ñ òåì, ÷òî äèàëåêò MuLisp âêëþ÷àåò â ñåáÿ ñðàâíèòåëüíî íåáîëüøîé íàáîð áàçîâûõ ôóíêöèé, óêàçàííàÿ Ëèñï-ñèñòåìà îáåñïå÷èâàåòñÿ áèáëèîòåêàìè Ëèñï-ôóíêöèé, äîïîëíÿþùèìè áàçîâûé íàáîð ôóíêöèÿìè, èìåþùèìèñÿ â Common Lisp-å è äðóãèõ äèàëåêòàõ(Common.lsp, Array.lsp è ò. ä. ...).
2. Çàãðóçêà ñèñòåìû. Ñèñòåìíûé ðåäàêòîð.
Çàïóñê ñèñòåìû MuLisp ñ ðàñøèðåíèåì Common.lsp îñóùåñòâëÿåòñÿ êîìàíäîé:
MuLisp87.com Common.lsp.
Ïîñëå íåñêîëüêèõ ñåêóíä çàãðóçêè íà ýêðàíå äèñïëåÿ ïîÿâèòñÿ ñîîáùåíèå:
MuLisp-87 IBM PC MS-DOS Version 6.01 (11/05/87)
(C ) Copyright SoftWarehouse, Inc., 1983, 1985, 1986, 1987.
All rights Reserved Worldwide.
; Loading C:Common.lsp
Ïîñëå ÷åãî ïîÿâèòñÿ çíàê $, îçíà÷àþùèé ïðèãëàøåíèå ñèñòåìû ê ðàáîòå. Äëÿ çàãðóçêè ñèñòåìíîãî ðåäàêòîðà íåîáõîäèìî íàáðàòü ñëåäóþùóþ êîìàíäó:
(LOAD edit.lsp)
Ñèñòåìíûé ðåäàêòîð íà÷èíàåò ðàáîòàòü. Îí ÷èñòèò ýêðàí ðèñóåò ðàìêó è âûäàåò íà ýêðàí ñâîå ìåíþ:
Alpha, Block, Delete, Jump, List, Options, Print, Quit, Replace, Search, Transfer, Undelete è Window.
Çàòåì ñèñòåìà æäåò, ïîêà ïîëüçîâàòåëü íå âûáåðåò îäíó èç îïöèé. Äëÿ ýòîãî íåîáõîäèìî óñòàíîâèòü êóðñîð íà âûáðàííîé îïöèè è íàæàòü êëàâèøó «Enter». Ïåðåõîä îò îäíîé îïöèè ê äðóãîé ïðîèçâîäèòñÿ ñ ïîìîùüþ êëàâèøè «Tab».
Alpha: âêëþ÷åíèå ðåæèìà ðåäàêòèðîâàíèÿ.
Block: ðàáîòà ñ áëîêîì. Âûäåëåíèå, êîïèðîâàíèå, óäàëåíèå, ïåðåíîñ è äð.
Delete: óäàëåíèå áëîêà, ñèìâîëà, ñëîâà, ñòðîêè.
Jump: ïåðåõîä â íà÷àëî èëè êîíåö òåêñòà ïðîãðàììû, ââåðõ-âíèç ñòðàíèöû.
List: ðàáîòà ñî ñïèñêîì. Óäàëåíèå, ïåðåõîä ê ïðåäûäóùåìó, ïîñëåäóþùåìó.
Options: ðàáîòà ñ öâåòàìè, ìîíèòîðîì, çâóêîì.
Print: ïå÷àòü òåêñòà ïðîãðàììû.
Quit: âûõîä èç ñèñòåìû.
Replace: èçìåíåíèå ñòðîêè.
Search: ïîèñê ñòðîêè. Ïðè÷åì ñòðî÷íûå è ïðîïèñíûå áóêâû ðàçëè÷àþòñÿ.
Transfer: ðàáîòà ñ ôàéëàìè. Çàïèñü, íàõîæäåíèå, îáúåäèíåíèå, óäàëåíèå.
Undelete: âîññòàíîâëåíèå.
Window: ðàáîòà ñ îêíàìè. Îòêðûòü, çàêðûòü, ïåðåéòè ê äðóãîìó è ò. ä.
3. Áàçîâûå ôóíêöèè ÿçûêà.
Ôóíêöèè ðàçáîðà.
Ôóíêöèÿ CAR âîçâðàùàåò â êà÷åñòâå çíà÷åíèÿ ïåðâûé ýëåìåíò ñïèñêà.
(CAR ñïèñîê) ð S - âûðàæåíèå (àòîì ëèáî ñïèñîê).
_(CAR ‘(a b c d)) ð a
_(CAR ‘((a b) c d)) ð (a b)
_(CAR ‘(a)) ð a
_(CAR NIL) ð NIL «Ãîëîâà ïóñòîãî ñïèñêà - ïóñòîé ñïèñîê.»
Âûçîâ ôóíêöèè CAR ñ àðãóìåíòîì (a b c d) áåç àïîñòðîôà áûë áû ïðîèíòåðïðåòèðîâàí êàê âûçîâ ôóíêöèè «a» ñ àðãóìåíòîì «b c d», è áûëî áû ïîëó÷åíî ñîîáùåíèå îá îøèáêå.
Ôóíêöèÿ CAR èìååò ñìûñë òîëüêî äëÿ àðãóìåíòîâ, ÿâëÿþùèõñÿ ñïèñêàìè.
(CAR ‘a) ð Error
Ôóíêöèÿ CDR - âîçâðàùàåò â êà÷åñòâå çíà÷åíèÿ õâîñòîâóþ ÷àñòü ñïèñêà, ò. å. ñïèñîê, ïîëó÷àåìûé èç èñõîäíîãî ñïèñêà ïîñëå óäàëåíèÿ èç íåãî ãîëîâíîãî ýëåìåíòà:
(CDR ñïèñîê) ð ñïèñîê
Ôóíêöèÿ CDR îïðåäåëåíà òîëüêî äëÿ ñïèñêîâ.
_(CDR ‘(a b c d)) ð (b c d)
_(CDR ‘((a b) c d)) ð (c d)
_(CDR ‘(a (b c d))) ð ((b c d))
_(CDR ‘(a)) ð NIL
_(CDR NIL) ð NIL
_(CDR ‘a) ð Error
Ôóíêöèÿ ñîçäàíèÿ CONS.
Ôóíêöèÿ CONS ñòðîèò íîâûé ñïèñîê èç ïåðåäàííûõ åé â êà÷åñòâå àðãóìåíòîâ ãîëîâû è õâîñòà.
(CONS ãîëîâà õâîñò)
Äëÿ òîãî ÷òîáû ìîæíî áûëî âêëþ÷èòü ïåðâûé ýëåìåíò ôóíêöèè CONS â êà÷åñòâå ïåðâîãî ýëåìåíòà çíà÷åíèÿ âòîðîãî àðãóìåíòà ýòîé ôóíêöèè, âòîðîé àðãóìåíò äîëæåí áûòü ñïèñêîì. Çíà÷åíèåì ôóíêöèè CONS âñåãäà áóäåò ñïèñîê:
(CONS s-âûðàæåíèå ñïèñîê) ð ñïèñîê
_(CONS ‘a ‘(b c)) ð (a b c)
_(CONS ‘(a b) ‘(c d)) ð ((a b) c d)
_(CONS (+ 1 2) ‘(+ 3)) ð (3 + 3)
_(CONS ‘(a b c) NIL) ð ((a b c))
_(CONS NIL ‘(a b c)) ð (NIL a b c)
Ïðåäèêàòû ATOM, EQ, EQL, EQUAL.
Ïðåäèêàò - ôóíêöèÿ, êîòîðàÿ îïðåäåëÿåò, îáëàäàåò ëè àðãóìåíò îïðåäåëåííûì ñâîéñòâîì, è âîçâðàùàåò â êà÷åñòâå çíà÷åíèÿ NIL èëè T.
Ïðåäèêàò ATOM - ïðîâåðÿåò, ÿâëÿåòñÿ ëè àðãóìåíò àòîìîì:
(ATOM s - âûðàæåíèå)
Çíà÷åíèåì âûçîâà ATOM áóäåò T, åñëè àðãóìåíòîì ÿâëÿåòñÿ àòîì, è NIL - â ïðîòèâíîì ñëó÷àå.
_(ATOM ‘a) ð T
_(ATOM ‘(a b c)) ð NIL
_(ATOM NIL) ð T
_(ATOM ‘(NIL)) ð NIL
Ïðåäèêàò EQ ñðàâíèâàåò äâà ñèìâîëà è âîçâðàùàåò çíà÷åíèå T, åñëè îíè èäåíòè÷íû, â ïðîòèâíîì ñëó÷àå - NIL. Ñ ïîìîùüþ EQ ñðàâíèâàþò òîëüêî ñèìâîëû èëè êîíñòàíòû T è NIL.
_(EQ ‘a ‘b) ð NIL
_(EQ ‘a (CAR ‘(a b c))) ð T
_(EQ NIL ()) ð T
Ïðåäèêàò EQL ðàáîòàåò òàê æå êàê è EQ, íî äîïîëíèòåëüíî ïîçâîëÿåò ñðàâíèâàòü îäíîòèïíûå ÷èñëà.
_(EQL 2 2) ð T
_(EQL 2.0 2.0) ð T
_(EQL 2 2.0) ð NIL
Äëÿ ñðàâíåíèÿ ÷èñåë ðàçëè÷íûõ òèïîâ èñïîëüçóþò ïðåäèêàò «=». Çíà÷åíèåì ïðåäèêàòà «=» ÿâëÿåòñÿ T â ñëó÷àå ðàâåíñòâà ÷èñåë íåçàâèñèìî îò èõ òèïîâ è âíåøíåãî âèäà çàïèñè.
(= 2 2.0) ð T
Ïðåäèêàò EQUAL ïðîâåðÿåò èäåíòè÷íîñòü çàïèñåé. Îí ðàáîòàåò êàê EQL , íî äîïîëíèòåëüíî ïðîâåðÿåò îäèíàêîâîñòü äâóõ ñïèñêîâ. Åñëè âíåøíÿÿ ñòðóêòóðà äâóõ ëèñïîâñêèõ îáúåêòîâ îäèíàêîâà, òî ðåçóëüòàòîì EQUAL áóäåò T.
_(EQUAL ‘a ‘a) ð T
_(EQUAL ‘(a b c) ‘(a b c)) ð T
_(EQUAL ‘(a b c) ‘(CONS ‘a ‘(b c))) ð T
_(EQUAL 1.0 1) ð NIL
Ôóíêöèÿ NULL ïðîâåðÿåò íà ïóñòîé ñïèñîê.
_(NULL ‘()) ð T
Âëîæåííûå âûçîâû CAR è CDR.
Êîìáèíàöèè âûçîâîâ CAR è CDR îáðàçóþò óõîäÿùèå â ãëóáèíó ñïèñêà îáðàùåíèÿ, â Ëèñïå äëÿ ýòîãî èñïîëüçóåòñÿ áîëåå êîðîòêàÿ çàïèñü. Æåëàåìóþ êîìáèíàöèþ âûçîâîâ CAR è CDR ìîæíî çàïèñàòü â âèäå îäíîãî âûçîâà ôóíêöèè:
(C...R ñïèñîê )
Âìåñòî ìíîãîòî÷èÿ çàïèñûâàåòñÿ íóæíàÿ êîìáèíàöèÿ èç áóêâ A è D (äëÿ CAR è CDR ñîîòâåòñòâåííî).  îäèí âûçîâ ìîæíî îáúåäèíÿòü íå áîëåå ÷åòûðåõ ôóíêöèé CAR è CDR.
(CADAR x) ó (CAR (CDR (CAR x)))
_(CDDAR ‘((a b c d) e)) ð (c d)
_(CDDR ‘(k l m)) ð (M)
Ôóíêöèÿ LIST - ñîçäàåò ñïèñîê èç ýëåìåíòîâ. Îíà âîçâðàùàåò â êà÷åñòâå ñâîåãî çíà÷åíèÿ ñïèñîê èç çíà÷åíèé àðãóìåíòîâ. Êîëè÷åñòâî àðãóìåíòîâ ïðîèçâîëüíî.
_(LIST ‘a ‘b ‘c) ð (a b c)
_(LIST ‘a ‘b (+ 1 2)) ð (a b 3)
4. Ñèìâîëû, ñâîéñòâà ñèìâîëîâ.
Ôóíêöèè ïðèñâàèâàíèÿ: SET, SETQ, SETF.
Ôóíêöèÿ SET - ïðèñâàèâàåò ñèìâîëó èëè ñâÿçûâàåò ñ íèì íåêîòîðîå çíà÷åíèå. Ïðè÷åì îíà âû÷èñëÿåò îáà ñâîèõ àðãóìåíòà. Óñòàíîâëåííàÿ ñâÿçü äåéñòâèòåëüíà äî êîíöà ðàáîòû, åñëè ýòîìó èìåíè íå áóäåò ïðèñâîåíî íîâîå çíà÷åíèå ôóíêöèåé SET.
_(SET ‘a ‘(b c d)) ð (b c d)
_a ð(b c d)
_(SET (CAR a) (CDR (o f g)) ð (f g)
_a ð (b c d)
_(CAR a) ð b
_b ð (f g)
Çíà÷åíèå ñèìâîëà âû÷èñëÿåòñÿ ñ ïîìîùüþ ñïåöèàëüíîé ôóíêöèè Symbol-value, êîòîðàÿ âîçâðàùàåò â êà÷åñòâå çíà÷åíèÿ çíà÷åíèå ñâîåãî àðãóìåíòà.
_(Symbol-value (CAR a)) ð (f g)
Ôóíêöèÿ SETQ - ñâÿçûâàåò èìÿ, íå âû÷èñëÿÿ åãî. Ýòà ôóíêöèÿ îòëè÷àåòñÿ îò SET òåì, ÷òî âû÷èñëÿåò òîëüêî âòîðîé àðãóìåíò.
_(SETQ d ‘(l m n)) ð (l m n)
Ôóíêöèÿ SETF - îáîáùåííàÿ ôóíêöèÿ ïðèñâàèâàíèÿ. SETF èñïîëüçóåòñÿ äëÿ çàíåñåíèÿ çíà÷åíèÿ â ÿ÷åéêó ïàìÿòè.
( SETF ÿ÷åéêà-ïàìÿòè çíà÷åíèå)
_(SETF ÿ÷åéêà ‘(a b c)) ð (a b c)
_ ÿ÷åéêà ð (a b c)
Ïåðåìåííàÿ «ÿ÷åéêà» áåç àïîñòðîôà óêàçûâàåò íà ÿ÷åéêó ïàìÿòè, êóäà ïîìåùàåòñÿ â êà÷åñòâå çíà÷åíèÿ ñïèñîê (a b c).
Ñâîéñòâà ñèìâîëà.
 Ëèñïå ñ ñèìâîëîì ìîæíî ñâÿçàòü èìåíîâàííûå ñâîéñòâà. Ñâîéñòâà ñèìâîëà çàïèñûâàþòñÿ â õðàíèìûé âìåñòå ñ ñèìâîëîì ñïèñîê ñâîéñòâ. Ñâîéñòâî èìååò èìÿ è çíà÷åíèå. Ñïèñîê ñâîéñòâ ìîæåò áûòü ïóñò. Åãî ìîæíî èçìåíÿòü èëè óäàëÿòü áåç îãðàíè÷åíèé.
(èìÿ1 çíà÷1 èìÿ2 çíà÷2 ... èìÿN çíà÷N )
Ïóñòü èìÿ ñòóäåíò èìååò ñëåäóþùèé ñïèñîê ñâîéñòâ:
(èìÿ Èâàí îò÷åñòâî Èâàíîâè÷ ôàìèëèÿ Èâàíîâ)
Ôóíêöèÿ GET - âîçâðàùàåò çíà÷åíèå ñâîéñòâà, ñâÿçàííîãî ñ ñèìâîëîì.
(GET ñèìâîë ñâîéñòâî )
Ïðè îòñóòñòâèè ñâîéñòâà ôóíêöèÿ GET âîçâðàùàåò NIL â êà÷åñòâå îòâåòà.
_(GET ‘ñòóäåíò ‘èìÿ) ð Èâàí
_(GET ‘ñòóäåíò ‘ãðóïïà) ð NIL
Ïðèñâàèâàíèå è óäàëåíèå ñâîéñòâ.
Äëÿ ïðèñâàèâàíèÿ ñèìâîëó ñâîéñòâ â MuLisp (êàê è â Common Lisp) îòäåëüíîé ôóíêöèè íåò. Äëÿ ýòîãî èñïîëüçóþòñÿ óæå èçâåñòíûå íàì ôóíêöèè:
(SETF (GET ñèìâîë ñâîéñòâî) çíà÷åíèå)
_(SETF (GET ‘ñòóäåíò ’ãðóïïà) ’ÐÂ-90-1) ð ÐÂ-90-1
_(GET ‘ñòóäåíò ’ãðóïïà) ð ÐÂ-90-1
Óäàëåíèå ñâîéñòâà è åãî çíà÷åíèÿ îñóùåñòâëÿåòñÿ ïñåâäîôóíêöèåé REMPROP:
Ýòà ôóíêöèÿ âîçâðàùàåò â êà÷åñòâå çíà÷åíèÿ èìÿ óäàëÿåìîãî ñâîéñòâà. Åñëè óäàëÿåìîãî ñâîéñòâà íåò, òî âîçâðàùàåòñÿ NIL.
(REMPROP ñèìâîë ñâîéñòâî)
_(REMPROP ‘ñòóäåíò ’ãðóïïà) ð ãðóïïà
_(GET ‘ñòóäåíò ’ãðóïïà) ð NIL
_(REMPROP ‘ñòóäåíò ’ñð_áàë) ð NIL
Äëÿ ïðîñìîòðà âñåãî ñïèñêà ñâîéñòâ èñïîëüçóþò ôóíêöèþ SYMBOL-PLIST. Çíà÷åíèåì ôóíêöèè ÿâëÿåòñÿ âåñü ñïèñîê ñâîéñòâ.
(SYMBOL-PLIST ‘ÑÈÌÂÎË)
(SYMBOL-PLIST ‘ñòóäåíò) ð (èìÿ Èâàí îò÷åñòâî Èâàíîâè÷ ôàìèëèÿ Èâàíîâ)
Ñâîéñòâà ñèìâîëîâ íåçàâèñèìî îò èõ çíà÷åíèé äîñòóïíû èç âñåõ êîíòåêñòîâ ïîêà íå áóäóò ÿâíî èçìåíåíû èëè óäàëåíû. Èçìåíåíèå çíà÷åíèÿ ñèìâîëà íå âëèÿåò íà äðóãèå ñâîéñòâà. Ñâîéñòâà ñèìâîëà ïåðåäàþòñÿ äðóãîìó ñèìâîëó ñ ïîìîùüþ ôóíêöèè SETQ.
5. Ñðåäñòâà ÿçûêà äëÿ ðàáîòû ñ ÷èñëàìè. (Ìàòåìàòè÷åñêèå è ëîãè÷åñêèå ôóíêöèè).
 ÿçûêå Ëèñï êàê äëÿ âûçîâà ôóíêöèé, òàê è äëÿ çàïèñè âûðàæåíèÿ ïðèíÿòà åäèíîîáðàçíàÿ ïðåôèêñíàÿ ôîðìà çàïèñè, ïðè êîòîðîé êàê èìÿ ôóíêöèè èëè äåéñòâèÿ, òàê è ñàìè àðãóìåíòû çàïèñûâàþòñÿ âíóòðè ñêîáîê:
(f x), (g x y), (h x (g y z)) è ò. ä.
Àðèôìåòè÷åñêèå äåéñòâèÿ:
(+ ÷èñëà) - ñëîæåíèå ÷èñåë
(- ÷èñëî ÷èñëà) - âû÷èòàíèå ÷èñåë èç ÷èñëà
(* ÷èñëà) - óìíîæåíèå ÷èñåë
è ò. ä.
_(+ 5 7 4) ð 16
_(- 10 3 4 1) ð 2
_(/ 15 3) ð 5
Ñðàâíåíèå ÷èñåë:
(= ÷èñëî ÷èñëà) ð ðàâíû (âñå)
(< ÷èñëî ÷èñëà) ð ìåíüøå (äëÿ âñåõ)
(> ÷èñëî ÷èñëà) ð áîëüøå (äëÿ âñåõ)
è ò. ä.
×èñëîâûå ïðåäèêàòû:
(ZEROP ÷èñëî) ð ïðîâåðêà íà íîëü
(MINUSP ÷èñëî) ð ïðîâåðêà íà îòðèöàòåëüíîñòü
è ò. ä.
Ëîãè÷åñêèå äåéñòâèÿ:
(NOT îáúåêò) ð ëîãè÷åñêîå îòðèöàíèå
(AND (ôîðìû)) ð ëîãè÷åñêîå È
(OR (ôîðìû)) ð ëîãè÷åñêîå ÈËÈ
_(AND (ATOM NIL) (NULL NIL) (EQ NIL NIL)) ð T
_( NOT (NULL NIL)) ð NIL
Êðîìå ïðèâåäåííûõ, ñóùåñòâóåò ìíîæåñòâî äðóãèõ, íî íå ìåíåå ïîëåçíûõ ôóíêöèé.
6. Çàäàíèå ê ëàáîðàòîðíîé ðàáîòå.
1. Çàïèøèòå ïîñëåäîâàòåëüíîñòè âûçîâîâ CAR è CDR, âûäåëÿþùèå èç ïðèâåäåííûõ íèæå ñïèñêîâ ñèìâîë «à». Óïðîñòèòå ýòè âûçîâû ñ ïîìîùüþ ôóíêöèé C...R.
à) (1 2 3 à 4)
á) (1 2 3 4 à)
â) ((1) (2 3) (à 4))
ã) ((1) ((2 3 à) (4)))
ä) ((1) ((2 3 à 4)))
å) (1 (2 ((3 4 (5 (6 à))))))
2. Êàêîâî çíà÷åíèå êàæäîãî èç ñëåäóþùèõ âûðàæåíèé:
(ATOM (CAR (QUOTE ((1 2) 3 4))));
(NULL (CDDR (QUOTE ((5 6) (7 8)))));
(EQUAL (CAR (QUOTE ((7 )))) (CDR (QUOTE (5 7))));
(ZEROP (CADDDR (QUOTE (3 2 1 0))));
3. Ïðîäåëàéòå ñëåäóþùèå âû÷èñëåíèÿ ñ ïîìîùüþ èíòåðïðåòàòîðà Ëèñïà:
à) 3.234*(45.6+2.43)
á) 55+21.3+1.54*2.5432-32
â) (34-21.5676-43)/(342+32*4.1)
4. Îïðåäåëèòå çíà÷åíèÿ ñëåäóþùèõ âûðàæåíèé:
à) ‘(+ 2 (* 3 5))
á) (+ 2 ‘(* 3 5))
â) (+ 2 (’ * 3 5))
ã) (+ 2 (* 3 ’5))
ä) (quote ‘quote)
å) (quote 6)
5.1 Ñîñòàâüòå ñïèñîê ñòóäåíòîâ ñâîåé ãðóïïû
(ÔÈÎ ÔÈÎ ... ÔÈÎ)
5.2 Äëÿ êàæäîãî ñòóäåíòà
à) ñ ïîìîùüþ ôóíêöèè LIST ñîñòàâüòå ñëåäóþùèå ñïèñêè:
Äëÿ ñàìîãî ñòóäåíòà - (äàòà ðîæäåíèÿ), (àäðåñ), (ñðåäíèé áàë ïî ëåêöèîííûì çàíÿòèÿì), (ñðåäíèé áàë ïî ïðàêòè÷åñêèì çàíÿòèÿì), (ñðåäíèé áàë ïî ëàáîðàòîðíûì ðàáîòàì). Äëÿ îòöà è ìàòåðè - (ÔÈÎ), (äàòà ðîæäåíèÿ), (àäðåñ), (ìåñòî ðàáîòû).
á) ñ ïîìîùüþ ôóíêöèé CONS è SETQ îáúåäèíèòå ïîëó÷åííûå ñïèñêè è ïðèñâîéòå èõ â âèäå çíà÷åíèé ñèìâîëàì, îçíà÷àþùèì ÔÈÎ êàæäîãî ñòóäåíòà:
ÔÈÎ ñò. - (((äàòà ðîæäåíèÿ ñò.) (àäðåñ ñò.)((ñð. áàë(äî äåñÿòûõ) ïî ëåêöèîííûì çàíÿòèÿì) (ñð. áàë ïî ïðàêòè÷åñêèì çàíÿòèÿì) (ñð. áàë ïî ëàáîðàòîðíûì ðàáîòàì))) (((ÔÈÎ îòöà) (äàòà ðîæäåíèÿ îòöà) (àäðåñ) (ìåñòî ðàáîòû îòöà)) ((ÔÈÎ ìàòåðè) (äàòà ðîæäåíèÿ ìàòåðè) (àäðåñ) (ìåñòî ðàáîòû ìàòåðè)))).
5.3 Äëÿ ïðîèçâîëüíî âûáðàííûõ ñòóäåíòîâ ñ ïîìîùüþ áàçîâûõ ôóíêöèé ñðàâíèòå:
à) ãîä ðîæäåíèÿ;
á) óñïåâàåìîñòü (ñ ó÷åòîì òîãî, ÷òî ÷èñëî, õàðàêòåðèçóþùåå ñðåäíèé áàë, ìîæåò áûòü êàê öåëûì, òàê è äðîáíûì );
â) âûÿñíèòå, íå ÿâëÿþòñÿ ëè îíè ðîäñòâåííèêàìè;
ã) âûÿñíèòå, æèâóò ëè îíè ñ ðîäèòåëÿìè.
6.1 Äëÿ êàæäîãî ñòóäåíòà ñîñòàâüòå ñïèñêè ñâîéñòâ
à) îöåíêè ïî ëåêöèÿì;
á) îöåíêè ïî ïðàêòèêàì;
â) îöåíêè ïî ëàáîðàòîðíûì ðàáîòàì.
6.2 Äëÿ ïðîèçâîëüíî âûáðàííûõ ñòóäåíòîâ ñðàâíèòü ñâîéñòâà.
7. Âîïðîñû.
1 Ïåðå÷èñëèòå áàçîâûå ôóíêöèè.
2 Êàêîâû òèïû àðãóìåíòîâ áàçîâûõ ôóíêöèé?
3 Êàêèå çíà÷åíèÿ îíè âîçâðàùàþò?
4 ×òî òàêîå ïðåäèêàò?
5 Íàçîâèòå îñíîâíûå îòëè÷èÿ ïðåäèêàòîâ EQ, EQL, EQUAL è =.
6 Íàçîâèòå îòëè÷èÿ ôóíêöèé CONS è LIST.
7 ×òî òàêîå ñèìâîë?
8 Ðàçëè÷èÿ ôóíêöèé SET, SETQ, SETF?
9 Îñîáåííîñòè ñâîéñòâ ñèìâîëîâ?
Ëàáîðàòîðíàÿ ðàáîòà ¹2.
Òåìà: Îïðåäåëåíèå ôóíêöèé. Ôóíêöèè ââîäà-âûâîäà. Âû÷èñëåíèÿ, èçìåíÿþùèå ñòðóêòóðó.
Öåëü: Ïîëó÷èòü íàâûêè â íàïèñàíèè ôóíêöèé. Èçó÷èòü ôóíêöèè ââîäà-âûâîäà.
Ôóíêöèè, îïðåäåëÿåìûå ïîëüçîâàòåëåì.
Ôóíêöèÿ ââîäà.
Ôóíêöèè âûâîäà.
Âû÷èñëåíèÿ, èçìåíÿþùèå ñòðóêòóðó.
Çàäàíèå ê ëàáîðàòîðíîé ðàáîòå.
1. Ôóíêöèè, îïðåäåëÿåìûå ïîëüçîâàòåëåì.
Îïðåäåëåíèå ôóíêöèé è èõ âû÷èñëåíèå â Ëèñïå îñíîâàíî íà ëÿìáäà-èñ÷èñëåíèè ×åð÷à.
 Ëèñïå ëÿìáäà-âûðàæåíèå èìååò âèä
(LAMBDA (x1 x2 ... xn) fn)
Ñèìâîë LAMBDA îçíà÷àåò, ÷òî ìû èìååì äåëî ñ îïðåäåëåíèåì ôóíêöèè. Ñèìâîëû xi ÿâëÿþòñÿ ôîðìàëüíûìè ïàðàìåòðàìè îïðåäåëåíèÿ, êîòîðûå èìåþò àðãóìåíòû â îïèñûâàþùåì âû÷èñëåíèÿ òåëå ôóíêöèè fn. Âõîäÿùèé â ñîñòàâ ôîðìû ñïèñîê, îáðàçîâàííûé èç ïàðàìåòðîâ, íàçûâàþò ëÿìáäà-ñïèñêîì.
Òåëîì ôóíêöèè ÿâëÿåòñÿ ïðîèçâîëüíàÿ ôîðìà, çíà÷åíèå êîòîðîé ìîæåò âû÷èñëèòü èíòåðïðåòàòîð Ëèñïà.
_(lambda (x y) (+ x y))
Ôîðìàëüíîñòü ïàðàìåòðîâ îçíà÷àåò, ÷òî èõ ìîæíî çàìåíèòü íà ëþáûå äðóãèå ñèìâîëû, è ýòî íå îòðàçèòñÿ íà âû÷èñëåíèÿõ, îïðåäåëÿåìûõ ôóíêöèåé.
Ëÿìáäà-âûðàæåíèå - ýòî îïðåäåëåíèå âû÷èñëåíèé è ïàðàìåòðîâ ôóíêöèè â ÷èñòîì âèäå áåç ôàêòè÷åñêèõ ïàðàìåòðîâ, èëè àðãóìåíòîâ. Äëÿ òîãî, ÷òîáû ïðèìåíèòü òàêóþ ôóíêöèþ ê íåêîòîðûì àðãóìåíòàì, íóæíî â âûçîâå ôóíêöèè ïîñòàâèòü ëÿìáäà-îïðåäåëåíèå íà ìåñòî èìåíè ôóíêöèè:
(ëÿìáäà-âûðàæåíèå à1 à2 ... àn)
Çäåñü ai - ôîðìû, çàäàþùèå ôàêòè÷åñêèå ïàðàìåòðû, êîòîðûå âû÷èñëÿþòñÿ êàê îáû÷íî.
_((lambda (x y) (+ x y)) 1 2) ð 3
Ëÿìáäà-âûçîâû ìîæíî ñâîáîäíî îáúåäèíÿòü ìåæäó ñîáîé è äðóãèìè ôîðìàìè. Âëîæåííûå ëÿìáäà-âûçîâû ìîæíî ñòàâèòü êàê íà ìåñòî òåëà ëÿìáäà-âûðàæåíèÿ, òàê è íà ìåñòî ôàêòè÷åñêèõ ïàðàìåòðîâ.
_((lambda (x) ;Òåëî ëÿìáäà-âûçîâà -
((lambda (y) (list x y)) ‘b)) ‘a) ð (a b) ëÿìáäà-âûçîâ.
Çàïèñûâàòü âûçîâû ôóíêöèé ïîëíîñòüþ ñ ïîìîùüþ ëÿìáäà-âûçîâîâ íå ðàçóìíî, ïîñêîëüêó î÷åíü ñêîðî âûðàæåíèÿ â âûçîâå ïðèøëîñü áû ïîâòîðÿòü, õîòÿ ðàçíûå âûçîâû îäíîé ôóíêöèè îòëè÷àþòñÿ ëèøü â ÷àñòè ôàêòè÷åñêèõ ïàðàìåòðîâ. Ïðîáëåìà ðàçðåøèìà ïóòåì èìåíîâàíèÿ ëÿìáäà-âûðàæåíèé è èñïîëüçîâàíèÿ â âûçîâå ëèøü èìåíè.
Äàòü èìÿ è îïðåäåëèòü íîâóþ ôóíêöèþ ìîæíî ñ ïîìîùüþ ôóíêöèè DEFUN:
(DEFUN èìÿ ëÿìáäà-ñïèñîê òåëî)
DEFUN ñîåäèíÿåò ñèìâîë ñ ëÿìáäà-âûðàæåíèåì, è ñèìâîë íà÷èíàåò ïðåäñòàâëÿòü îïðåäåëåííûå ýòèì ëÿìáäà-âûðàæåíèåì âû÷èñëåíèÿ. Çíà÷åíèåì ýòîé ôîðìû ÿâëÿåòñÿ èìÿ íîâîé ôóíêöèè.
Ïîñëå èìåíîâàíèÿ ôóíêöèè åå âûçîâ îñóùåñòâëÿåòñÿ ïî èìåíè è ïàðàìåòðàì.
_(defun list1 (x y)
(cons x (cons y nil))) ð list1
_(list1 ‘c ‘n) ð (c n)
(eval <âûðàæåíèå>)
Ôóíêöèÿ âîçâðàùàåò ðåçóëüòàò âûðàæåíèÿ <âûðàæåíèå>, ãäå <âûðàæåíèå> - ëþáîå âûðàæåíèå ÿçûêà LISP. Íàïðèìåð, äàíî:
(setq a 123)
(setq b 'a)
(eval 4.0) ð 4.000000
(eval (abs -10)) ð 10
(eval a) ð 123
(eval b) ð 123
2. Ôóíêöèÿ ââîäà.
Ëèñïîâñêàÿ ôóíêöèÿ ÷òåíèÿ READ îáðàáàòûâàåò âûðàæåíèå öåëèêîì. Âûçîâ ôóíêöèè îñóùåñòâëÿåòñÿ â âèäå
(Ââîäèìîå âûðàæåíèå) ð ;âûðàæåíèå ïîëüçîâàòåëÿ
ð (ÂÂÎÄÈÌÎÅ ÂÛÐÀÆÅÍÈÅ) ;çíà÷åíèå ôóíêöèè READ
...
Ôóíêöèÿ íå ïîêàçûâàåò, ÷òî îíà æäåò ââîäà âûðàæåíèÿ. Îíà ëèøü ÷èòàåò âûðàæåíèå è âîçâðàùàåò â êà÷åñòâå çíà÷åíèÿ ñàìî ýòî âûðàæåíèå, ïîñëå ÷åãî âû÷èñëåíèÿ ïðîäîëæàþòñÿ.
Åñëè ïðî÷èòàííîå âûðàæåíèå íåîáõîäèìî ñîõðàíèòü äëÿ äàëüíåéøåãî èñïîëüçîâàíèÿ, òî âûçîâ READ äîëæåí áûòü àðãóìåíòîì êàêîé-íèáóäü ôîðìû, íàïðèìåð ïðèñâàèâàíèÿ (SETQ), êîòîðàÿ ñâÿæåò ïîëó÷åííîå âûðàæåíèå:
_(SETQ input (READ))
(+ 1 2) ;ââåäåííîå âûðàæåíèå
(+ 1 2) ;çíà÷åíèå
_input ð (+1 2)
3. Ôóíêöèè âûâîäà.
Äëÿ âûâîäà âûðàæåíèé èñïîëüçóþò íåñêîëüêî ôóíêöèé: PRINT, PRIN1, PRINC.
Ôóíêöèÿ PRINT.
Ýòî ôóíêöèÿ ñ îäíèì àðãóìåíòîì, êîòîðàÿ ñíà÷àëà âû÷èñëÿåò çíà÷åíèå àðãóìåíòà, à çàòåì âûâîäèò ýòî çíà÷åíèå. Ôóíêöèÿ PRINT ïåðåä âûâîäîì àðãóìåíòà ïåðåõîäèò íà íîâóþ ñòðîêó, à ïîñëå íåãî âûâîäèò ïðîáåë. Òàêèì îáðàçîì, çíà÷åíèå âûâîäèòñÿ âñåãäà íà íîâóþ ñòðîêó.
_(PRINT (+ 1 2))
3 ;âûâîä
3 ;çíà÷åíèå
PRINT ÿâëÿåòñÿ ïñåâäîôóíêöèåé, ó êîòîðîé åñòü êàê ïîáî÷íûé ýôôåêò, òàê è çíà÷åíèå. Çíà÷åíèåì ôóíêöèè ÿâëÿåòñÿ çíà÷åíèå åå àðãóìåíòà, à ïîáî÷íûì ýôôåêòîì - ïå÷àòü ýòîãî çíà÷åíèÿ.
Ôóíêöèè PRIN1 è PRINC.
Ýòè ôóíêöèè ðàáîòàþò òàê æå, êàê PRINT, íî íå ïåðåõîäÿò íà íîâóþ ñòðîêó è íå âûâîäÿò ïðîáåë:
(PRIN1 5) ð 55
(PRINC 4) ð 44
Îáåèìè ôóíêöèÿìè ìîæíî âûâîäèòü êðîìå àòîìîâ è ñïèñêîâ è äðóãèå òèïû äàííûõ êîòîðûå ìû ðàññìîòðèì ïîçæå:
_(PRIN1 «CHG») ð «CHG»«CHG»
_(PRINC «tfd») ð tfd«tfd» ;âûâîä áåç êàâû÷åê,
;ðåçóëüòàò - çíà÷åíèå àðãóìåíòà
Ñ ïîìîùüþ ôóíêöèÿ PRINC ìîæíî ïîëó÷èòü áîëåå ïðèÿòíûé âèä. Îíà âûâîäèò ëèñïîâñêèå îáúåêòû â òîì æå âèäå, êàê è PRIN1, íî ïðåîáðàçóåò íåêîòîðûå òèïû äàííûõ â áîëåå ïðîñòóþ ôîðìó.
Ôóíêöèÿ TERPRI.
Ýòà ôóíêöèÿ ïåðåâîäèò ñòðîêó. Ó ôóíêöèè TERPRI íåò àðãóìåíòîâ è â êà÷åñòâå çíà÷åíèÿ îíà âîçâðàùàåò NIL:
_(DEFUN out (x y)
(PRIN1 x) (PRINC y)
(TERPRI) (PRINC (LIST ‘x ‘y)) ð out
_(out 1 2) ð 12
(1 2)
4. Âû÷èñëåíèÿ, èçìåíÿþùèå ñòðóêòóðó.
Îñíîâíûìè ôóíêöèÿìè, èçìåíÿþùèìè ôèçè÷åñêóþ ñòðóêòóðó ñïèñêîâ, ÿâëÿþòñÿ RPLACA è RPLACD, êîòîðûå óíè÷òîæàþò ïðåæíèå è çàïèñûâàþò íîâûå çíà÷åíèÿ â ïîëÿ CAR è CDR ñïèñî÷íîé ÿ÷åéêè:
(RPLACA ÿ÷åéêà çíà÷åíèå-ïîëÿ) ;ïîëå CAR
(RPLACD ÿ÷åéêà çíà÷åíèå-ïîëÿ) ;ïîëå CDR
Ïåðâûì àðãóìåíòîì ÿâëÿåòñÿ óêàçàòåëü íà ñïèñî÷íóþ ÿ÷åéêó, âòîðûì - çàïèñûâàåìîå â íåå íîâîå çíà÷åíèå ïîëÿ CAR èëè CDR. Îáå ôóíêöèè âîçâðàùàþò â êà÷åñòâå ðåçóëüòàòà óêàçàòåëü íà èçìåíåííóþ ñïèñî÷íóþ ÿ÷åéêó:
_(SETQ a ‘(b c d)) ð (b c d)
_(RPLACA a ‘d) ð (d c d)
_(RPLACD a ‘(o n m)) ð (d o n m)
_a ð (d o n m)
5. Çàäàíèÿ ê ëàáîðàòîðíîé ðàáîòå.
1. Îïðåäåëèòå ñ ïîìîùüþ ëÿìáäà-âûðàæåíèÿ ôóíêöèþ, âû÷èñëÿþùóþ:
+y-x*y;
x*x+y*y;
x*y/(x+y)-5*y;
2. Îïðåäåëèòå ôóíêöèè (NULL x), (CADDR x) è (LIST x1 x2 x3) ñ ïîìîùüþ áàçîâûõ ôóíêöèé. (Èñïîëüçóéòå èìåíà NULL1, CADDR1 è LIST1, ÷òîáû íå ïåðåîïðåäåëÿòü îäíîèìåííûå âñòðîåííûå ôóíêöèè ñèñòåìû.
3. Èñïîëüçóÿ êîìïîçèöèþ, íàïèøèòå ôóíêöèè, êîòîðûå îñóùåñòâëÿþò îáðàùåíèå ñïèñêà èç 2, 3, ... , n ýëåìåíòîâ.
4. Èñïîëüçóÿ êîìïîçèöèþ îïèñàííûõ âûøå ïðåäèêàòîâ è ëîãè÷åñêèõ ñâÿçîê, ïîñòðîéòå ôóíêöèþ, êîòîðàÿ ïðîâåðÿåò, ÿâëÿåòñÿ ëè åå àðãóìåíò:
a) ñïèñêîì èç 2, 3, ... ýëåìåíòîâ;
b)ñïèñêîì èç 2, 3, ... àòîìîâ;
5. Íàïèøèòå ôóíêöèþ:
òàêóþ, ÷òî P(n) äëÿ ïðîèçâîëüíîãî öåëîãî n åñòü ñïèñîê èç òðåõ ýëåìåíòîâ, à èìåííî: êâàäðàòà, êóáà è ÷åòâåðòîé ñòåïåíè ÷èñëà n;
äëÿ äâóõ àðãóìåíòîâ çíà÷åíèåì êîòîðîé ÿâëÿåòñÿ ñïèñîê èç äâóõ ýëåìåíòîâ (ðàçíîñòè è îñòàòêà îò äåëåíèÿ);
òàêóþ, ÷òî A(n) åñòü ñïèñîê (The answer is n). Òàê, çíà÷åíèåì (A 12) áóäåò (The answer is 12);
ñåìè àðãóìåíòîâ, çíà÷åíèåì êîòîðîé ñëóæèò ñóììà âñåõ ñåìè àðãóìåíòîâ.
6. Äëÿ êàæäîãî èç ñëåäóþùèõ óñëîâèé îïðåäåëèòü ôóíêöèþ îäíîãî àðãóìåíòà L , êîòîðàÿ èìååò çíà÷åíèå T, åñëè óñëîâèå óäîâëåòâîðÿåòñÿ, è NIL â ïðîòèâíîì ñëó÷àå:
n-ûé ýëåìåíò L åñòü 12;
n-ûé ýëåìåíò L åñòü àòîì;
L èìååò íå áîëåå n ýëåìåíòîâ (àòîìîâ èëè ïîäñïèñêîâ).
7. Íàïèøèòå ôóíêöèþ, êîòîðàÿ ââîäèò ôðàçó íà åñòåñòâåííîì ÿçûêå è ïðåîáðàçóåò åå â ñïèñîê.
8. Íàïèøèòå ôóíêöèþ, êîòîðàÿ ñïðàøèâàåò ó ïîëüçîâàòåëÿ ÔÈÎ ñòóäåíòà èç ãðóïïû (ñïèñîê ãðóïïû ñîñòàâëåí ðàíüøå) è âûäàåò ñëåäóþùèå äàííûå î íåì:
ãîä ðîæäåíèÿ;
ñðåäíèé áàë;
ðîäèòåëåé;
ñïèñêè ñâîéñòâ, ïðèñâîåííûå åìó ðàíüøå.
9. Íàïèøèòå ôóíêöèþ:
îò îäíîãî àðãóìåíòà (ÔÈÎ ëþáîãî ñòóäåíòà), çàìåùàþùóþ â ñïèñêå ñ äàííûìè î íåì (íàïèñàííîì ðàíüøå) ïîäñïèñêè ñî ñðåäíèìè áàëàìè íà ñïèñêè ñâîéñòâ;
âû÷èñëÿþùóþ ñðåäíèå áàëû, áåðÿ äàííûå èç ñïèñêîâ ñâîéñòâ.
10. Êàêîâû áóäóò çíà÷åíèÿ âûðàæåíèé (RPLACA x x) è (RPLACD x x), åñëè:
x = ’(a b);
x = ’(a);
11. Âû÷èñëèòå çíà÷åíèå ñëåäóþùèõ âûðàæåíèé:
(RPLACD ‘(a) ‘b);
(RPLACA ‘(a) ‘b);
(RPLACD (CDDR ‘(a b x)) ‘c);
(RPLACD ‘(nil) nil)
6. Âîïðîñû.
1. ×òî òàêîå ëÿìáäà-âûðàæåíèå?
2. Äëÿ ÷åãî èñïîëüçóåòñÿ ôóíêöèÿ DEFUN?
3. ×åì ðàçëè÷àþòñÿ îñíîâíûå ôóíêöèè âûâîäà?
4. ×òî âîçâðàùàåò â êà÷åñòâå çíà÷åíèÿ ôóíêöèÿ READ?
5. Îñîáåííîñòè ôóíêöèé, èçìåíÿþùèõ ñòðóêòóðó?
Ëàáîðàòîðíàÿ ðàáîòà ¹3.
Òåìà: Îðãàíèçàöèÿ âû÷èñëåíèé â Ëèñïå.
Öåëü: Èçó÷èòü îñíîâíûå ôóíêöèè è èõ îñîáåííîñòè äëÿ îðãàíèçàöèè âû÷èñëåíèé â Ëèñïå.
1. Ïðåäëîæåíèÿ LET è LET*.
2. Ïîñëåäîâàòåëüíûå âû÷èñëåíèÿ.
3. Ðàçâåòâëåíèå âû÷èñëåíèé.
4. Öèêëè÷åñêèå âû÷èñëåíèÿ.
5. Ïåðåäà÷à óïðàâëåíèÿ.
6. Çàäàíèå ê ëàáîðàòîðíîé ðàáîòå.
7. Âîïðîñû.
1. Ïðåäëîæåíèÿ LET è LET*.
Ïðåäëîæåíèå LET ñîçäàåò ëîêàëüíóþ ñâÿçü âíóòðè ôîðìû:
(LET ((m1 çíà÷1) (m2 çíà÷2)...)
ôîðìà1 ôîðìà2 ...)
Âíà÷àëå ñòàòè÷åñêèå ïåðåìåííûå m1, m2, ... ñâÿçûâàþòñÿ (îäíîâðåìåííî) ñ ñîîòâåòñòâóþùèìè çíà÷åíèÿìè çíà÷1, çíà÷2, ... . Çàòåì ñëåâà íà ïðàâî âû÷èñëÿþòñÿ çíà÷åíèÿ ôîðìû1, ôîðìû2, ... . Çíà÷åíèå ïîñëåäíåé ôîðìû âîçâðàùàåòñÿ â êà÷åñòâå çíà÷åíèÿ âñåé ôîðìû. Ïîñëå âû÷èñëåíèÿ ñâÿçè ñòàòè÷åñêèõ ïåðåìåííûõ ëèêâèäèðóþòñÿ.
Ïðåäëîæåíèÿ LET ìîæíî äåëàòü âëîæåííûìè îäíî â äðóãîå.
_(LET ((x ‘a) (y ‘b))
(LET ((z ‘c)) (LIST x y z))) ð (a b c)
_(LET ((x (LET ((z ‘a)) z)) (y ‘b))
(LIST x y)) ð (a b)
_(LET ((x 1) (y (+ x 1)))
(LIST x y)) ð ERROR
Ïðè âû÷èñëåíèè ó Ó è Õ åùå íåò ñâÿçè. Çíà÷åíèÿ ïåðåìåííûì ïðèñâàèâàþòñÿ îäíîâðåìåííî. Ýòî îçíà÷àåò, ÷òî çíà÷åíèÿ âñåõ ïåðåìåííûõ mi âû÷èñëÿþòñÿ äî òîãî, êàê îñóùåñòâëÿåòñÿ ñâÿçûâàíèå ñ ôîðìàëüíûìè ïàðàìåòðàìè.
Ïîäîáíîé îøèáêè ìîæíî èçáåæàòü ñ ïîìîùüþ ôîðìû LET*:
_(LET* ((x 1) (y (+ x 1)))
(LIST x y)) ð (1 2)
2. Ïîñëåäîâàòåëüíûå âû÷èñëåíèÿ.
Ïðåäëîæåíèÿ PROG1 è PROGN ïîçâîëÿþò ðàáîòàòü ñ íåñêîëüêèìè âû÷èñëÿåìûìè ôîðìàìè:
(PROG1 ôîðìà1 ... ôîðìàN)
(PROGN ôîðìà1 ... ôîðìàN)
Ýòè ñïåöèàëüíûå ôîðìû ïîñëåäîâàòåëüíî âû÷èñëÿþò ñâîè àðãóìåíòû è â êà÷åñòâå çíà÷åíèÿ âîçâðàùàþò çíà÷åíèå ïåðâîãî (PROG1) èëè ïîñëåäíåãî (PROGN) àðãóìåíòà.
_(PROG1 (SETQ x 1) (SETQ y 5)) ð 1
_(PROGN (SETQ j 8) (SETQ z (+x j))) ð 9
3. Ðàçâåòâëåíèå âû÷èñëåíèé.
Óñëîâíîå ïðåäëîæåíèå COND:
(COND (p1 a1)
...
(pn an))
Ïðåäèêàòàìè pi è ðåçóëüòèðóþùèìè âûðàæåíèÿìè ai ìîãóò áûòü ïðîèçâîëüíûå ôîðìû. Âûðàæåíèÿ pi âû÷èñëÿþòñÿ ïîñëåäîâàòåëüíî äî òåõ ïîð, ïîêà íå âñòðåòèòñÿ âûðàæåíèå, çíà÷åíèåì êîòîðîãî ÿâëÿåòñÿ T. Âû÷èñëÿåòñÿ ðåçóëüòèðóþùåå âûðàæåíèå, ñîîòâåòñòâóþùåå ýòîìó ïðåäèêàòó, è ïîëó÷åííîå çíà÷åíèå âîçâðàùàåòñÿ â êà÷åñòâå çíà÷åíèÿ âñåãî ïðåäëîæåíèÿ COND. Åñëè èñòèííîãî ïðåäèêàòà íåò òî çíà÷åíèåì COND áóäåò NIL.
Ðåêîìåíäóåòñÿ â êà÷åñòâå ïîñëåäíåãî ïðåäèêàòà èñïîëüçîâàòü ñèìâîë T. Òîãäà ñîîòâåòñòâóþùåå åìó an áóäåò âû÷èñëÿòüñÿ â òîì ñëó÷àå, åñëè äðóãèå óñëîâèÿ íå âûïîëíÿþòñÿ.
Åñëè óñëîâèþ íå ñòàâèòñÿ â ñîîòâåòñòâèå ðåçóëüòèðóþùåå âûðàæåíèå, òî â êà÷åñòâå ðåçóëüòàòà âûäàåòñÿ ñàìî çíà÷åíèå ïðåäèêàòà. Åñëè æå óñëîâèþ ñîîòâåòñòâóþò íåñêîëüêî ôîðì, òî ïðè åãî èñòèííîñòè ôîðìû âû÷èñëÿþòñÿ ïîñëåäîâàòåëüíî ñëåâà íà ïðàâî è ðåçóëüòàòîì ïðåäëîæåíèÿ COND áóäåò çíà÷åíèå ïîñëåäíåé ôîðìû.
Ïðåäëîæåíèÿ COND ìîæíî êîìáèíèðîâàòü.
(COND ((> x 0) (SETQ ðåç x))
((< x 0) (SETQ x -x) (SETQ ðåç õ))
((= õ 0))
(Ò ‘îøèáêà))
Ïðåäëîæåíèå IF.
(IF óñëîâèå òî-ôîðìà èíà÷å-ôîðìà)
(IF (> x 0) (SETQ y (+ y x)) (SETQ y (- y x)))
Åñëè âûïîëíÿåòñÿ óñëîâèå (ò. å. õ>0), òî ê çíà÷åíèþ y ïðèáàâëÿåòñÿ çíà÷åíèå õ, èíà÷å (x<0) îò y îòíèìàåòñÿ îòðèöàòåëüíîå çíà÷åíèå õ, ò. å. ïðèáàâëÿåòñÿ àáñîëþòíîå åãî çíà÷åíèå.
Ìîæíî èñïîëüçîâàòü ôîðìó WHEN.
(WHEN óñëîâèå ôîðìà1 ôîðìà2 ... )
Âûáèðàþùåå ïðåäëîæåíèå CASE^
(CASE êëþ÷
(ñïèñîê-êëþ÷åé1 m11 m12 ... )
(ñïèñîê-êëþ÷åé2 m21 m22 ... )
....)
Ñíà÷àëà âû÷èñëÿåòñÿ çíà÷åíèå êëþ÷åâîé ôîðìû - êëþ÷. Çàòåì åãî ñðàâíèâàþò ñ ýëåìåíòàìè ñïèñêà-êëþ÷åéi. Êîãäà â ñïèñêå íàéäåíî çíà÷åíèå êëþ÷åâîé ôîðìû, íà÷èíàþò âû÷èñëÿòüñÿ ñîîòâåòñòâóþùèå ôîðìû mi1, mi2, ... . Çíà÷åíèå ïîñëåäíåé âîçâðàùàåòñÿ â êà÷åñòâå çíà÷åíèÿ âñåãî ïðåäëîæåíèÿ CASE.
_(SETQ êëþ÷ 3) ð 3
_(CASE êëþ÷
(1 ‘one)
(2 ‘(one + one) ‘two)
(3 ‘(two + one) ‘three) ð three
4. Öèêëè÷åñêèå âû÷èñëåíèÿ.
Ïðåäëîæåíèå DO.
(DO ((var1 çíà÷1 øàã1) (var2 çíà÷2 øàã2) ...)
(óñëîâèå-îêîí÷àíèÿ ôîðìà11 ôîðìà12 ...)
ôîðìà21 ôîðìà22 ...)
Ïåðâûé àðãóìåíò îïèñûâàåò âíóòðåííèå ïåðåìåííûå var1, var2, ..., èõ íà÷àëüíûå çíà÷åíèÿ - çíà÷1, çíà÷2, ... è ôîðìû îáíîâëåíèÿ - øàã1, øàã2, ....
Âíà÷àëå âû÷èñëåíèÿ ïðåäëîæåíèÿ DOI âíóòðåííèì ïåðåìåííûì ïðèñâàèâàþòñÿ íà÷àëüíûå çíà÷åíèÿ, åñëè çíà÷åíèÿ íå ïðèñâàèâàþòñÿ, òî ïî óìîë÷àíèþ ïåðåìåííûì ïðèñâàèâàåòñÿ NIL. Çàòåì ïðîâåðÿåòñÿ óñëîâèå-îêîí÷àíèÿ. Åñëè îíî äåéñòâèòåëüíî, òî ïîñëåäîâàòåëüíî âûïîëíÿþòñÿ ôîðìû1i è çíà÷åíèå ïîñëåäíåé âîçâðàùàåòñÿ â êà÷åñòâå çíà÷åíèÿ âñåãî ïðåäëîæåíèÿ DO, èíà÷å ïîñëåäîâàòåëüíî âû÷èñëÿþòñÿ ôîðìû2i.
Íà ñëåäóþùåì öèêëå ïåðåìåííûì vari îäíîâðåìåííî ïðèñâàèâàþòñÿ çíà÷åíèÿ ôîðì - øàãi, âû÷èñëÿåìûõ â òåêóùåì êîíòåêñòå, ïðîâåðÿåòñÿ óñëîâèå-îêîí÷àíèÿ è ò. ä.
_(DO ((x 5 (+ x 1)) (y 8 (+ y 2)) (ðåç 0))
((< x 10) ðåç)
(SETQ ðåç (+ ðåç x y))
5. Ïåðåäà÷à óïðàâëåíèÿ.
Íà Ëèñïå ìîæíî ïèñàòü ïðîãðàììû è â îáû÷íîì îïåðàòîðíîì ñòèëå ñ èñïîëüçîâàíèåì ïåðåäà÷è óïðàâëåíèÿ. Îäíàêî âî ìíîãèõ ñèñòåìàõ íå ðåêîìåíäóåòñÿ èñïîëüçîâàòü ýòè ïðåäëîæåíèÿ, òàê êàê èõ ìîæíî çàìåíèòü äðóãèìè ïðåäëîæåíèÿìè (íàïðèìåð DO) è, êàê ïðàâèëî, â áîëåå ïîíÿòíîé ôîðìå. Íî ìû ðàññìîòðèì ïðåäëîæåíèÿ ïåðåäà÷è óïðàâëåíèÿ, õîòÿ èñïîëüçîâàòü èõ íå ñëåäóåò.
(PROG (m1 m2 ... mn)
îïåðàòîð1
îïåðàòîð2
...
îïåðàòîðm)
Ïåðå÷èñëåííûå â íà÷àëå ôîðìû ïåðåìåííûå mi ÿâëÿþòñÿ ëîêàëüíûìè ñòàòè÷åñêèìè ïåðåìåííûìè ôîðìû, êîòîðûå ìîæíî èñïîëüçîâàòü äëÿ õðàíåíèÿ ïðîìåæóòî÷íûõ ðåçóëüòàòîâ. Åñëè ïåðåìåííûõ íåò, òî íà ìåñòå ñïèñêà ïåðåìåííûõ íóæíî ñòàâèòü NIL. Åñëè êàêàÿ-íèáóäü ôîðìà îïåðàòîði ÿâëÿåòñÿ ñèìâîëîì èëè öåëûì ÷èñëîì, òî ýòî ìåòêà ïåðåõîäà. Íà òàêóþ ìåòêó ìîæíî ïåðåäàòü óïðàâëåíèå îïåðàòîðîì GO:
(GO ìåòêà)
GO íå âû÷èñëÿåò çíà÷åíèå ñâîåãî «àðãóìåíòà».
Êðîìå ýòîãî, â PROG-ìåõàíèçì âõîäèò îïåðàòîð îêîí÷àíèÿ âû÷èñëåíèÿ è âîçâðàòà çíà÷åíèÿ:
(RETURN ðåçóëüòàò)
Îïåðàòîðû ïðåäëîæåíèÿ PROG âû÷èñëÿþòñÿ ñëåâà íàïðàâî (ñâåðõó âíèç), ïðîïóñêàÿ ìåòêè ïåðåõîäà. Îïåðàòîð RETURN ïðåêðàùàåò âûïîëíåíèå ïðåäëîæåíèÿ PROG; â êà÷åñòâå çíà÷åíèÿ âñåãî ïðåäëîæåíèÿ âîçâðàùàåòñÿ çíà÷åíèå àðãóìåíòà îïåðàòîðà PROG. Åñëè âî âðåìÿ âû÷èñëåíèÿ îïåðàòîð RETURN íå âñòðåòèëñÿ, òî çíà÷åíèåì PROG ïîñëå âû÷èñëåíèÿ åãî ïîñëåäíåãî îïåðàòîðà ñòàíåò NIL .
Ïîñëå âû÷èñëåíèÿ çíà÷åíèÿ ôîðìû ñâÿçè ïðîãðàììíûõ ïåðåìåííûõ èñ÷åçàþò.
6. Çàäàíèÿ ê ëàáîðàòîðíîé ðàáîòå.
1. Çàïèøèòå ñëåäóþùèå ëÿìáäà-âûçîâû ñ èñïîëüçîâàíèåì ôîðìû LET è âû÷èñëèòå èõ íà ìàøèíå:
a) ((LAMBDA (x y) (LIST x y)
‘(+ 1 2) ‘c);
b) ((LAMBDA (x y) ((LAMBDA (z) (LIST x y z)) ‘c)
‘a ‘b);
c) ((LAMBDA (x y) (LIST x y))
((LAMBDA (z) z) ‘a)
‘b).
2. Íàïèøèòå ñ ïîìîùüþ êîìïîçèöèè óñëîâíûõ âûðàæåíèé ôóíêöèè îò ÷åòûðåõ àðãóìåíòîâ AND4(x1 x2 x3 x4) è OR4(x1 x2 x3 x4), ñîâïàäàþùèå ñ ôóíêöèÿìè AND è OR îò ÷åòûðåõ àðãóìåíòîâ.
3. Ïóñòü L1 è L2 - ñïèñêè. Íàïèøèòå ôóíêöèþ, êîòîðàÿ âîçâðàùàëà áû T, åñëè N-ûå äâà ýëåìåíòà ýòèõ ôóíêöèé ñîîòâåòñòâåííî ðàâíû äðóã äðóãó, è NIL â ïðîòèâíîì ñëó÷àå.
4. Íàïèñàòü óñëîâíîå âûðàæåíèå (èñïîëüçóÿ COND), êîòîðîå:
äàåò NIL, åñëè L àòîì, è T â ïðîòèâíîì ñëó÷àå;
âûäàåò äëÿ ñïèñêà L ,ñîñòîÿùåãî èç òðåõ ýëåìåíòîâ, ïåðâûé èç ýòèõ òðåõ, êîòîðûé ÿâëÿåòñÿ àòîìîì, èëè ñïèñîê, åñëè â ñïèñêå íåò ýëåìåíòîâ àòîìîâ.
5. Ñ ïîìîùüþ ïðåäëîæåíèé COND èëè CASE îïðåäåëèòå ôóíêöèþ, êîòîðàÿ âîçâðàùàåò â êà÷åñòâå çíà÷åíèÿ ñòîëèöó çàäàííîãî àðãóìåíòîì ãîñóäàðñòâà.
6. Íàïèøèòå ñ ïîìîùüþ óñëîâíîãî ïðåäëîæåíèÿ ôóíêöèþ, êîòîðàÿ âîçâðàùàåò èç òðåõ ÷èñëîâûõ àðãóìåíòîâ çíà÷åíèå áîëüøåãî, ìåíüøåãî ïî âåëè÷èíå ÷èñëà.
7. Çàïðîãðàììèðóéòå ñ ïîìîùüþ ïðåäëîæåíèÿ DO ôóíêöèþ ôàêòîðèàë.
8. Çàïèøèòå ñ ïîìîùüþ ïðåäëîæåíèÿ PROG ôóíêöèþ (àíàëîã âñòðîåííîé ôóíêöèè LENGTH), êîòîðàÿ âîçâðàùàåò â êà÷åñòâå çíà÷åíèÿ äëèíó ñïèñêà (êîëè÷åñòâî ýëåìåíòîâ íà âåðõíåì óðîâíå).
9. Èñïîëüçóÿ ôóíêöèþ COND, íàïèøèòå ôóíêöèþ, êîòîðàÿ ñïðàøèâàåò ó ïîëüçîâàòåëÿ ÔÈÎ äâóõ ñòóäåíòîâ èç ãðóïïû (ñïèñîê ãðóïïû ñîñòàâëåí ðàíüøå) äëÿ êîòîðûõ:
à) ñðàâíèâàåò ãîä ðîæäåíèÿ è âûäàåò ðåçóëüòàò (êòî ñòàðøå èëè ÷òî îíè ðîâåñíèêè);
á) ñðàâíèâàåò ñðåäíèé áàë è âûäàåò ñîîáùåíèå î ðåçóëüòàòàõ ñðàâíåíèÿ;
ñ) ïðîâåðÿåò ðîäñòâåííûå ñâÿçè (åñëè îäíè è òå æå ðîäèòåëè, òî îíè ðîäñòâåííèêè) è âûäàåò îá ýòîì ñîîáùåíèå.
10. Íàïèøèòå ïîäîáíûå ôóíêöèè, íî óæå èñïîëüçóÿ ôóíêöèþ IF.
Äëÿ äâóõ ïîñëåäíèõ çàäàíèé âûâîä èíôîðìàöèè îñóùåñòâèòü ïðè ïîìîùüþ ôóíêöèé PRINT, PRIN1, PRINC.
Center - íàõîäèò ñðåäíåå èç òðåõ ÷èñåë:
(DEFUN center (x y z)
(COND ((> x y) (IF (< x z) (PROGN (PRINT x)
(PRINT «ñðåäíåå (1)»))
(IF (> y z) (PROGN (PRINT y)
(TERPRI)
(PRINT «ñðåäíåå (2)»))
(PROGN (PRIN1 z)
(PRIN1«ñðåäíåå (3)»)))))
((< x y) (IF (< y z) (PROGN (PRIN1 y)
(TERPRI)
(PRIN1 «ñðåäíåå (4)»))
(IF (> x z) (PROGN (PRINC x)
(PRINC «ñðåäíåå (5)»))
(PROGN (PRINC z)
(TERPRI)
(PRINC «ñðåäíåå (6)»)))))
(T (PRINC «îøèáêà ââîäà»))))
7. Âîïðîñû.
1. Äëÿ ÷åãî èñïîëüçóåòñÿ ïðåäëîæåíèå LET?
2.  ÷åì åãî îòëè÷èå îò ïðåäëîæåíèÿ LET*?
3. ×åì ðàçëè÷àþòñÿ ôóíêöèè COND è IF?
4. Êàêîâû âîçâðàùàåìûå èìè çíà÷åíèÿ?
5. ×åì ðàçëè÷àþòñÿ ôóíêöèè PROG1 è PROGN?
6. Ïî÷åìó íå æåëàòåëüíî èñïîëüçîâàòü îïåðàòîðû ïåðåäà÷è óïðàâëåíèÿ? ×åì èõ ìîæíî çàìåíèòü?
Ëàáîðàòîðíàÿ ðàáîòà ¹4.
Òåìà: Ðåêóðñèÿ â Ëèñïå. Ôóíêöèîíàëû è ìàêðîñû.
Öåëü: Èçó÷èòü îñíîâû ïðîãðàììèðîâàíèÿ ñ ïðèìåíåíèåì ðåêóðñèè. Íàó÷èòüñÿ ðàáîòàòü ñ ôóíêöèîíàëàìè è ìàêðîñàìè.
1. Ðåêóðñèÿ. Ðàçëè÷íûå ôîðìû ðåêóðñèè.
2. Ïðèìåíÿþùèå ôóíêöèîíàëû.
3. Îòîáðàæàþùèå ôóíêöèîíàëû.
4. Ìàêðîñû.
5. Çàäàíèå ê ëàáîðàòîðíîé ðàáîòå.
6. Âîïðîñû.
1. Ðåêóðñèÿ. Ðàçëè÷íûå ôîðìû ðåêóðñèè.
Îñíîâíàÿ èäåÿ ðåêóðñèâíîãî îïðåäåëåíèÿ çàêëþ÷àåòñÿ â òîì, ÷òî ôóíêöèþ ìîæíî ñ ïîìîùüþ ðåêóððåíòíûõ ôîðìóë ñâåñòè ê íåêîòîðûì íà÷àëüíûì çíà÷åíèÿì, ê ðàíåå îïðåäåëåííûì ôóíêöèÿì èëè ê ñàìîé îïðåäåëÿåìîé ôóíêöèè, íî ñ áîëåå «ïðîñòûìè» àðãóìåíòàìè. Âû÷èñëåíèå òàêîé ôóíêöèè çàêàí÷èâàåòñÿ â òîò ìîìåíò, êîãäà îíî ñâîäèòñÿ ê èçâåñòíûì íà÷àëüíûì çíà÷åíèÿì.
Ðåêóðñèâíàÿ ïðîöåäóðà, âî-ïåðâûõ ñîäåðæèò âñåãäà ïî êðàéíåé ìåðå îäíó òåðìèíàëüíóþ âåòâü è óñëîâèå îêîí÷àíèÿ. Âî-âòîðûõ, êîãäà ïðîöåäóðà äîõîäèò äî ðåêóðñèâíîé âåòâè, òî ôóíêöèîíèðóþùèé ïðîöåññ ïðèîñòàíàâëèâàåòñÿ, è íîâûé òàêîé æå ïðîöåññ çàïóñêàåòñÿ ñíà÷àëà, íî óæå íà íîâîì óðîâíå. Ïðåðâàííûé ïðîöåññ êàêèì-íèáóäü îáðàçîì çàïîìèíàåòñÿ. Îí áóäåò æäàòü è íà÷íåò èñïîëíÿòüñÿ ëèøü ïîñëå îêîí÷àíèÿ íîâîãî ïðîöåññà.  ñâîþ î÷åðåäü, íîâûé ïðîöåññ ìîæåò ïðèîñòàíîâèòüñÿ, îæèäàòü è ò. ä.
Áóäåì ãîâîðèòü î ðåêóðñèè ïî çíà÷åíèþ è ðåêóðñèè ïî àðãóìåíòàì.  ïåðâîì ñëó÷àå âûçîâ ÿâëÿåòñÿ âûðàæåíèåì, îïðåäåëÿþùèì ðåçóëüòàò ôóíêöèè. Âî âòîðîì - â êà÷åñòâå ðåçóëüòàòà ôóíêöèè âîçâðàùàåòñÿ çíà÷åíèå íåêîòîðîé äðóãîé ôóíêöèè è ðåêóðñèâíûé âûçîâ ó÷àñòâóåò â âû÷èñëåíèè àðãóìåíòîâ ýòîé ôóíêöèè. Àðãóìåíòîì ðåêóðñèâíîãî âûçîâà ìîæåò áûòü âíîâü ðåêóðñèâíûé âûçîâ è òàêèõ âûçîâîâ ìîæåò áûòü ìíîãî.
Ðàññìîòðèì ñëåäóþùèå ôîðìû ðåêóðñèè:
ïðîñòàÿ ðåêóðñèÿ;
ïàðàëëåëüíàÿ ðåêóðñèÿ;
âçàèìíàÿ ðåêóðñèÿ.
Ðåêóðñèÿ íàçûâàåòñÿ ïðîñòîé, åñëè âûçîâ ôóíêöèè âñòðå÷àåòñÿ â íåêîòîðîé âåòâè ëèøü îäèí ðàç. Ïðîñòîé ðåêóðñèè â ïðîöåäóðíîì ïðîãðàììèðîâàíèè ñîîòâåòñòâóåò îáûêíîâåííûé öèêë.
Äëÿ ïðèìåðà íàïèøåì ôóíêöèþ âû÷èñëåíèÿ ÷èñåë Ôèáîíà÷÷è (F(1)=1; F(2)=1; F(n)=F(n-1)+F(n-2) ïðè n>2):
(DEFUN FIB (N)
(IF (> N 0)
(IF (OR N=1 N=2) 1
(+ (FIB (- N 1)) (FIB (- N 2))))
‘ÎØÈÁÊÀ_ÂÂÎÄÀ))
Ðåêóðñèþ íàçûâàþò ïàðàëëåëüíîé, åñëè îíà âñòðå÷àåòñÿ îäíîâðåìåííî â íåñêîëüêèõ àðãóìåíòàõ ôóíêöèè:
(DEFUN f ...
...(g ... (f ...) (f ...) ...)
...)
Ðàññìîòðèì èñïîëüçîâàíèå ïàðàëëåëüíîé ðåêóðñèè íà ïðèìåðå ïðåîáðàçîâàíèÿ ñïèñî÷íîé ñòðóêòóðû â îäíîóðîâíåâûé ñïèñîê:
(DEFUN PREOBR (L)
(COND
((NULL L) NIL)
((ATOM L) (CONS (CAR L) NIL))
(T (APPEND
(PREOBR (CAR L))
(PREOBR (CDR L))))))
Ðåêóðñèÿ ÿâëÿåòñÿ âçàèìíîé ìåæäó äâóìÿ è áîëåå ôóíêöèÿìè, åñëè îíè âûçûâàþò äðóã äðóãà:
(DEFUN f ...
...(g ...) ...)
(DEFUN g ...
...(f ...) ...)
Äëÿ ïðèìåðà íàïèøåì ôóíêöèþ îáðàùåíèÿ èëè çåðêàëüíîãî îòðàæåíèÿ â âèäå äâóõ âçàèìíî ðåêóðñèâíûõ ôóíêöèé ñëåäóþùèì îáðàçîì:
(DEFUN obr (l)
(COND ((ATOM l) l)
(T (per l nil))))
(DEFUN per (l res)
(COND ((NULL l) res)
(T (per (CDR l)
(CONS (obr (CAR l)) res)))))
2. Ïðèìåíÿþùèå ôóíêöèîíàëû.
Ôóíêöèè, êîòîðûå ïîçâîëÿþò âûçûâàòü äðóãèå ôóíêöèè, ò. å. ïðèìåíÿòü ôóíêöèîíàëüíûé àðãóìåíò ê åãî ïàðàìåòðàì íàçûâàþò ïðèìåíÿþùèìè ôóíêöèîíàëàìè. Îíè äàþò âîçìîæíîñòü èíòåðïðåòèðîâàòü è ïðåîáðàçîâûâàòü äàííûå â ïðîãðàììó è ïðèìåíÿòü åå â âû÷èñëåíèÿõ.
APPLY
APPLY ÿâëÿåòñÿ ôóíêöèåé äâóõ àðãóìåíòîâ, èç êîòîðûõ ïåðâûé àðãóìåíò ïðåäñòàâëÿåò ñîáîé ôóíêöèþ, êîòîðàÿ ïðèìåíÿåòñÿ ê ýëåìåíòàì ñïèñêà, ñîñòàâëÿþùèì âòîðîé àðãóìåíò ôóíêöèè APPLY:
(APPLY fn ñïèñîê)
_(SETQ a ‘+) ð +
_(APPLY a ‘(1 2 3)) ð 6
_(APPLY ‘+ ‘(4 5 6)) ð 15
FUNCALL.
Ôóíêöèîíàë FUNCALL ïî ñâîåìó äåéñòâèþ àíàëîãè÷åí APPLY, íî àðãóìåíòû äëÿ âûçûâàåìîé îí ïðèíèìàåò íå ñïèñêîì, à ïî îòäåëüíîñòè:
(FUNCALL fn x1 x2 ... xn)
_(FUNCALL ‘+ 4 5 6) ð 15
FUNCALL è APPLY ïîçâîëÿþò çàäàâàòü âû÷èñëåíèÿ (ôóíêöèþ) ïðîèçâîëüíîé ôîðìîé, íàïðèìåð, êàê â âûçîâå ôóíêöèè, èëè ñèìâîëîì, çíà÷åíèåì êîòîðîãî ÿâëÿåòñÿ ôóíêöèîíàëüíûé îáúåêò. Òàêèì îáðàçîì ïîÿâëÿåòñÿ âîçìîæíîñòü èñïîëüçîâàòü ñèíîíèìû èìåíè ôóíêöèè. Ñ äðóãîé ñòîðîíû, èìÿ ôóíêöèè ìîæíî èñïîëüçîâàòü êàê îáûêíîâåííóþ ïåðåìåííóþ, íàïðèìåð äëÿ õðàíåíèÿ äðóãîé ôóíêöèè (èìåíè èëè ëÿìáäà-âûðàæåíèÿ), è ýòè äâà ñìûñëà (çíà÷åíèå è îïðåäåëåíèå) íå áóäóò ìåøàòü äðóã äðóãó:
_(SETQ list ‘+) ð +
_(FUNCALL list 1 2) ð 3
_(LIST 1 2) ð (1 2)
3. Îòîáðàæàþùèå ôóíêöèîíàëû.
Îòîáðàæàþùèå èëè MAP-ôóíêöèîíàëû ÿâëÿþòñÿ ôóíêöèÿìè, êîòîðûå ÿâëÿþòñÿ ôóíêöèÿìè, êîòîðûå íåêîòîðûì îáðàçîì îòîáðàæàþò ñïèñîê (ïîñëåäîâàòåëüíîñòü) â íîâóþ ïîñëåäîâàòåëüíîñòü èëè ïîðîæäàþò ïîáî÷íûé ýôôåêò, ñâÿçàííûé ñ ýòîé ïîñëåäîâàòåëüíîñòüþ. Êàæäàÿ èç íèõ èìååò áîëåå äâóõ àðãóìåíòîâ, çíà÷åíèåì ïåðâîãî äîëæíî áûòü èìÿ îïðåäåëåííîé ðàíåå èëè áàçîâîé ôóíêöèè, èëè ëÿìáäà-âûðàæåíèå, âûçûâàåìîå MAP-ôóíêöèåé èòåðàöèîííî, à îñòàëüíûå àðãóìåíòû ñëóæàò äëÿ çàäàíèÿ àðãóìåíòîâ íà êàæäîé èòåðàöèè. Åñòåñòâåííî, ÷òî êîëè÷åñòâî àðãóìåíòîâ â îáðàùåíèè ê MAP-ôóíêöèè äîëæíî áûòü ñîãëàñîâàíî ñ ïðåäóñìîòðåííûì êîëè÷åñòâîì àðãóìåíòîâ ó àðãóìåíòà-ôóíêöèè. Ðàçëè÷èå ìåæäó âñåìè MAP-ôóíêöèÿìè ñîñòîèò â ïðàâèëàõ ôîðìèðîâàíèÿ âîçâðàùàåìîãî çíà÷åíèÿ è ìåõàíèçìå âûáîðà àðãóìåíòîâ èòåðèðóþùåé ôóíêöèè íà êàæäîì øàãå.
Ðàññìîòðèì îñíîâíûå òèïû MAP-ôóíêöèé.
Çíà÷åíèå ýòîé ôóíêöèè âû÷èñëÿåòñÿ ïóòåì ïðèìåíåíèÿ ôóíêöèè fn ê ïîñëåäîâàòåëüíûì ýëåìåíòàì xi ñïèñêà, ÿâëÿþùåãîñÿ âòîðûì àðãóìåíòîì ôóíêöèè. Íàïðèìåð â ñëó÷àå îäíîãî ñïèñêà ïîëó÷àåòñÿ ñëåäóþùåå âûðàæåíèå:
(MAPCAR fn ‘(x1 x2 ... xn))
 êà÷åñòâå çíà÷åíèÿ ôóíêöèîíàëà âîçâðàùàåòñÿ ñïèñîê, ïîñòðîåííûé èç ðåçóëüòàòîâ âûçîâîâ ôóíêöèîíàëüíîãî àðãóìåíòà MAPCAR.
_(MAPCAR ‘LISTP ‘((f) h k (i u)) ð (T NIL NIL T)
_(SETQ x ‘(a b c)) ð (a b c)
_(MAPCAR ‘CONS x ‘(1 2 3)) ð ((a . 1) (b . 2) (c . 3))
MAPLIST äåéñòâóåò ïîäîáíî MAPCAR, íî äåéñòâèÿ îñóùåñòâëÿåò íå íàä ýëåìåíòàìè ñïèñêà, à íàä ïîñëåäîâàòåëüíûìè CDR ýòîãî ñïèñêà.
_(MAPLIST ‘LIST ‘((f) h k (i u)) ð (T T T T)
_(MAPLIST ‘CONS ‘(a b c) ‘(1 2 3)) ð (((a b c) 1 2 3) ((b c) 2 3) ((c ) 3))
Ôóíêöèîíàëû MAPCAR è MAPLIST èñïîëüçóþòñÿ äëÿ ïðîãðàììèðîâàíèÿ öèêëîâ ñïåöèàëüíîãî âèäà è â îïðåäåëåíèè äðóãèõ ôóíêöèé, ïîñêîëüêó ñ èõ ïîìîùüþ ìîæíî ñîêðàòèòü çàïèñü ïîâòîðÿþùèõñÿ âû÷èñëåíèé.
Ôóíêöèè MAPCAN è MAPCON ÿâëÿþòñÿ àíàëîãàìè ôóíêöèé MAPCAR è MAPLIST. Îòëè÷èå ñîñòîèò â òîì, ÷òî MAPCAN è MAPCON íå ñòðîÿò, èñïîëüçóÿ LIST, íîâûé ñïèñîê èç ðåçóëüòàòîâ, à îáúåäèíÿþò ñïèñêè, ÿâëÿþùèåñÿ ðåçóëüòàòàìè, â îäèí ñïèñîê.
4. Ìàêðîñû.
Ïðîãðàììíîå ôîðìèðîâàíèå âûðàæåíèé íàèáîëåå åñòåñòâåííî îñóùåñòâëÿåòñÿ ñ ïîìîùüþ ìàêðîñîâ. Ìàêðîñû äàþò âîçìîæíîñòü ïèñàòü êîìïàêòíûå, îðèåíòèðîâàííûå íà çàäà÷ó ïðîãðàììû, êîòîðûå àâòîìàòè÷åñêè ïðåîáðàçóþòñÿ â áîëåå ñëîæíûé, íî áîëåå áëèçêèé ìàøèíå ýôôåêòèâíûé ëèñïîâñêèé êîä. Ïðè íàëè÷èè ìàêðîñðåäñòâ íåêîòîðûå ôóíêöèè â ÿçûêå ìîãóò áûòü îïðåäåëåíû â âèäå ìàêðîôóíêöèé. Òàêîå îïðåäåëåíèå ôàêòè÷åñêè çàäàåò çàêîí ïðåäâàðèòåëüíîãî ïîñòðîåíèÿ òåëà ôóíêöèè íåïîñðåäñòâåííî ïåðåä ôàçîé èíòåðïðåòàöèè.
Ñèíòàêñèñ îïðåäåëåíèÿ ìàêðîñà âûãëÿäèò òàê æå, êàê ñèíòàêñèñ èñïîëüçóåìîé ïðè îïðåäåëåíèè ôóíêöèé ôîðìû DEFUN:
(DEFMACRO èìÿ ëÿìáäà-ñïèñîê òåëî)
Âûçîâ ìàêðîñà ñîâïàäàåò ïî ôîðìå ñ âûçîâîì ôóíêöèè, íî åãî âû÷èñëåíèå îòëè÷àåòñÿ îò âû÷èñëåíèÿ âûçîâà ôóíêöèè. Ïåðâîå îòëè÷èå ñîñòîèò â òîì, ÷òî â ìàêðîñå íå âû÷èñëÿþòñÿ àðãóìåíòû. Òåëî ìàêðîñà âû÷èñëÿåòñÿ ñ àðãóìåíòàìè â òîì âèäå, êàê îíè çàïèñàíû.
Âòîðîå îòëè÷èå ñîñòîèò â òîì, ÷òî èíòåðïðåòàöèÿ ôóíêöèé, îïðåäåëåííûõ êàê ìàêðî, ïðîèçâîäèòñÿ â äâà ýòàïà. Íà ïåðâîì, íàçûâàåìîì ìàêðîðàñøèðåíèåì, ïðîèñõîäèò ôîðìèðîâàíèå ëÿìáäà-îïðåäåëåíèÿ ôóíêöèè â çàâèñèìîñòè îò òåêóùåãî êîíòåêñòà, íà âòîðîì îñóùåñòâëÿåòñÿ èíòåðïðåòàöèÿ ñîçäàííîãî ëÿìáäà-âûðàæåíèÿ.
_(DEFMACRO setqq (x y)
(LIST ‘SETQ x (LIST ‘QUOTE y))) ð setqq
_(setqq a (b c)) ð (b c)
_a ð (b c)
Ìàêðîñû îòëè÷àþòñÿ îò ôóíêöèé è â îòíîøåíèè êîíòåêñòà âû÷èñëåíèé. Âî âðåìÿ ðàñøèðåíèÿ ìàêðîñà äîñòóïíû ñèíòàêñè÷åñêèå ñâÿçè èç êîíòåêñòà îïðåäåëåíèÿ. Âû÷èñëåíèå æå ïîëó÷åííîé â ðåçóëüòàòå ðàñøèðåíèÿ ôîðìû ïðîèçâîäèòñÿ âíå êîíòåêñòà ìàêðîâûçîâà, è ïîýòîìó ñòàòè÷åñêèå ñâÿçè èç ìàêðîñà íå äåéñòâóþò. Èñïîëüçîâàíèå ìàêðîôóíêöèé îáëåã÷àåò ïîñòðîåíèå ÿçûêà ñ ëèñïîïîäîáíîé ñòðóêòóðîé, èìåþùåãî ñâîé ñèíòàêñèñ, áîëåå óäîáíûé äëÿ ïîëüçîâàòåëÿ. ×ðåçìåðíîå èñïîëüçîâàíèå ìàêðîñðåäñòâ çàòðóäíÿåò ÷òåíèå è ïîíèìàíèå ïðîãðàìì.
5. Çàäàíèÿ ê ëàáîðàòîðíîé ðàáîòå.
1. Íàïèøèòå ðåêóðñèâíóþ ôóíêöèþ, îïðåäåëÿþùóþ ñêîëüêî ðàç ôóíêöèÿ FIB âûçûâàåò ñàìó ñåáÿ. Î÷åâèäíî, ÷òî FIB(1) è FIB(2) íå âûçûâàþò ôóíêöèþ FIB.
2. Íàïèøèòå ôóíêöèþ äëÿ âû÷èñëåíèÿ ïîëèíîìîâ Ëåæàíäðà (P0(x)=1, P1(x)=x, Pn+1(x)= ((2*n+1)*x*Pn(x)-n*Pn-1(x))/(n+1) ïðè n>1).
3. Íàïèøèòå ôóíêöèþ:
âû÷èñëÿþùóþ ÷èñëî àòîìîâ íà âåðõíåì óðîâíå ñïèñêà (Äëÿ ñïèñêà (à â ((à) ñ) å) îíî ðàâíî òðåì.);
îïðåäåëÿþùóþ ÷èñëî ïîäñïèñêîâ íà âåðõíåì óðîâíå ñïèñêà;
âû÷èñëÿþùóþ ïîëíîå ÷èñëî ïîäñïèñêîâ, âõîäÿùèõ â äàííûé ñïèñîê íà ëþáîì óðîâíå.
4. Íàïèøèòå ôóíêöèþ:
îò äâóõ àðãóìåíòîâ X è N, êîòîðàÿ ñîçäàåò ñïèñîê èç N ðàç ïîâòîðåííûõ ýëåìåíòîâ X;
óäàëÿþùóþ ïîâòîðíûå âõîæäåíèÿ ýëåìåíòîâ â ñïèñîê;
êîòîðàÿ èç äàííîãî ñïèñêà ñòðîèò ñïèñîê ñïèñêîâ åãî ýëåìåíòîâ, íàïðèìåð, (a b) ð ((a) (b));
âû÷èñëÿþùóþ ìàêñèìàëüíûé óðîâåíü âëîæåíèÿ ïîäñïèñêîâ â ñïèñêå;
åäèíñòâåííûì àðãóìåíòîì êîòîðîé ÿâëÿëñÿ áû ñïèñîê ñïèñêîâ, îáúåäèíÿþùóþ âñå ýòè ñïèñêè â îäèí;
çàâèñÿùóþ îò òðåõ àðãóìåíòîâ X, N è V, äîáàâëÿþùóþ X íà N-å ìåñòî â ñïèñîê V.
5. Íàïèøèòå ôóíêöèþ:
àíàëîãè÷íóþ ôóíêöèè SUBST, íî â êîòîðîé òðåòèé àðãóìåíò W îáÿçàòåëüíî äîëæåí áûòü ñïèñêîì;
êîòîðàÿ äîëæíà ïðîèçâîäèòü çàìåíû X íà Y òîëüêî íà âåðõíåì óðîâíå W;
çàìåíÿþùóþ Y íà ÷èñëî, ðàâíîå ãëóáèíå âëîæåíèÿ Y â W, íàïðèìåð Y=A, W=((A B) A (C (A (A D)))) ð ((2 B) 1 (C (3 (4 D))));
àíàëîãè÷íóþ ôóíêöèè SUBST, íî ïðîèçâîäÿùóþ âçàèìíóþ çàìåíó X íà Y, ò. å. X ð Y, Y ð X.
6. Âû÷èñëèòå çíà÷åíèÿ ñëåäóþùèõ âûçîâîâ:
(APPLY ‘LIST ‘(a b));
(FUNCALL ‘LIST ‘(a b));
(FUNCALL ‘APPLY ‘LIST ‘(a b));
(FUNCALL ‘LIST ‘APPLY ‘(a b);
7. Îïðåäåëèòå ôóíêöèîíàë (A-APPLY f x), êîòîðûé ïðèìåíÿåò êàæäóþ ôóíêöèþ fi ñïèñêà
f = (f1 f2 ... fn)
ê ñîîòâåòñòâóþùåìó ýëåìåíòó xi ñïèñêà
x = (x1 x2 ... xn)
è âîçâðàùàåò ñïèñîê, ñôîðìèðîâàííûé èç ðåçóëüòàòîâ.
8. Îïðåäåëèòå ôóíêöèîíàëüíûé ïðåäèêàò (ÊÀÆÄÛÉ ïðåä ñïèñîê), êîòîðûé èñòèíåí â òîì è òîëüêî â òîì ñëó÷àå, êîãäà, ÿâëÿþùèéñÿ ôóíêöèîíàëüíûì àðãóìåíòîì ïðåäèêàò ïðåä èñòèíåí äëÿ âñåõ ýëåìåíòîâ ñïèñêà ñïèñîê.
9. Îïðåäåëèòå ôóíêöèîíàëüíûé ïðåäèêàò (ÍÅÊÎÒÎÐÛÉ ïðåä ñïèñîê), êîòîðûé èñòèíåí, êîãäà ïðåäèêàò èñòèíåí õîòÿ áû äëÿ îäíîãî ýëåìåíòà ñïèñêà.
10. Îïðåäåëèòå FUNCALL ÷åðåç ôóíêöèîíàë APPLY.
11. Îïðåäåëèòå ôóíêöèîíàë (MAPLIST fn ñïèñîê) äëÿ îäíîãî ñïèñî÷íîãî àðãóìåíòà.
12. Îïðåäåëèòå ìàêðîñ, êîòîðûé âîçâðàùàåò ñâîé âûçîâ.
13. Îïðåäåëèòå ëèñïîâñêóþ ôîðìó (IF óñëîâèå p q) â âèäå ìàêðîñà.
Ïðèìåðû íàïèñàíèÿ ôóíêöèé.
;Subst - çàìåíÿåò âñå âõîæäåíèÿ Y â W íà X.
(DEFUN subst (x y w)
(COND ((NULL w) NIL) ;ïðîâåðêà íà îêîí÷àíèå ñïèñêà
((EQUAL ‘y ‘w) x)
((ATOM ‘w) w) ;
(t (CONS (subst x y (car w)) ;ïîèñê â ãëóáèíó
(subst x y (cdr w)))))) ;ïîèñê â øèðèíó
;COMPARE1 - ñðàâíåíèå ñ îáðàçöîì
(defun compare1 (p d)
(cond ((and (null p) (null d)) t) ;èñ÷åðïàëèñü ñïèñêè?
((or (null p) (null d)) nil) ;îäèíàêîâà äëèíà ñïèñêîâ?
((or (equal1 (car p) '&) ;ïðèñóòñòâóåò â îáðàçöå àòîì &
(equal1 (car p) (car d))) ;èëè ãîëîâû ñïèñêîâ ðàâíû
(compare1 (cdr p) (cdr d))) ;& ñîïîñòàâèì ñ ëþáûì àòîìîì
((equal1 (car p) '*) ;ïðèñóòñòâóåò â îáðàçöå àòîì *
(cond ((compare1 (cdr p) d)) ;* íè ñ ÷åì íå ñîïîñòàâèìà
((compare1 (cdr p) (cdr d))) ;* ñîïîñòàâèìà ñ îäíèì àòîìîì
((compare1 p (cdr d))))))) ;* ñîïîñòàâèìà ñ íåñêîëü ;êèìè àòîìàìè
6. Âîïðîñû.
1. ×òî òàêîå ðåêóðñèÿ?
2. Íàçîâèòå äîñòîèíñòâà åå èñïîëüçîâàíèÿ?
3. ×òî òàêîå ôóíêöèîíàë?
4. Íàçîâèòå îñîáåííîñòè ïðèìåíÿþùèõ è îòîáðàæàþùèõ ôóíêöèîíàëîâ?
5. Äëÿ ÷åãî îíè èñïîëüçóþòñÿ?
6. ×òî òàêîå ìàêðîñ?
7. Êîãäà èõ èñïîëüçóþò?
Ëàáîðàòîðíàÿ ðàáîòà ¹5.
Òåìà: Òèïû äàííûõ è ñðåäñòâà ðàáîòû ñ íèìè. Ïðåäñòàâëåíèå çíàíèé.
Öåëü: Èçó÷èòü òèïû äàííûõ, èñïîëüçóåìûå â MuLisp, à òàê æå íàó÷èòüñÿ ïðèìåíÿòü èõ â ïðîãðàììàõ.
Òî÷å÷íàÿ íîòàöèÿ.
Ñòðóêòóðèðîâàííûå òèïû äàííûõ.
Ïðåäñòàâëåíèå çíàíèé.
Çàäàíèÿ ê ëàáîðàòîðíîé ðàáîòå.
1. Òî÷å÷íàÿ íîòàöèÿ.
 Ëèñïå ñóùåñòâóåò ïîíÿòèå òî÷å÷íîé ïàðû. Íàçâàíèå òî÷å÷íîé ïàðû ïðîèñõîäèò èç èñïîëüçîâàííîé â åå çàïèñè òî÷å÷íîé íîòàöèè, â êîòîðîé äëÿ ðàçäåëåíèÿ ïîëåé CAR è CDR èñïîëüçóåòñÿ âûäåëåííàÿ ïðîáåëàìè òî÷êà. Áàçîâûå ôóíêöèè CAR è CDR äåéñòâóþò ñîâåðøåííî ñèììåòðè÷íî.
_(CONS ‘a ‘d) ð (a . d)
_(CAR ‘(a . b)) ð a
_(CDR ‘(a . (b . c))) ð (b . c)
Ëþáîé ñïèñîê ìîæíî çàïèñàòü â òî÷å÷íîé íîòàöèè. Ïðåîáðàçîâàíèå ìîæíî îñóùåñòâèòü (íà âñåõ óðîâíÿõ ñïèñêà) ñëåäóþùèì îáðàçîì:
(a1 a2 ... an) ó (a1 . (a2 . ...(an . nil)... ))
_(a b c (d e)) ó (a . (b . (c . ((d . (e . nil)) . nil))))
Ïðèçíàêîì ñïèñêà çäåñü ñëóæèò NIL â ïîëå CDR ïîñëåäíåãî ýëåìåíòà ñïèñêà, ñèìâîëèçèðóþùèé åãî îêîí÷àíèå.
Èñïîëüçîâàíèå òî÷å÷íûõ ïàð â ïðîãðàììèðîâàíèè íà Ëèñïå â îáùåì-òî èçëèøíå. Òî÷å÷íûå ïàðû ïðèìåíÿþòñÿ â òåîðèè, êíèãàõ è ñïðàâî÷íèêàõ ïî Ëèñïó. Êðîìå òîãî îíè èñïîëüçóþòñÿ ñîâìåñòíî ñ íåêîòîðûìè òèïàìè äàííûõ è ñ àññîöèàòèâíûìè ñïèñêàìè, à òàêæå â ñèñòåìíîì ïðîãðàììèðîâàíèè.
2. Ñòðóêòóðèðîâàííûå òèïû äàííûõ.
Ñïèñêè (àññîöèàòèâíûå).
Àññîöèàòèâíûé ñïèñîê èëè ïðîñòî à-ñïèñîê - ñîñòîèò èç òî÷å÷íûõ ïàð, ïîýòîìó åãî òàêæå íàçûâàþò ñïèñêîì ïàð.
((a1 . t1) (a2 . t2) ... (an . tn))
Ïåðâûé ýëåìåíò ïàðû íàçûâàþò êëþ÷îì à âòîðîé - ñâÿçàííûìè ñ êëþ÷îì äàííûìè. Îáû÷íî êëþ÷îì ÿâëÿåòñÿ ñèìâîë. ñâÿçàííûå ñ íèì äàííûå ìîãóò áûòü ñèìâîëàìè, ñïèñêàìè èëè êàêèìè íå áóäü äðóãèìè ëèñïîâñêèìè îáúåêòàìè.
 ðàáîòå ñî ñïèñêàìè ïàð íóæíî óìåòü ñòðîèòü ñïèñêè, èñêàòü äàííûå ïî êëþ÷ó è îáíîâëÿòü èõ.
PAIRLIS.
Ôóíêöèÿ PAIRLIS ñòðîèò à-ñïèñîê èç ñïèñêà êëþ÷åé è ñïèñêà, ñôîðìèðîâàííîãî èç ñîîòâåòñòâóþùèõ èì äàííûõ. Òðåòüèì àðãóìåíòîì ÿâëÿåòñÿ ñòàðûé à-ñïèñîê, â íà÷àëî êîòîðîãî äîáàâëÿþòñÿ íîâûå ïàðû:
(PAIRLIS êëþ÷è äàííûå à-ñïèñîê)
_(SETQ ñïèñ ‘(îäèí . Èâàíîâ)) ð (îäèí . Èâàíîâ)
_(SETQ ñïèñ
(PAIRLIS ‘(òðè äâà) ‘(Ïåòðîâ Ñèäîðîâ)
ñïèñ)) ð ((òðè . Ïåòðîâ) (äâà . Ñèäîðîâ) (îäèí . Èâàíîâ))
ASSOC.
Àññîöèàòèâíûé ñïèñîê ìîæíî ñ÷èòàòü îòîáðàæåíèåì èç ìíîæåñòâà êëþ÷åé â ìíîæåñòâî çíà÷åíèé. Äàííûå ìîæíî ïîëó÷èòü ñ ïîìîùüþ ôóíêöèè
(ASSOC êëþ÷ à-ñïèñîê)
êîòîðàÿ èùåò â ñïèñêå ïàð äàííûå, ñîîòâåòñòâóþùèå êëþ÷ó, ñðàâíèâàÿ èñêîìûé êëþ÷ ñ êëþ÷àìè ïàð ñëåâà íàïðàâî.
_(ASSOC ‘òðè ñïèñ) ð (òðè . Ïåòðîâ)
ACONS.
Àññîöèàòèâíûé ñïèñîê ìîæíî îáíîâëÿòü è èñïîëüçîâàòü â ðåæèìå ñòåêà. Íîâûå ïàðû äîáàâëÿþòñÿ ê íåìó òîëüêî â íà÷àëî ñïèñêà, õîòÿ â ñïèñêå óæå ìîãóò áûòü äàííûå ñ òåì æå êëþ÷îì. Ýòî îñóùåñòâëÿåòñÿ ôóíêöèåé ACONS:
(ACONS x y à-ñïèñîê)
Ïîñêîëüêó ASSOC ïðîñìàòðèâàåò ñïèñîê ñëåâà íàïðàâî è äîõîäèò ëèøü äî ïåðâîé ïàðû ñ èñêîìûì êëþ÷îì, òî áîëåå ñòàðûå ïàðû êàê áû îñòàþòñÿ â òåíè áîëåå íîâûõ.
Ñòðîêè.
Ñòðîêà ñîñòîèò èç ïîñëåäîâàòåëüíîñòè çíàêîâ.  ñòðîêå çíàêè çàïèñûâàþòñÿ â ïîñëåäîâàòåëüíîñòè äðóã çà äðóãîì, äëÿ îãðàíè÷åíèÿ êîòîðîé ñ îáåèõ ñòîðîí â êà÷åñòâå îãðàíè÷èòåëÿ èñïîëüçóåòñÿ çíàê «».
Ïðè ââîäå ñòðîêè â èíòåðïðåòàòîðå, â êà÷åñòâå ðåçóëüòàòà ïîëó÷àåì òó æå ñòðîêó.
CHAR.
Ïðîèçâîëüíûé ýëåìåíò ñòðîêè ìîæíî ïðî÷èòàòü (ò. å. ñîñëàòüñÿ íà íåãî ñ ïîìîùüþ èíäåêñà) ôóíêöèåé CHAR:
(CHAR ñòðîêà n)
(CHAR «ñòðîêà» 0) ð \ñ ;èíäåêñàöèÿ íà÷èíàåòñÿ ñ 0
Ñðàâíåíèå ñòðîê.
(STRING= ñòðîêà1 ñòðîêà2)
(STRING< ñòðîêà1 ñòðîêà2)
(STRING> ñòðîêà1 ñòðîêà2)
(STRING/= ñòðîêà1 ñòðîêà2)
Ìàññèâû.
Äëÿ ðàáîòû ñ ìàññèâàìè â MuLisp íåîáõîäèìî çàãðóçèòü ôàéë ARRAY.LSP.
Ìàññèâû ñîçäàþòñÿ ôîðìîé:
(MAKE-ARRAY (n1 n2 ... nN) ðåæèìû)
Ôóíêöèÿ âîçâðàùàåò â êà÷åñòâå çíà÷åíèÿ íîâûé îáúåêò - ìàññèâ. n1, n2, ... nN - öåëûå ÷èñëà, èõ êîëè÷åñòâî N îòðàæàåò ðàçìåðíîñòü ìàññèâà, à çíà÷åíèÿ - ðàçìåð ïî êàæäîé ðàçìåðíîñòè. Íåîáÿçàòåëüíûìè àðãóìåíòàìè ìîæíî çàäàòü òèï ýëåìåíòîâ ìàññèâà, óêàçàòü èõ íà÷àëüíûå çíà÷åíèÿ èëè ïðèäàòü ñàìîìó ìàññèâó äèíàìè÷åñêèé ðàçìåð. Îáùèé ðàçìåð ìàññèâà â ýòîì ñëó÷àå çíàòü è çàêðåïëÿòü íå îáÿçàòåëüíî.
Äëÿ âû÷èñëåíèé, îñóùåñòâëÿåìûõ ñ ìàññèâàìè, íàðÿäó ñ ôóíêöèåé ñîçäàíèÿ ìàññèâà èñïîëüçóþòñÿ ôóíêöèè äëÿ âûáîðêè è èçìåíåíèÿ ýëåìåíòîâ ìàññèâà. Ññûëêà íà ýëåìåíò N-ìåðíîãî ìàññèâà îñóùåñòâëÿåòñÿ ñ ïîìîùüþ âûçîâà:
(ARREF ìàññèâ n1 n2 ...nN)
n1, n2, ..., nN - êîîðäèíàòû, èëè èíäåêñû, ýëåìåíòà, íà êîòîðûé ññûëàþòñÿ.  êà÷åñòâå ôóíêöèè ïðèñâàèâàíèÿ èñïîëüçóåòñÿ îáîáùåííàÿ ôóíêöèÿ ïðèñâàèâàíèÿ SETF.
_(SETQ ìàñ (MAKE-ARRAY ‘(5 4)
:ELEMENT-TYPE ‘ATOM
:INITIAL-ELEMENT A)) ð (ARRAY ((A A A A) ... (A A A A) (5 6)))
_(SETF (AREF ìàñ 0 1) B) ð B
_ìàñ ð (ARRAY ((A B A A) ... (A A A A )))
Ñòðóêòóðû.
Äëÿ îáúåäèíåíèÿ îñíîâíûõ òèïîâ äàííûõ (÷èñåë, ñèìâîëîâ, ñòðîê, ìàññèâîâ) â êîìïëåêñû, îòîáðàæàþùèå ïðåäìåòû, ôàêòû èñïîëüçóåòñÿ ñîñòàâíîé òèï, êîòîðûé íàçûâàåòñÿ ñòðóêòóðàìè.
Îïðåäåëåíèå ñòðóêòóðíîãî òèïà îñóùåñòâëÿåòñÿ ñ ïîìîùüþ ìàêðîñà DEFSTRUCT, ôîðìîé êîòîðîãî ÿâëÿåòñÿ
(DEFSTRUCT êëàññ-ñòðóêòóð
ïîëå1
ïîëå2
...)
Îïðåäåëèì ñòðóêòóðíûé òèï ÁÀÇÀ ñîñòîÿùèé èç êîìïîíåíò ÏÐÎÔÈËÜ, ÏËÎÙ è ÂÌÅÑÒÈÌ:
_(DEFSTRUCT áàçà
ïðîôèëü ïëîù âìåñòèì) ð ÁÀÇÀ
Äëÿ êàæäîãî íîâîãî òèïà äàííûõ ãåíåðèðóåòñÿ íà÷èíàþùàÿñÿ ñ MAKE- ôóíêöèÿ ñîçäàíèÿ ñòðóêòóðû äàííîãî òèïà. Íàïðèìåð îáúåêò òèïà ÁÀÇÀ ìîæíî ñîçäàòü è ïðèñâîèòü ïåðåìåííîé ÁÀÇÀ1 ñëåäóþùèì âûçîâîì:
_(SETQ ÁÀÇÀ1 (MAKE-ÁÀÇÀ))
Ïîëþ ñ ïîìîùüþ êëþ÷åâîãî ñëîâà, êîòîðûì ÿâëÿåòñÿ èìÿ ïîëÿ ñ äâîåòî÷èåì ïåðåä íèì, ïðèñâîèòü ïðè ñîçäàíèè íà÷àëüíîå çíà÷åíèå.
Âûçîâ MAKE-ÁÀÇÀ âîçâðàùàåò â êà÷åñòâå çíà÷åíèÿ ñîçäàííóþ ñòðóêòóðó.
Äëÿ êîïèðîâàíèÿ ñòðóêòóðû ãåíåðèðóåòñÿ ôóíêöèÿ, íà÷èíàþùàÿñÿ ñ COPY- (COPY-ÁÀÇÀ).
Äëÿ êàæäîãî ïîëÿ îïðåäåëÿåìîé ñòðóêòóðû ñîçäàåòñÿ ôóíêöèÿ äîñòóïà, èìÿ êîòîðîé îáðàçóåòñÿ íàïèñàíèåì ïîñëå èìåíè òèïà ÷åðåç òèðå èìåíè ïîëÿ, íàïðèìåð:
_(ÁÀÇÀ-ÏÐÎÔÈËÜ x)
Âûçîâ âîçâðàùàåò çíà÷åíèå ïîëÿ ÏÐÎÔÈËÜ äëÿ ÁÀÇÛ, çàäàâàåìîé ñòðóêòóðîé x.
Äëÿ ïðèñâàèâàíèÿ çíà÷åíèé ïîëÿì ñòðóêòóðû èñïîëüçóåòñÿ îáîáùåííàÿ ôóíêöèÿ ïðèñâàèâàíèÿ SETF:
_(SETF (ÁÀÇÀ-ÏÐÎÔÈËÜ ÁÀÇÀ1) ÎÂÎÙ) ð ÎÂÎÙ
3. Ïðåäñòàâëåíèå çíàíèé.
Ïðîäóêöèîííûå ñèñòåìû
Äëÿ ïðåäñòàâëåíèÿ çíàíèé èñïîëüçóþò ðàçëè÷íûå ôîðìàëèçìû è ÿçûêè ïðåäñòàâëåíèÿ äàííûõ. Íàèáîëåå ðàñïðîñòðàíåííûì è ïðîñòûì äëÿ ïîíèìàíèÿ ÿâëÿåòñÿ ïðåäñòàâëåíèå çíàíèé ïðè ïîìîùè ïðàâèë ïðîäóêöèè âèäà:
«ÅÑËÈ <óñëîâèå>, ÒÎ <ñëåäñòâèå>»
Óñëîâèÿ è ñëåäñòâèÿ - ýòî ïðîñòûå ïðåäëîæåíèÿ åñòåñòâåííîãî ÿçûêà. Òàêèå ôîðìàëèçìû íàçûâàþò ïðîäóêöèîííûìè. Ýòè ïðàâèëà ïîõîæè íà óñëîâíûå îïåðàòîðû IF-THEN ÿçûêîâ ïðîãðàììèðîâàíèÿ, îäíàêî ñîâåðøåííî ïî äðóãîìó èíòåðïðåòèðóþòñÿ.
(ÅÑËÈ íà ëàìïî÷êó ïîäàíî íàïðÿæåíèå
è ëàìïî÷êà íå ãîðèò
òî ëàìïî÷êà ïåðåãîðåëà)
×åðåç ïðàâèëà ìîæíî îïðåäåëèòü, êàê ïðîãðàììà äîëæíà ðåàãèðîâàòü íà èçìåíåíèå äàííûõ. Ïðè ýòîì íå íóæíî çàðàíåå çíàòü áëîê-ñõåìó óïðàâëåíèÿ îáðàáîòêîé äàííûõ.  îáû÷íîé ïðîãðàììå ñõåìà ïåðåäà÷è óïðàâëåíèÿ è èñïîëüçîâàíèÿ äàííûõ ïðåäîïðåäåëåíèÿ ñàìîé ïðîãðàììîé. Âåòâëåíèå â òàêèõ ïðîãðàììàõ âîçìîæíî òîëüêî â çàðàíåå âûáðàííûõ òî÷êàõ. Äëÿ çàäà÷, õîä ðåøåíèÿ êîòîðûõ óïðàâëÿåòñÿ ñàìèìè äàííûìè, ãäå âåòâëåíèå ñêîðåå íîðìà, ÷åì èñêëþ÷åíèå, ýòîò ñïîñîá ìàëîýôôåêòèâåí.
Ôðåéìû.
Ýòî ÷àñòíûé ñëó÷àé ñåìàíòè÷åñêèõ ñåòåé. Ýòî ìåòîä ïðåäñòàâëåíèÿ çíàíèé, êîòîðûé ñâÿçûâàåò ñâîéñòâà ñ óçëàìè , ïðåäñòàâëÿþùèìè ïîíÿòèÿ è îáúåêòû. Ñâîéñòâà îïèñûâàþòñÿ àòðèáóòàìè (íàçûâàåìûìè ñëîòàìè) è èõ çíà÷åíèÿìè.
[f(
ãäå
f - èìÿ
ôðåéìà;
Èñïîëüçîâàíèå ôðåéìîâ ñ èõ àòðèáóòàìè è âçàèìîñâÿçÿìè ïîçâîëÿåò õðàíèòü çíàíèÿ î ïðåäìåòíîé îáëàñòè â ñòðóêòóðèðîâàííîì âèäå, ïðåäñòàâëÿòü â ÁÇ àáñòðàêöèè è àíàëîãèè. Ñèñòåìà çíàíèé ïðåäñòàâëÿåòñÿ â âèäå ñåòè ïîä ôðåéìîì èëè ñóáôðåéìîì. Êàæäûé èç ôðåéìîâ îòðàæàåò îïðåäåëåííûå ñâîéñòâà, ïîíÿòèÿ, ò. å. ïîçâîëÿåò óäîâëåòâîðÿòü òðåáîâàíèþ ñòðóêòóðèðîâàííîñòè è ñâÿçíîñòè.
Ñ îïåðàöèÿìè ïðèñâàèâàíèÿ çíà÷åíèé ôðåéìàì è äðóãèìè îïåðàöèÿìè ìîæíî ñî÷åòàòü ñëîæíûå ïîáî÷íûå äåéñòâèÿ è âçàèìîâëèÿíèÿ.
Îäíîé èç âàæíåéøèõ êîíöåïöèé ôîðìàëèçìà ôðåéìîâ ÿâëÿåòñÿ íàñëåäîâàíèå. Ìîæíî äàòü óêàçàíèå, ÷òî åñëè çíà÷åíèå ñëîòà â îäíîì èç ôðåéìîâ íå çàäàåòñÿ, òî ôðåéì äîëæåí óíàñëåäîâàòü óìàë÷èâàìîå çíà÷åíèå ýòîãî ñëîòà èç ôðåéìà áîëåå âûñîêîãî óðîâíÿ. Íàñëåäîâàíèå ôðåéìàìè çíà÷åíèé ñëîòîâ áóäåò îñóùåñòâëÿòüñÿ â òîì ñëó÷àå, åñëè â ôðåéìå áóäåò ïðèñóòñòâîâàòü ñëîò ÐÀÇÍÎÂÈÄÍÎÑÒÜ, â êîòîðîì ñîäåðæèòñÿ èìÿ äðóãîãî ôðåéìà.
Èñïîëüçóþòñÿ è äðóãèå ñâÿçàííûå ñ êîíêðåòíûì ïðèìåíåíèåì ñïîñîáû ïðåäñòàâëåíèÿ, íî îíè ìåíåå ðàñïðîñòðàíåíû è, êàê ïðàâèëî, íå ãîäÿòñÿ äëÿ èñïîëüçîâàíèÿ â îáùåì ñëó÷àå.
Íå âñåãäà ìîæíî îäíîçíà÷íî ñêàçàòü, êàêîé ôîðìàëèçì ïðåäñòàâëåíèÿ èñïîëüçîâàí â ñèñòåìå.  ðàìêàõ îäíîé è òîé æå ñèñòåìû äëÿ ïðåäñòàâëåíèÿ ðàçëè÷íûõ âèäîâ çíàíèé ìîãóò áûòü èñïîëüçîâàíû ðàçëè÷íûå ôîðìàëèçìû.
Ïðèìåð1.
 êà÷åñòâå ïðèìåðà ïðåäñòàâëåíèÿ çíàíèé â âèäå ïðîäóêöèé ðàññìîòðèì ïðîãðàììó õðàíÿùóþñÿ â ôàéëå EXSIS.LSP.
;EXSIS.LSP - ïðèìåð ïðåäñòàâëåíèÿ çíàíèé â âèäå ïðîäóêöèé
;îïðåäåëèì
ïðåäëîæåíèÿ
ÿâëÿþùèåñÿ
ïðàâèëàìè â
âèäå ñòðóêòóð,
ñîñòîÿùèõ èç
èìåíè ïðàâèëà,
óñëîâèé è âûâîäîâ,
ïðåäñòàâëåííûõ
â âèäå ñïèñêà
ôàêòîâ
(defstruct prav èìÿ óñëîâèÿ âûâîäû) ;îïðåäåëåíèå ñòðóêòóðíîãî òèïà PRAV
;ñîçäàíèå ñòðóêòóð òèïà PRAV è ïðèñâàèâàíèå èõ ïåðåìåííûì PRAV1 ... PRAV5
(setq prav1 (make-prav :èìÿ 'prav1 ;ïðèñâîåíèå ïîëþ èìÿ çíà÷åíèÿ
:óñëîâèÿ '((æèâ èìååò øåðñòü))
:âûâîäû '((æèâ ìëåêîïèòàþùåå))))
(setq prav2 (make-prav :èìÿ 'prav2
:óñëîâèÿ '((æèâ êîðìèò äåòåíûøåé ìîëîêîì))
:âûâîäû '((æèâ ìëåêîïèòàþùåå))))
(setq prav3 (make-prav :èìÿ 'prav3
:óñëîâèÿ '((æèâ èìååò ïåðüÿ))
:âûâîäû '((æèâ ïòèöà))))
(setq prav4 (make-prav :èìÿ 'prav4
:óñëîâèÿ '((æèâ óìååò ëåòàòü)
(æèâ íåñåò ÿéöà))
:âûâîäû '((æèâ ïòèöà))))
(setq prav5 (make-prav :èìÿ 'prav5
:óñëîâèÿ '((æèâ åñò ìÿñî))
:âûâîäû '((æèâ õèùíèê))))
(setq *ïðàâèëà* '(prav1 prav2 prav3 prav4 prav5) ;ñïèñîê, õðàíÿùèé ïðàâèëà ñèñòåìû
(defun ïðîâåðü-ïðàâèëî (ïðàâèëî)
;ïðîâåðÿåò ïðèìåíèìî ëè ïðàâèëî
(ïîäìíîæ (prav-óñëîâèÿ ïðàâèëî) *ôàêòû*))
(defun ïîäìíîæ (ïîäìíîæ ìíîæ)
;ïðîâåðÿåò, ÿâëÿåòñÿ ëè ìíîæ ïîäìíîæ
(equal ïîäìíîæ (intersection1 ïîäìíîæ ìíîæ)))
(defun äîáàâü-âûâîäû (ïðàâèëî)
;ðàñøèðÿåò ñïèñîê ôàêòîâ ïðàâèëàìè âûâîäà
(do ((âûâîäû (prav-âûâîäû ïðàâèëî))) ;èíèöèàëèçàöèÿ íà÷àëüíîãî çíà÷åíèÿ
((null âûâîäû) *ôàêòû*) ;óñëîâèå îêîí÷àíèÿ
(if (member (car âûâîäû) *ôàêòû*) nil ;ïðîâåðêà - âõîäèò «ãîëîâà»
(progn (prin1 "Ñîãëàñíî ïðàâèëó:") ;âûâîäîâ â ñïèñîê ôàêòîâ
(prin1 (prav-name ïðàâèëî))
(push (car âûâîäû) *ôàêòû*)))
(setq âûâîäû (cdr âûâîäû)))) ;øàã èçìåíåíèÿ
Äëÿ ïðîâåðêè ðàáîòîñïîñîáíîñòè ïðîãðàììû íåîáõîäèìî âûïîëíèòü ñëåäóþùóþ ïîñëåäîâàòåëüíîñòü êîìàíä:
MuLisp-87.com Common.lsp - Çàãðóçêà ñèñòåìû
(load structur.lsp) - ïîäêëþ÷åíèå ïðèëîæåíèÿ äëÿ ðàáîòû ñî ñòðóêòóðàìè
(load rash.lsp) - ïîäêëþ÷åíèå ðàñøèðåíèÿ, êîòîðîå ìû ðàññìîòðèì ïîçæå
(load exsis.lsp) - ïîäêëþ÷åíèå òåñòèðóåìîé ïðîãðàììû
 íà÷àëå ðàáîòû ñ ïðîãðàììîé íåîáõîäèìî èíèöèàëèçèðîâàòü ñïèñîê ôàêòîâ
(SETQ *ôàêòû* ‘(íà÷àëüíûå ôàêòû))
ãäå íà÷àëüíûå ôàêòû - óñëîâèÿ èç êàêîãî-ëèáî ïðàâèëà
Ïðèìåð2.
Ïðèìåð ïðåäñòàâëåíèÿ çíàíèé ñ ïîìîùüþ ôðåéìîâ.  ïðèìåðå óïîìèíàþòñÿ òðè ôðåéìà - ÌÅÐÎÏÐÈßÒÈÅ, ÑÎÁÐÀÍÈÅ è ÑÎÁÐÀÍÈÅ1. Ôðåéì ÌÅÐÎÏÐÈßÒÈÅ - íàèáîëåå îáùèé, ôðåéì ÑÎÁÐÀÍÈÅ - áîëåå êîíêðåòíûé, îïèñûâàþùèé âèä ÌÅÐÎÏÐÈßÒÈß, à ôðåéì ÑÎÁÐÀÍÈÅ1 - íàèáîëåå óòî÷íåííûé ôðåéì, îïèñûâàþùèé êîíêðåòíîå ÑÎÁÐÀÍÈÅ. Ôðåéì ÑÎÁÐÀÍÈÅ íàçûâàåòñÿ ñóáôðåéìîì ôðåéìà ÌÅÐÎÏÐÈßÒÈÅ, à ÑÎÁÐÀÍÈÅ1 - ñóáôðåéì ôðåéìà ÑÎÁÐÀÍÈÅ.
(ñîáðàíèå èìÿ ôðåéìà
(ðàçíîâèäíîñòü (ìåðîïðèÿòèå)) èìåíà è çíà÷åíèÿ ñëîòîâ
(âðåìÿ (ñðåäà 14.00)) (óìàë÷èâàåìûå çíà÷åíèÿ
(ìåñòî (çàë çàñåäàíèé)) íàñëåäóþòñÿ ñóáôðåéìàìè)
)
(ñîáðàíèå1
(ðàçíîâèäíîñòü (ñîáðàíèå))
(ïðèñóòñòâóþò ((Âàñÿ) (Ïåòÿ) (Ìàøà)))
)
Ðåàëèçàöèÿ ôðåéì-ïðîãðàììû íà Ëèñïå.
;EXSIS2 - ðåàëèçàöèÿ ôðåéì-ïðîãðàììû íà Ëèñïå.
(setf (get ‘ñîáðàíèå ‘ðàçíîâèäíîñòü) ‘ìåðîïðèÿòèå)
(setf (get ‘ñîáðàíèå ‘âðåìÿ) ‘(ñðåäà 14.00))
(setf (get ‘ñîáðàíèå ‘ìåñòî) ‘(çàë çàñåäàíèé))
(setf (get ‘ñîáðàíèå1 ‘ðàçíîâèäíîñòü) ‘ñîáðàíèå)
(setf (get ‘ñîáðàíèå1 ‘ïðèñóòñòâóþò) ‘((Âàñÿ) (Ïåòÿ) (Ìàøà)))
;ôóíêöèÿ - îïðåäåëÿþùàÿ íàñëåäóåìûå ñâîéñòâà
(defun íàñëåäîâàíèå (ôðåéì èìÿ_ñëîòà)
(cond ((get ôðåéì èìÿ_ñëîòà)) ;èìååòñÿ âî ôðåéìå äàííûé ñëîò?
;åñëè äà, òî âåðíóòü åãî çíà÷åíèå.
(t (cond ((get ôðåéì ‘ðàçíîâèäíîñòü) ;èíà÷å - ïðîâåðèòü íàëè÷èå
;ñëîòà ðàçíîâèäíîñòü.  ñëó÷àå åãî ïðèñóòñòâèÿ - ðåêóðñèâíî ïðèìåíèòü
;ôóíêöèþ ê âåðõíèì ôðåéìàì
(íàñëåäîâàíèå (get ôðåéì ‘ðàçíîâèäíîñòü) èìÿ_ñëîòà))
(t nil)))))
4. Çàäàíèÿ ê ëàáîðàòîðíîé ðàáîòå.
1.Ïåðåâåäèòå ñëåäóþùèå ñïèñî÷íûå çàïèñè â òî÷å÷íûå:
(w (x));
((w) x);
(nil nil nil);
(v (w) x (y z));
((v w) (x y) z);
(((v) w x) y z).
2. Ïåðåâåäèòå ñëåäóþùèå òî÷å÷íûå çàïèñè â ñïèñî÷íûå:
(a . (b . (c . nil)));
((a . nil) . nil);
(nil . (a . nil));
(a . ((b . (c . nil)) . ((d . (e . nil)) . nil)));
(a . (b . ((c . (d . ((e . nil) . (nil))) . nil)));
((a . (b . nil)) . (c . ((d . nil) . (e . nil)))).
3. Íàïèøèòå ôóíêöèþ:
îò òðåõ àðãóìåíòîâ, àíàëîã âñòðîåííîé ôóíêöèè pairlis, êîòîðàÿ ñòðîèò ñïèñîê ïàð;
îò äâóõ àðãóìåíòîâ, àíàëîã âñòðîåííîé ôóíêöèè assoc, êîòîðàÿ èùåò ïàðó, ñîîòâåòñòâóþùóþ êëþ÷ó.
4. Íàïèøèòå ôóíêöèþ, àíàëîã ôóíêöèè putassoc êîòîðàÿ ôèçè÷åñêè èçìåíÿåò à-ñïèñîê (putassoc1 êëþ÷ äàííûå à-ñïèñîê).
5. Ðàñøèðüòå âîçìîæíîñòè ïðîãðàììû EXSIS.LSP:
íàïèøèòå ôóíêöèþ, ïîïîëíÿþùóþ áàçó çíàíèé íîâûìè çíàíèÿìè;
íàïèøèòå ôóíêöèþ, óäàëÿþùóþ íåíóæíûå çíàíèÿ;
ðàñøèðüòå áàçó çíàíèé;
íàïèøèòå ãëàâíóþ ïðîãðàììó, ê êîòîðîé äîëæíû áûòü ïîäêëþ÷åíû âñå ðàíåå íàïèñàííûå ôóíêöèè (è èìåþùèåñÿ â EXSIS.LSP), è êîòîðàÿ âûïîëíÿëà áû èõ â äèàëîãîâîì ðåæèìå.
6. Ïîäîáíûì îáðàçîì èçìåíèòå ïðîãðàììó EXSIS1.LSP.
7. Ðàçðàáîòàéòå áàçó çíàíèé è ïðàâèëà áàçû çíàíèé ÐÀÑÏÈÑÀÍÈÅ ÇÀÍßÒÈÉ èñïîëüçóÿ:
ôîðìàëèçì ôðåéìîâ;
ôîðìàëèçì ïðîäóêöèé.
5. Âîïðîñû.
1.  ÷åì îñîáåííîñòè òî÷å÷íîé íîòàöèè?
2. Íàçîâèòå ñòðóêòóðèðîâàííûå òèïû äàííûõ, èõ îñîáåííîñòè?
3. Ñïîñîáû ïðåäñòàâëåíèÿ çíàíèé?
4. Èõ äîñòîèíñòâà è íåäîñòàòêè?
Ëàáîðàòîðíàÿ ðàáîòà ¹ 6.
Òåìà: Èçó÷åíèå ó÷åáíîé âåðñèè ÿçûêà Ëèñï - dlisp. Ðàñøèðåíèå áèáëèîòåêè ôóíêöèé dlisp.
Öåëü: Îçíàêîìèòüñÿ ñ ó÷åáíîé âåðñèåé Ëèñïà - dlisp. Èçó÷èòü åå âîçìîæíîñòè è îñîáåííîñòè. Ðàñøèðèòü áèáëèîòåêó ôóíêöèé dlisp.
Èíòåðôåéñ ïîëüçîâàòåëÿ.
Ôóíêöèè, ïîääåðæèâàåìûå dlisp.
Ðàñøèðåíèå áèáëèîòåêè ôóíêöèé dlisp.
Çàäàíèå ê ëàáîðàòîðíîé ðàáîòå.
1. Èíòåðôåéñ ïîëüçîâàòåëÿ.
Çàïóñê ñèñòåìû îñóùåñòâëÿåòñÿ êîìàíäîé:
DLISP.EXE
Ïðè çàãðóçêå ñèñòåìû íà÷èíàåò ðàáîòàòü ðåäàêòîð, îí ÷èñòèò ýêðàí, ðèñóåò ðàìêó è âûäàåò íà ýêðàí ãëàâíîå ìåíþ:
Ôàéë. Èìååò ñëåäóþùèå îïöèè: íîâûé, îòêðûòü, ñîõðàíèòü, ñîõðàíèòü êàê, âûõîä.
Ïðîñìîòð: ýêðàí âûâîäà, ýêðàí èíòåðïðåòàòîðà.
Ðåäàêòîð.
Ïîèñê: ïîèñê, ïîâòîðèòü ïîèñê, çàìåíà.
Çàïóñê: âûïîëíèòü, ïåðåçàïóñòèòü, ïðîäîëæèòü.
Îòëàäêà: øàã, òðàññèðîâêà, êîíòðîëüíàÿ òî÷êà, î÷èñòèòü âñå.
Ïàðàìåòðû: ðåæèì ýêðàíà, ïðîâåðêà ñèíòàêñèñà.
Ñïðàâêà.
Çàòåì ñèñòåìà æäåò, ïîêà ïîëüçîâàòåëü íå âûáåðåò îäíó èç îïöèé.
Ðåäàêòîð ðàáîòàåò ñ ôàéëàìè, èìåþùèìè ðàñøèðåíèå LSP è íàõîäÿùèìèñÿ â òîé æå äèðåêòîðèè, ÷òî è ôàéë DLISP.EXE
Ðåçóëüòàòû âû÷èñëåíèé âûâîäÿòñÿ íà ñïåöèàëüíûé ýêðàí. Äëÿ ïðîñìîòðà ýòèõ ðåçóëüòàòîâ íåîáõîäèìî âûáðàòü îïöèþ «Ïðîñìîòð» ãëàâíîãî ìåíþ, à â íåé - «ýêðàí âûâîäà». ×òîáû âåðíóòüñÿ íàçàä íåîáõîäèìî íàæàòü ëþáóþ êëàâèøó.
Äëÿ ïåðåêëþ÷åíèÿ â ðåæèì äèàëîãà èñïîëüçóþò êëàâèøè SHIFT+TAB.
Äëÿ ïîâòîðà ïðåäûäóùåé êîìàíäû èñïîëüçóþò êëàâèøó F3.
2. Ôóíêöèè, ïîääåðæèâàåìûå dlisp.
Dlisp ïîääåðæèâàåò íåñêîëüêî ðàçëè÷íûõ òèïîâ äàííûõ:
* ñïèñêè
* ñèìâîëû
* ñòðîêîâûå êîíñòàíòû
* äåéñòâèòåëüíûå ÷èñëà
* öåëûå ÷èñëà
Ïî ñèíòàêñèñó è ñîãëàøåíèÿì Dlisp áëèçîê ê MuLispó, áîëåå òîãî, îí ÿâëÿåòñÿ íåáîëüøîé åãî ÷àñòüþ.
Dlisp ñîäåðæèò íåêîòîðîå ÷èñëî çàðàíåå îïðåäåëåííûõ ôóíêöèé. Êàæäàÿ ôóíêöèÿ âûçûâàåòñÿ êàê ñïèñîê, ïåðâûì ýëåìåíòîì êîòîðîãî ÿâëÿåòñÿ èìÿ ôóíêöèè, à îñòàëüíûìè - àðãóìåíòû ýòîé ôóíêöèè (åñëè îíè åñòü). Ìíîãèå èç ôóíêöèé - ñòàíäàðòíûå ôóíêöèè LISP, èõ ìîæíî íàéòè â êàæäîì ðóêîâîäñòâå ïî ÿçûêó.
Ôóíêöèè MuLispà ïîääåðæèâàåìûå dlispîì è îïðåäåëåííûå íàìè â ïðåäûäóùèõ ëàáîðàòîðíûõ ðàáîòàõ.
(+ <÷èñëî> <÷èñëî>...)
(- <÷èñëî> <÷èñëî>...)
(* <÷èñëî> <÷èñëî>...)
(/ <÷èñëî> <÷èñëî>...)
(= <àòîì> <àòîì>...)
(/= <àòîì1> <àòîì2>)
(< <àòîì> <àòîì>...)
(<= <àòîì> <àòîì>...)
(> <àòîì> <àòîì>...)
(>= <àòîì> <àòîì>...)
(and <âûðàæåíèå>...)
(atom <ýëåìåíò>)
(boundp <àòîì>)
(car <ñïèñîê>)
(cdr <ñïèñîê> )
(cond (<òåñò1> <ðåçóëüòàò>...)...)
(cons <ïåðâûé ýëåìåíò> <ñïèñîê>)
(defun <ñèìâîë> <ñïèñîê àðãóìåíòîâ> <âûðàæåíèå>...)
(eq <âûðàæåíèå1> <âûðàæåíèå2>)
(if <òåêñò-âûðàæåíèå> <âûðàæåíèå-òîãäà> [<âûðàæåíèå-èíà÷å>])
(lambda <àðãóìåíòû> <âûðàæåíèå> ...)
(list <âûðàæåíèå> ...)
(listp <ýëåìåíò>)
(mapcar <ôóíêöèÿ> <ñïèñîê1>...<ñïèñîên>)
(not <ýëåìåíò>)
(null <ýëåìåíò>)
(numberp <ýëåìåíò>)
(or <âûðàæåíèå>...)
(princ <âûðàæåíèå> [<îïèñàòåëü ôàéëà>])
(print <âûðàæåíèå> [<îïèñàòåëü ôàéëà>])
(progn <âûðàæåíèå>...)
(quote <âûðàæåíèå>)
(read <ñòðîêà>)
(set <ñèìâîë> <âûðàæåíèå>)
(setq <ñèìâîë1> <âûðàæåíèå1> [<ñèìâîë2> <âûðàæåíèå2>]...)
(while <òåñò-âûðàæåíèå> <âûðàæåíèå>...)
(zerop <ýëåìåíò>)
Ôóíêöèè dlispà íå èñïîëüçóåìûå MuLispîì.
(cos <óãîë>)
Ýòà ôóíêöèÿ âîçâðàùàåò êîñèíóñ <óãëà>, ãäå <óãîë> - âûðàæàåòñÿ â ðàäèàíàõ. Íàïðèìåð:
(cos 0.0) âîçâðàùàåò 1.000000
(cos pi) âîçâðàùàåò -1.000000
(sin <ýëåìåíò>)
Ýòà ôóíêöèÿ âîçâðàùàåò ñèíóñ <óãëà> êàê äåéñòâèòåëüíîå ÷èñëî, ãäå <óãîë> âûðàæåí â ðàäèàíàõ. Íàïðèìåð:
(sin 1.0) âîçâðàùàåò 0.841471
(sin 0.0) âîçâðàùàåò 0.000000
(min <÷èñëî> <÷èñëî>...)
Ýòà ôóíêöèÿ âîçâðàùàåò íàèìåíüøåå èç çàäàííûõ <÷èñåë>. Êàæäîå<÷èñëî> ìîæåò áûòü äåéñòâèòåëüíûì èëè öåëûì.
(nth
Ýòà ôóíêöèÿ
âîçâðàùàåò
"ýííûé" ýëåìåíò
<ñïèñêà>, ãäå
(nth 3 '(a b c d e)) âîçâðàùàåò D
(nth 0 '(a b c d e)) âîçâðàùàåò A
(nth 5 '(a b c d e)) âîçâðàùàåò nil
(strcat <ñòðîêà1> <ñòðîêà2>...)
Ýòà ôóíêöèÿ âîçâðàùàåò ñòðîêó, êîòîðàÿ ÿâëÿåòñÿ ðåçóëüòàòîì ñöåïëåíèÿ ñòðîêè1>, <ñòðîêè2> è ò.ä. Íàïðèìåð:
(strcat "a" "bout") âîçâðàùàåò "about"
(strcat "a" "b" "c") âîçâðàùàåò "abc"
(strcat "a" "" "c") âîçâðàùàåò "ac"
(strlen <ñòðîêà>)
Ýòà ôóíêöèÿ âîçâðàùàåò äëèíó â ñèìâîëàõ ñòðîêîâîé êîíñòàíòû <ñòðîêà> êàê öåëóþ âåëè÷èíó. Íàïðèìåð:
(stalen "abcd") âîçâðàùàåò 4
(stalen "ab") âîçâðàùàåò 2
(stalen "") âîçâðàùàåò 0
(subst <íîâûé ýëåìåíò> <ñòàðûé ýëåìåíò> <ñïèñîê>)
Ýòà ôóíêöèÿ ïðîñìàòðèâàåò <ñïèñîê> â ïîèñêå <ñòàðûõ ýëåìåíòîâ> è âîçâðàùàåò êîïèþ <ñïèñêà> ñ çàìåíîé êàæäîãî âñòðå÷íîãî <ñòàðîãî ýëåìåíòà> íà <íîâûé ýëåìåíò>. Åñëè <ñòàðûé ýëåìåíò> íå íàéäåí â <ñïèñêå>, SUBST âîçâðàùàåò <ñïèñîê> íåèçìåííûì. Íàïðèìåð, äàíî:
(setq sample '(a b (c d) b))
òîãäà:
(subst 'qq 'b sample) âîçâðàùàåò (A QQ (C D) QQ)
(subst 'qq 'z sample) âîçâðàùàåò (A B (C D) B)
(subst 'qq '(c d) sample) âîçâðàùàåò (A B QQ B)
(subst '(qq 'rr) '(c d) sample) âîçâðàùàåò (A B (QQ RR) B)
(subst '(qq 'rr) 'z sample) âîçâðàùàåò (A B (C D) B)
 ñî÷åòàíèè ñ ôóíêöèåé ASSOC, SUBST îáåñïå÷èâàåò óäîáíûé ñïîñîá çàìåíû âåëè÷èíû, íàéäåííîé ïî êëþ÷ó â ñòðóêòóðèðîâàííîì ñïèñêå. Íàïðèìåð, äàíî:
(stq who '((ferst john) (mid q) (last public)))
òîãäà:
(setq old (assoc 'first who)) âîçâðàùàåò (FIRST JOHN)
(setq new '(first j)) âîçâðàùàåò (FIRST J)
(setq new old who) âîçâðàùàåò ((FIRST J) (MID Q) (LAST PUBLIC))
(type <ýëåìåíò>)
Ýòà ôóíêöèÿ âîçâðàùàåò TYPE (òèï) <ýëåìåíòà>, ãäå TYPE - îäíî èç ñëåäóþùèõ çíà÷åíèé (êàê àòîì):
REAL ÷èñëà ñ ïëàâàþùåé çàïÿòîé
STR ñòðîêîâûå êîíñòàíòû
INT öåëûå âåëè÷èíû
SYM ñèìâîëû
LIST ñïèñêè (è ôóíêöèè ïîëüçîâàòåëÿ)
3. Ðàñøèðåíèå áèáëèîòåêè ôóíêöèé dlisp.
Îñíîâíûå ïðèíöèïû ïðîãðàììèðîâàíèÿ íà dlisp òå æå, ÷òî è â MuLisp, ïðè ýòîì ñîõðàíÿåòñÿ è ñèíòàêñèñ MuLispà.
Íèêîãäà íå èñïîëüçóéòå èìåíà âñòðîåííûõ ôóíêöèé èëè ñèìâîëîâ äëÿ ôóíêöèé, îïðåäåëÿåìûõ âàìè, òàê êàê ýòî ñäåëàåò íåäîñòóïíûìè âñòðîåííûå ôóíêöèè.
Ïðèìåð ðàñøèðåíèÿ áèáëèîòåêè ôóíêöèé dlispà ñîäåðæèòñÿ â ôàéëå rash.lsp. Äëÿ åãî çàïóñêà íåîáõîäèìî âûïîëíèòü ñëåäóþùóþ ïîñëåäîâàòåëüíîñòü êîìàíä:
MuLisp87.com Common.lsp
(load rash.lsp)
;File rash.lsp
;(Ïðèëîæåíèå ê ó÷åáíîé âåðñèè ÿçûêà Ëèñï dlisp).
;Ñîäåðæèò ôóíêöèè, ðàñøèðÿþùèå áèáëèîòåêó dlisp Ëèñïà.
;Ôóíêöèÿ APPEND1 ñîåäèíÿåò äâà ñïèñêà â îäèí
(defun append1 (l p)
(if (null l) p ;L ïóñò - âåðíóòü P (óñëîâèå îêîí÷àíèÿ),
(cons (car l) ;èíà÷å - ñîçäàòü ñïèñîê,
(append1 (cdr l) p)))) ;èñïîëüçóÿ ðåêóðñèþ.
;EQUAL1 - ëîãè÷åñêàÿ èäåíòè÷íîñòü îáúåêòîâ (ïàðàëëåëüíàÿ ðåêóðñèÿ)
(defun equal1 (u v)
(cond ((null u) (null v)) ;âîçâðàùàåò T åñëè U è V ïóñòûå
((numberp u) (if (numberp v) (= u v) ; ïðîâåðêà
nil)) ;íà èäåíòè÷íîñòü
((numberp v) nil) ; ÷èñåë
((atom u) (if (atom v) (eq u v) ;ñðàâíåíèå àòîìîâ
nil))
((atom v) nil)
(t (and (equal1 (car u) (car v)) ; èäåíòè÷íîñòü "ãîëîâ"
(equal1 (cdr u) (cdr v)))))) ;èäåíòè÷íîñòü "õâîñòîâ"
;DELETE1 - óäàëÿåò ýëåìåíò X èç ñïèñêà L
(defun delete1 (x l)
(cond ((null l) nil)
((equal1 (car l) x) (delete1 x (cdr l)))
(t (cons (car l) (delete1 x (cdr l)))))) ;âåòâü âûïîëíÿåòñÿ
;â ñëó÷àå íåâûïîëíåíèÿ ïðåäûäóùèõ.
;FULLENGTH1 - îïðåäåëÿåò ïîëíóþ äëèíó ñïèñêà L (íà âñåõ óðîâíÿõ)
(defun fullength1 (l)
(cond ((null l) 0) ;äëÿ ïóñòîãî ñïèñêà âîçâðàùàåòñÿ 0
((atom l) 1) ;åñëè L ÿâëÿåòñÿ àòîìîì - âîçâðàùàåòñÿ 1
(t (+ (fullength1 (car l)) ;ïîäñ÷åò â ãëóáèíó
(fullength1 (cdr l)))))) ;ïîäñ÷åò â øèðèíó
;DELETELIST1 - óäàëÿåò âñå ýëåìåíòû, âõîäÿùèå â ñïèñîê U èç ñïèñêà V
(defun deletelist1 (u v)
(cond ((null u) v)
(t (delete1 (car u)
(deletelist1 (cdr u) v)))))
;MEMBER1 - ïðîâåðÿåò âõîæäåíèå ýëåìåíòà U â ñïèñîê V íà âåðõíåì óðîâíå
(defun member1 (u v)
(cond ((null v) nil)
((equal1 u (car v)) v)
(t (member1 u (cdr v)))))
; ñëó÷àå ïðèñóòñòâèÿ S-âûðàæåíèÿ U â ñïèñêå V ôóíêöèÿ âîçâðàùàåò îñòàòîê ñïèñêà V, íà÷èíàþùèéñÿ ñ U, â ïðîòèâíîì ñëó÷àå ðåçóëüòàòîì âû÷èñëåíèÿ ÿâëÿåòñÿ NIL.
;INTERSECTION1 - âû÷èñëÿåò ñïèñîê îáùèõ ýëåìåíòîâ äâóõ ñïèñêîâ
(defun intersection1 (u v)
(cond ((null u) nil)
((member1 (car u) v);ïðîâåðêà íà âõîæäåíèå "ãîëîâû" ñï. U â ñï. V
(cons (car u) (intersection1 (cdr u) v)));ñîçäàíèå ñïèñêà
(t (intersection1 (cdr u) v))));íåíóæíûå ýëåìåíòû îòáðàñûâàþòñÿ
;UNION1 - îáúåäèíÿåò äâà ñïèñêà, íî â îòëè÷èå îò APPEND1,
;â ðåçóëüòèðóþùèé ñïèñîê íå äîáàâëÿþòñÿ ïîâòîðÿþùèåñÿ ýëåìåíòû
(defun union1 (u v)
(cond ((null u) v)
((member1 (car u) v) ;îòñåèâàíèå
(union1 (cdr u) v)) ; íåíóæíûõ ýëåìåíòîâ
(t (cons (car u)
(union1 (cdr u) v)))))
;COPY-LIST1 - êîïèðóåò âåðõíèé óðîâåíü ñïèñêà
(defun copy-list1 (l)
(cond ((null l) nil)
(t (cons (car l)
(copy-list1 (cdr l))))))
;COPY_TREE1 - êîïèðóåò ñïèñî÷íóþ ñòðóêòóðó
(defun copy-tree1 (l)
(cond ((null l) nil)
((atom l) l)
(t (cons (copy-tree1 (car l))
(copy-tree1 (cdr l))))))
;ADJOIN1 - äîáàâëÿåò ýëåìåíò ê ñïèñêó
(defun adjoin1 (x l)
(cond ((null l) nil)
((atom l) (cons x ;åñëè L àòîì, òî îí ïðåîáðàçóåòñÿ â ñïèñîê,
(cons l nil))) ;à çàòåì ê íåìó äîáàâëÿåòñÿ X
(t (cons x l))))
;SET-DIFFERENCE1 - íàõîäèò ðàçíîñòü äâóõ ñïèñêîâ
(defun set-difference1 (w e)
(cond ((null w) nil)
((member1 (car w) e) ;îòáðàñûâàþòñÿ íåíóæíûå
(set-difference1 (cdr w) e)) ;ýëåìåíòû
(t (cons (car w)
(set-difference1 (cdr w) e)))))
;COMPARE1 - ñðàâíåíèå ñ îáðàçöîì
(defun compare1 (p d)
(cond ((and (null p) (null d)) t) ;èñ÷åðïàëèñü ñïèñêè?
((or (null p) (null d)) nil) ;îäèíàêîâà äëèíà ñïèñêîâ?
((or (equal1 (car p) '&) ;ïðèñóòñòâóåò â îáðàçöå àòîì &
(equal1 (car p) (car d))) ;èëè ãîëîâû ñïèñêîâ ðàâíû
(compare1 (cdr p) (cdr d))) ;& ñîïîñòàâèì ñ ëþáûì àòîìîì
((equal1 (car p) '*) ;ïðèñóòñòâóåò â îáðàçöå àòîì *
(cond ((compare1 (cdr p) d)) ;* íè ñ ÷åì íå ñîïîñòàâèìà
((compare1 (cdr p) (cdr d))) ;* ñîïîñòàâèìà ñ îäíèì àòîìîì
((compare1 p (cdr d))))))) ;* ñîïîñòàâèìà ñ íåñêîëüêèìè
;àòîìàìè
;SUBSTITUTE1 - çàìåíà â ñïèñêå L àòîìà S íà àòîì N
(defun substitute1 (n s l)
(cond ((null l) nil)
((atom (car l))
(cond ((equal1 s (car l))
(cons n (substitute1 n s (cdr l))))
(t (cons (car l) (substitute1 n s (cdr l))))))
(t (cons (substitute1 n s (car l))
(substitute1 n s (cdr l))))))
;DELETE-DUPLICATES1 - óäàëåíèå ïîâòîðÿþùèõñÿ ýëåìåíòîâ
(defun delete-duplicates1 (l)
(cond ((null l) nil)
((member1 (car l) (cdr l))
(delete-duplicates1 (cdr l)))
(t (cons (car l) (delete-duplicates1 (cdr l))))))
;ATOMLIST1 - ïðîâåðêà íà îäíîóðîâíåâûé ñïèñîê
(defun atomlist1 (l)
(cond ((null l) t)
((listp (car l)) nil)
(t (atomlist1 (cdr l)))))
;REVERSE1 - îáðàùàåò âåðõíèé óðîâåíü ñïèñêà
(DEFUN REVERSE1 (l)
(COND ((NULL l ) NIL)
(T (APPEND1 (REVERSE1 (CDR l))
(CONS (CAR l) NIL)))))
4. Çàäàíèå ê ëàáîðàòîðíîé ðàáîòå.
Íàïèøèòå ôóíêöèþ, àíàëîã ñèñòåìíîé ôóíêöèè Ëèñïà:
1. à) (1+ <÷èñëî>) Ðåçóëüòàò ôóíêöèè - <÷èñëî>, óâåëè÷åííîå íà åäèíèöó.
â) (1- <÷èñëî>) Ðåçóëüòàò ôóíêöèè - <÷èñëî>, óìåíüøåííîå íà åäèíèöó.
2. à) (incf ïàìÿòü ïðèðàùåíèå) Äîáàâëåíèå ïðèðàùåíèÿ ê ÷èñëó â ïàìÿòè.
â) (decf ïàìÿòü ïðèðàùåíèå) Âû÷èòàíèå ïðèðàùåíèÿ èç ÷èñëà â ïàìÿòè.
3. (expt <îñíîâàíèå> <ñòåïåíü>) Ýòà ôóíêöèÿ âîçâðàùàåò <îñíîâàíèå>, âîçâåäåííîå â óêàçàííóþ <ñòåïåíü>. Åñëè îáà àðãóìåíòà öåëûå, òî ðåçóëüòàò - öåëîå ÷èñëî.  ëþáîì äðóãîì ñëó÷àå, ðåçóëüòàò - äåéñòâèòåëüíîå ÷èñëî.
4. (gcd <÷èñëî1> <÷èñëî2>) Ôóíêöèÿ âîçâðàùàåò íàèáîëüøèé îáùèé äåëèòåëü <÷èñëà1> è <÷èñëà2>. <×èñëî1> è <÷èñëî2> äîëæíû áûòü öåëûìè.
5. à) (first <ñïèñîê>), second, third, è ò. ä. âîçâðàùàþùèå ñîîòâåòñòâåííî ïåðâûé, âòîðîé, òðåòèé, è ò. ä. ýëåìåíò ñïèñêà.
â) (last <ñïèñîê>) Ýòà ôóíêöèÿ âîçâðàùàåò ïîñëåäíèé ýëåìåíò ñïèñêà. <Ñïèñîê> íå äîëæåí áûòü ðàâåí nil. LAST âîçâðàùàåò ëèáî àòîì ëèáî ñïèñîê.
6. à) (max <÷èñëî> <÷èñëî>...) Ýòà ôóíêöèÿ âîçâðàùàåò íàèáîëüøåå èç çàäàííûõ ÷èñåë.
â) (min <÷èñëî> <÷èñëî> ...) Ýòà ôóíêöèÿ âîçâðàùàåò íàèìåíüøåå èç çàäàííûõ ÷èñåë.
7. à) (evenp <÷èñëî>) Ïðîâåðÿåò, ÷åòíîå ëè ÷èñëî. Îíà âîçâðàùàåò T - åñëè ÷èñëî ÷åòíîå è NIL - â ïðîòèâíîì ñëó÷àå.
â) (oddrp <÷èñëî>) Ýòà ôóíêöèÿ - ïðîòèâîïîëîæíàÿ ïî äåéñòâèþ ôóíêöèè evenp.
8. êîòîðàÿ ñîðòèðóåò ÷èñëà:
à) ïî âîçðàñòàíèþ.
â) ïî óáûâàíèþ.
9. ïðåäèêàò - êîòîðûé îïðåäåëÿåò:
à) ÷èñëà ñ ïëàâàþùåé çàïÿòîé.
â) öåëûå ÷èñëà.
ã) ñòðîêîâûå êîíñòàíòû.
ä) ñèìâîëû.
å) ñïèñêè.
10. çàâèñÿùóþ îò îäíîãî àðãóìåíòà, êîòîðàÿ ãåíåðèðóåò âñå öèêëè÷åñêèå ïåðåñòàíîâêè ñïèñêà.
11. çàâèñÿùóþ îò îäíîãî ýëåìåíòà, êîòîðàÿ ïî äàííîìó ñïèñêó âû÷èñëÿåò ñïèñîê åãî ýëåìåíòîâ:
à) âñòðå÷àþùèõñÿ â íåì áîëåå 1, 2, ... ðàç.
â) âñòðå÷àþùèõñÿ â íåì íå ìåíåå 2, 3, ... ðàç.
S. Çàïèøèòå âñå ôóíêöèè, íàïèñàííûå âàìè, â îäèí ôàéë. Äëÿ îòëàäêè ïðîãðàììû èñïîëüçóéòå âñòðîåííûå ñðåäñòâà dlispà.
5. Âîïðîñû.
1. Êàêèå ñïîñîáû òåñòèðîâàíèÿ ïðîãðàìì ïðåäóñìîòðåíû â dlisp?
2.  ÷åì èõ ðàçëè÷èÿ?
3. Êàêèå ôóíêöèè ïðåäóñìîòðåíû äëÿ ðàáîòû ñî ñòðîêîâûìè êîíñòàíòàìè â dlisp?
4. Íàçîâèòå èõ îñíîâíûå îñîáåííîñòè?
Ñïèñîê èñïîëüçîâàííîé ëèòåðàòóðû.
Ý. ×þâåíåí, È. Ñåïïÿíåí
«Ìèð Ëèñïà»
Ìîñêâà «Ìèð» 1990 ã. Ò.1
2. Ý. ×þâåíåí, È. Ñåïïÿíåí
«Ìèð Ëèñïà»
Ìîñêâà «Ìèð» 1990 ã. Ò.2
«Ïðîãðàììèðîâàíèå íà ÿçûêå R-Lisp»
Ìîñêâà «Ðàäèî è ñâÿçü» 1991 ã.
Ó. Ìàóðåð
«Ââåäåíèå â ïðîãðàììèðîâàíèå íà ÿçûêå Ëèñï»
Ìîñêâà «Ìèð» 1976 ã.
5. Ï. Óèíñòîí
«Èñêóññòâåííûé èíòåëëåêò»
Ìîñêâà «Ìèð» 1980 ã.
«Èñêóññòâåííûé èíòåëëåêò ïðèìåíåíèå â èíòåãðèðîâàííûõ
ïðîèçâîäñòâåííûõ ñèñòåìàõ»
Ìîñêâà «Ìàøèíîñòðîåíèå» 1991 ã.
«Èñêóññòâåííûé èíòåëëåêò:
ïðîãðàììíûå è àïïàðàòíûå ñðåäñòâà» Ñïðàâî÷íèê.
Ìîñêâà «Ðàäèî è ñâÿçü» 1990 ã. Ò.3
Äæ. Ìàëïàñ
«Ðåëÿöèîííûé ÿçûê Ïðîëîã è åãî ïðèìåíåíèå»
Ìîñêâà «Íàóêà» 1990 ã.
È. Áðàòêî
«Ïðîãðàììèðîâàíèå íà ÿçûêå Ïðîëîã äëÿ èñêóññòâåííîãî èíòåëëåêòà»
Ìîñêâà «Ìèð» 1990 ã.
Ï. Ãðåé
«Ëîãèêà, àëãåáðà è áàçû äàííûõ»
Ìîñêâà «Ìàøèíîñòðîåíèå» 1983 ã.
Ë. Í. Ïðåñíóõèí, Â. À. Øàõíîâ
«Êîíñòðóèðîâàíèå ýëåêòðîííûõ âû÷èñëèòåëüíûõ ìàøèí è ñèñòåì»
Ìîñêâà «Âûñøàÿ øêîëà» 1986 ã.
«Îñíîâû èíæåíåðíîé ïñèõîëîãèè»
Ìîñêâà «Âûñøàÿ øêîëà» 1986 ã.
1 Ëèòåðàòóðíûé îáçîð.
Èñêóññòâåííûé èíòåëëåêò (ÈÈ) - ýòî îáëàñòü èññëåäîâàíèé, íàõîäÿùàÿñÿ íà ñòûêå íàóê, ñïåöèàëèñòû, ðàáîòàþùèå â ýòîé îáëàñòè, ïûòàþòñÿ ïîíÿòü, êàêîå ïîâåäåíèå, ñ÷èòàåòñÿ ðàçóìíûì (àíàëèç), è ñîçäàòü ðàáîòàþùèå ìîäåëè ýòîãî ïîâåäåíèÿ (ñèíòåç). Ïðàêòè÷åñêîé öåëüþ ÿâëÿåòñÿ ñîçäàíèå ìåòîäîâ è òåõíèêè, íåîáõîäèìîé äëÿ ïðîãðàììèðîâàíèÿ «ðàçóìíîñòè» è åå ïåðåäà÷è âû÷èñëèòåëüíûì ìàøèíàì (ÂÌ), à ÷åðåç íèõ âñåâîçìîæíûì ñèñòåìàì è ñðåäñòâàì.[1]
 50-õ ãîäàõ èññëåäîâàòåëè â îáëàñòè ÈÈ ïûòàëèñü ñòðîèòü ðàçóìíûå ìàøèíû, èìèòèðóÿ ìîçã. Ýòè ïîïûòêè îêàçàëèñü áåçóñïåøíûìè ïî ïðè÷èíå ïîëíîé íåïðèãîäíîñòè êàê àïïàðàòíûõ òàê è ïðîãðàììíûõ ñðåäñòâ.
 60-õ ãîäàõ ïðåäïðèíèìàëèñü ïîïûòêè îòûñêàòü îáùèå ìåòîäû ðåøåíèÿ øèðîêîãî êëàññà çàäà÷, ìîäåëèðóÿ ñëîæíûé ïðîöåññ ìûøëåíèÿ. Ðàçðàáîòêà óíèâåðñàëüíûõ ïðîãðàìì îêàçàëàñü ñëèøêîì òðóäíûì è áåñïëîäíûì äåëîì. ×åì øèðå êëàññ çàäà÷, êîòîðûå ìîæåò ðåøàòü îäíà ïðîãðàììà, òåì áåäíåå îêàçûâàþòñÿ åå âîçìîæíîñòè ïðè ðåøåíèè êîíêðåòíîé ïðîáëåìû.[5]
 íà÷àëå 70-õ ãîäîâ ñïåöèàëèñòû â îáëàñòè ÈÈ ñîñðåäîòî÷èëè ñâîå âíèìàíèå íà ðàçðàáîòêå ìåòîäîâ è ïðèåìîâ ïðîãðàììèðîâàíèÿ, ïðèãîäíûõ äëÿ ðåøåíèÿ áîëåå ñïåöèàëèçèðîâàííûõ çàäà÷: ìåòîäîâ ïðåäñòàâëåíèÿ (ñïîñîáû ôîðìóëèðîâàíèÿ ïðîáëåìû äëÿ ðåøåíèÿ íà ñðåäñòâàõ âû÷èñëèòåëüíîé òåõíèêè (ÂÒ)) è ìåòîäàõ ïîèñêà (ñïîñîáû óïðàâëåíèÿ õîäîì ðåøåíèÿ òàê, ÷òîáû îíî íå òðåáîâàëî ñëèøêîì áîëüøîãî îáúåìà ïàìÿòè è âðåìåíè).
È òîëüêî â êîíöå 70-õ ãîäîâ áûëà ïðèíÿòà ïðèíöèïèàëüíî íîâàÿ êîíöåïöèÿ, êîòîðàÿ çàêëþ÷àåòñÿ â òîì, ÷òî äëÿ ñîçäàíèÿ èíòåëëåêòóàëüíîé ïðîãðàììû åå íåîáõîäèìî ñíàáäèòü ìíîæåñòâîì âûñîêîêà÷åñòâåííûõ ñïåöèàëüíûõ çíàíèé î íåêîòîðîé ïðåäìåòíîé îáëàñòè. Ðàçâèòèå ýòîãî íàïðàâëåíèÿ ïðèâåëî ê ñîçäàíèþ ýêñïåðòíûõ ñèñòåì (ÝÑ).[6]
 80-õ ãîäàõ ÈÈ ïåðåæèë âòîðîå ðîæäåíèå. Áûëè øèðîêî îñîçíàíû åãî áîëüøèå ïîòåíöèàëüíûå âîçìîæíîñòè êàê â èññëåäîâàíèÿõ, òàê è â ðàçâèòèè ïðîèçâîäñòâà.  ðàìêàõ íîâîé òåõíîëîãèè ïîÿâèëèñü ïåðâûå êîììåð÷åñêèå ïðîãðàììíûå ïðîäóêòû.  ýòî âðåìÿ ñòàëà ðàçâèâàòüñÿ îáëàñòü ìàøèííîãî îáó÷åíèÿ. Äî ýòèõ ïîð ïåðåíåñåíèå çíàíèé ñïåöèàëèñòà-ýêñïåðòà â ìàøèííóþ ïðîãðàììó áûëî óòîìèòåëüíîé è äîëãîé ïðîöåäóðîé. Ñîçäàíèå ñèñòåì, àâòîìàòè÷åñêè óëó÷øàþùèõ è ðàñøèðÿþùèõ ñâîé çàïàñ ýâðèñòè÷åñêèõ (íå ôîðìàëüíûõ, îñíîâàííûõ íà èíòóèòèâíûõ ñîîáðàæåíèÿõ) ïðàâèë - âàæíåéøèé ýòàï â ïîñëåäíèå ãîäû.  íà÷àëå äåñÿòèëåòèÿ â ðàçëè÷íûõ ñòðàíàõ áûëè íà÷àòû êðóïíåéøèå â èñòîðèè îáðàáîòêè äàííûõ íàöèîíàëüíûå è ìåæäóíàðîäíûå èññëåäîâàòåëüñêèå ïðîåêòû, íàöåëåííûå íà «èíòåëëåêòóàëüíûå ÂÌ ïÿòîãî ïîêîëåíèÿ».[1]
Èññëåäîâàíèÿ ïî ÈÈ ÷àñòî êëàññèôèöèðóþòñÿ, èñõîäÿ èç îáëàñòè èõ ïðèìåíåíèÿ, à íå íà îñíîâå ðàçëè÷íûõ òåîðèé è øêîë.  êàæäîé èç ýòèõ îáëàñòåé íà ïðîòÿæåíèè äåñÿòêîâ ëåò ðàçðàáàòûâàëèñü ñâîè ìåòîäû ïðîãðàììèðîâàíèÿ, ôîðìàëèçìû; êàæäîé èç íèõ ïðèñóùè ñâîè òðàäèöèè, êîòîðûå ìîãóò çàìåòíî îòëè÷àòüñÿ îò òðàäèöèé ñîñåäíåé îáëàñòè èññëåäîâàíèÿ.  íàñòîÿùåå âðåìÿ ÈÈ ïðèìåíÿåòñÿ â ñëåäóþùèõ îáëàñòÿõ:
îáðàáîòêà åñòåñòâåííîãî ÿçûêà;
ýêñïåðòíûå ñèñòåìû (ÝÑ);
ñèìâîëüíûå è àëãåáðàè÷åñêèå âû÷èñëåíèÿ;
äîêàçàòåëüñòâà è ëîãè÷åñêîå ïðîãðàììèðîâàíèå;
ïðîãðàììèðîâàíèå èãð;
îáðàáîòêà ñèãíàëîâ è ðàñïîçíàâàíèå îáðàçîâ;
è äð.
1.2 ßçûêè ïðîãðàììèðîâàíèÿ ÈÈ.
1.2.1 Êëàññèôèêàöèÿ ÿçûêîâ è ñòèëåé ïðîãðàììèðîâàíèÿ.
Âñå ÿçûêè ïðîãðàììèðîâàíèÿ ìîæíî ðàçäåëèòü íà ïðîöåäóðíûå è äåêëàðàòèâíûå ÿçûêè. Ïîäàâëÿþùåå áîëüøèíñòâî èñïîëüçóåìûõ â íàñòîÿùåå âðåìÿ ÿçûêîâ ïðîãðàììèðîâàíèÿ (Ñè, Ïàñêàëü, Áåéñèê è ò. ï.) îòíîñÿòñÿ ê ïðîöåäóðíûì ÿçûêàì. Íàèáîëåå ñóùåñòâåííûìè êëàññàìè äåêëàðàòèâíûõ ÿçûêîâ ÿâëÿþòñÿ ôóíêöèîíàëüíûå (Ëèñï, Ëîãî, ÀÏË è ò. ï.) è ëîãè÷åñêèå (Ïðîëîã, Ïëýíåð, Êîíèâåð è äð.) ÿçûêè (ðèñ.1).
Íà ïðàêòèêå ÿçûêè ïðîãðàììèðîâàíèÿ íå ÿâëÿþòñÿ ÷èñòî ïðîöåäóðíûìè, ôóíêöèîíàëüíûìè èëè ëîãè÷åñêèìè, à ñîäåðæàò â ñåáå ÷åðòû ÿçûêîâ ðàçëè÷íûõ òèïîâ. Íà ïðîöåäóðíîì ÿçûêå ÷àñòî ìîæíî íàïèñàòü ôóíêöèîíàëüíóþ ïðîãðàììó èëè åå ÷àñòü è íàîáîðîò. Ìîæåò òî÷íåå áûëî áû âìåñòî òèïà ÿçûêà ãîâîðèòü î ñòèëå èëè ìåòîäå ïðîãðàììèðîâàíèÿ. Åñòåñòâåííî ðàçëè÷íûå ÿçûêè ïîääåðæèâàþò ðàçíûå ñòèëè â ðàçíîé ñòåïåíè.[1]
Ïðîöåäóðíàÿ ïðîãðàììà ñîñòîèò èç ïîñëåäîâàòåëüíîñòè îïåðàòîðîâ è ïðåäëîæåíèé, óïðàâëÿþùèõ ïîñëåäîâàòåëüíîñòüþ èõ âûïîëíåíèÿ. Òèïè÷íûìè îïåðàòîðàìè ÿâëÿþòñÿ îïåðàòîðû ïðèñâàèâàíèÿ è ïåðåäà÷è óïðàâëåíèÿ, îïåðàòîðû ââîäà-âûâîäà è ñïåöèàëüíûå ïðåäëîæåíèÿ äëÿ îðãàíèçàöèè öèêëîâ. Èç íèõ ìîæíî ñîñòàâëÿòü ôðàãìåíòû ïðîãðàìì è ïîäïðîãðàììû.  îñíîâå ïðîöåäóðíîãî ïðîãðàììèðîâàíèÿ ëåæàò âçÿòèå çíà÷åíèÿ êàêîé-òî ïåðåìåííîé, ñîâåðøåíèå íàä íèì äåéñòâèÿ è ñîõðàíåíèÿ íîâîãî çíà÷åíèÿ ñ ïîìîùüþ îïåðàòîðà ïðèñâàèâàíèÿ, è òàê äî òåõ ïîð ïîêà íå áóäåò ïîëó÷åíî (è, âîçìîæíî, íàïå÷àòàíî) æåëàåìîå îêîí÷àòåëüíîå çíà÷åíèå.[2]
ßÇÛÊÈ ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈß
ÏÐÎÖÅÄÓÐÍÛÅ ßÇÛÊÈ ÄÅÊËÀÐÀÒÈÂÍÛÅ ßÇÛÊÈ
Ïàñêàëü, Ñè, Ôîðòðàí, ...
ËÎÃÈ×ÅÑÊÈÅ ßÇÛÊÈ ÔÓÍÊÖÈÎÍÀËÜÍÛÅ ßÇÛÊÈ
Ïðîëîã, Mandala... Ëèñï, Ëîãî, ÀÐË, ...
Ðèñ.1 Êëàññèôèêàöèÿ ÿçûêîâ ïðîãðàììèðîâàíèÿ
Ëîãè÷åñêîå ïðîãðàììèðîâàíèå - ýòî îäèí èç ïîäõîäîâ ê èíôîðìàòèêå, ïðè êîòîðîì â êà÷åñòâå ÿçûêà âûñîêîãî óðîâíÿ èñïîëüçóåòñÿ ëîãèêà ïðåäèêàòîâ ïåðâîãî ïîðÿäêà â ôîðìå ôðàç Õîðíà. Ëîãèêà ïðåäèêàòîâ ïåðâîãî ïîðÿäêà - ýòî óíèâåðñàëüíûé àáñòðàêòíûé ÿçûê ïðåäíàçíà÷åííûé äëÿ ïðåäñòàâëåíèÿ çíàíèé è äëÿ ðåøåíèÿ çàäà÷. Åãî ìîæíî ðàññìàòðèâàòü êàê îáùóþ òåîðèþ îòíîøåíèé. Ëîãè÷åñêîå ïðîãðàììèðîâàíèå áàçèðóåòñÿ íà ïîäìíîæåñòâå ëîãèêè ïðåäèêàòîâ ïåðâîãî ïîðÿäêà, ïðè ýòîì îíî îäèíàêîâî øèðîêî ñ íåé ïî ñôåðå îõâàòà. Ëîãè÷åñêîå ïðîãðàììèðîâàíèå äàåò âîçìîæíîñòü ïðîãðàììèñòó îïèñûâàòü ñèòóàöèþ ïðè ïîìîùè ôîðìóë ëîãèêè ïðåäèêàòîâ, à çàòåì, äëÿ âûïîëíåíèÿ âûâîäîâ èç ýòèõ ôîðìóë, ïðèìåíèòü àâòîìàòè÷åñêèé ðåøàòåëü çàäà÷ (ò. å. íåêîòîðóþ ïðîöåäóðó). Ïðè èñïîëüçîâàíèè ÿçûêà ëîãè÷åñêîãî ïðîãðàììèðîâàíèÿ îñíîâíîå âíèìàíèå óäåëÿåòñÿ îïèñàíèþ ñòðóêòóðû ïðèêëàäíîé çàäà÷è, à íå âûðàáîòêå ïðåäïèñàíèé êîìïüþòåðó î òîì, ÷òî åìó ñëåäóåò äåëàòü. Äðóãèå ïîíÿòèÿ èíôîðìàòèêè èç òàêèõ îáëàñòåé, êàê òåîðèÿ ðåëÿöèîííûõ áàç äàííûõ, ïðîãðàììíàÿ èíæåíåðèÿ è ïðåäñòàâëåíèå çíàíèé, òàêæå ìîæíî îïèñàòü (è, ñëåäîâàòåëüíî, ðåàëèçîâàòü) ñ ïîìîùüþ ëîãè÷åñêèõ ïðîãðàìì.[8].
Ôóíêöèîíàëüíàÿ ïðîãðàììà ñîñòîèò èç ñîâîêóïíîñòè îïðåäåëåíèé ôóíêöèé. Ôóíêöèè, â ñâîþ î÷åðåäü, ïðåäñòàâëÿþò ñîáîé âûçîâû äðóãèõ ôóíêöèé è ïðåäëîæåíèé, óïðàâëÿþùèõ ïîñëåäîâàòåëüíîñòüþ âûçîâîâ. Âû÷èñëåíèÿ íà÷èíàþòñÿ ñ âûçîâà íåêîòîðîé ôóíêöèè, êîòîðàÿ â ñâîþ î÷åðåäü âûçûâàåò ôóíêöèè, âõîäÿùèå â åå îïðåäåëåíèå è ò. ä. â ñîîòâåòñòâèè ñ èåðàðõèåé îïðåäåëåíèé è ñòðóêòóðîé óñëîâíûõ ïðåäëîæåíèé. Ôóíêöèè ÷àñòî ëèáî ïðÿìî, ëèáî îïîñðåäîâàííî âûçûâàþò ñàìè ñåáÿ.[2]
Êàæäûé âûçîâ âîçâðàùàåò íåêîòîðîå çíà÷åíèå â âûçûâàâøóþ åãî ôóíêöèþ, âû÷èñëåíèå êîòîðîé ïîñëå ýòîãî ïðîäîëæàåòñÿ; ýòîò ïðîöåññ ïîâòîðÿåòñÿ äî òåõ ïîð ïîêà çàïóñòèâøàÿ âû÷èñëåíèÿ ôóíêöèÿ íå âåðíåò êîíå÷íûé ðåçóëüòàò ïîëüçîâàòåëþ.
«×èñòîå» ôóíêöèîíàëüíîå ïðîãðàììèðîâàíèå íå ïðèçíàåò ïðèñâàèâàíèé è ïåðåäà÷ óïðàâëåíèÿ. Ðàçâåòâëåíèå âû÷èñëåíèé îñíîâàíî íà ìåõàíèçìå îáðàáîòêè àðãóìåíòîâ óñëîâíîãî ïðåäëîæåíèÿ. Ïîâòîðíûå âû÷èñëåíèÿ îñóùåñòâëÿþòñÿ ÷åðåç ðåêóðñèþ, ÿâëÿþùóþñÿ îñíîâíûì ñðåäñòâîì ôóíêöèîíàëüíîãî ïðîãðàììèðîâàíèÿ.[1]
Íà ïåðâîì ýòàïå ðàçâèòèÿ ÈÈ (â êîíöå 50-õ - íà÷àëå 60-õ ãîäîâ) íå ñóùåñòâîâàëî ÿçûêîâ è ñèñòåì, îðèåíòèðîâàííûõ ñïåöèàëüíî íà îáëàñòè çíàíèé. Ïîÿâèâøèåñÿ ê òîìó âðåìåíè óíèâåðñàëüíûå ÿçûêè ïðîãðàììèðîâàíèÿ êàçàëèñü ïîäõîäÿùèì èíñòðóìåíòîì äëÿ ñîçäàíèÿ ëþáûõ (â òîì ÷èñëå è èíòåëëåêòóàëüíûõ ) ñèñòåì, ïîñêîëüêó â ýòèõ ÿçûêàõ ìîæíî âûäåëèòü äåêëàðàòèâíóþ è ïðîöåäóðíóþ êîìïîíåíòû. Êàçàëîñü, ÷òî íà ýòîé áàçå ìîãóò áûòü èíòåðïðåòèðîâàíû ëþáûå ìîäåëè è ñèñòåìû ïðåäñòàâëåíèÿ çíàíèé. Íî ñëîæíîñòü è òðóäîåìêîñòü òàêèõ èíòåðïðåòàöèé îêàçàëèñü íàñòîëüêî âåëèêè, ÷òî ïðèêëàäíûå ñèñòåìû äëÿ ðåàëèçàöèè áûëè íåäîñòóïíû. Èññëåäîâàíèÿ ïîêàçàëè, ÷òî ïðîèçâîäèòåëüíîñòü òðóäà ïðîãðàììèñòà îñòàåòñÿ ïîñòîÿííîé íåçàâèñèìî îò óðîâíÿ èíñòðóìåíòàëüíîãî ÿçûêà, íà êîòîðîì îí ðàáîòàåò, à ñîîòíîøåíèå ìåæäó äëèíîé èñõîäíîé è ðåçóëüòèðóþùåé ïðîãðàìì ïðèìåðíî 1:10. Òàêèì îáðàçîì, èñïîëüçîâàíèå àäåêâàòíîãî èíñòðóìåíòàëüíîãî ÿçûêà ïîâûøàåò ïðîèçâîäèòåëüíîñòü òðóäà ðàçðàáîò÷èêà ñèñòåìû íà ïîðÿäîê, è ýòî ïðè îäíîñòóïåí÷àòîé òðàíñëÿöèè. ßçûêè ïðåäíàçíà÷åííûå äëÿ ïðîãðàììèðîâàíèÿ èíòåëëåêòóàëüíûõ ñèñòåì ñîäåðæàò èåðàðõè÷åñêèå (ìíîãîóðîâíåâûå) òðàíñëÿòîðû è óâåëè÷èâàþò ïðîèçâîäèòåëüíîñòü òðóäà â 100-íè ðàç. Âñå ýòî ïîäòâåðæäàåò âàæíîñòü èñïîëüçîâàíèÿ àäåêâàòíûõ èíñòðóìåíòàëüíûõ ñðåäñòâ.[7]
Ëèñï.
ßçûê Ëèñï áûë ðàçðàáîòàí â Ñòýíôîðäå ïîä ðóêîâîäñòâîì Äæ. Ìàêêàðòè â íà÷àëå 60-õ ãîäîâ. Ïî ïåðâîíà÷àëüíûì çàìûñëàì îí äîëæåí áûë0 âêëþ÷àòü íàðÿäó ñî âñåìè âîçìîæíîñòÿìè Ôîðòðàíà ñðåäñòâà ðàáîòû ñ ìàòðèöàìè, óêàçàòåëÿìè è ñòðóêòóðàìè èç óêàçàòåëåé è ò. ï. Íî äëÿ òàêîãî ïðîåêòà íå õâàòèëî ñðåäñòâ. Îêîí÷àòåëüíî ñôîðìèðîâàííûå ïðèíöèïû ïîëîæåííûå â îñíîâó ÿçûêà Ëèñï: èñïîëüçîâàíèå åäèíîãî ñïèñêîâîãî ïðåäñòàâëåíèÿ äëÿ ïðîãðàìì è äàííûõ; ïðèìåíåíèå âûðàæåíèé äëÿ îïðåäåëåíèÿ ôóíêöèé; ñêîáî÷íûé ñèíòàêñèñ ÿçûêà.[4]
Ëèñï ÿâëÿåòñÿ ÿçûêîì íèçêîãî óðîâíÿ, åãî ìîæíî ðàññìàòðèâàòü êàê àññåìáëåð, îðèåíòèðîâàííûé íà ðàáîòó ñî ñïèñêîâûìè ñòðóêòóðàìè. Ïîýòîìó íà ïðîòÿæåíèè âñåãî ñóùåñòâîâàíèÿ ÿçûêà áûëî ìíîãî ïîïûòîê åãî óñîâåðøåíñòâîâàíèÿ çà ñ÷åò ââåäåíèÿ äîïîëíèòåëüíûõ áàçèñíûõ ïðèìèòèâîâ è óïðàâëÿþùèõ ñòðóêòóð. Íî âñå ýòè èçìåíåíèÿ , êàê ïðàâèëî, íå ñòàíîâèëèñü ñàìîñòîÿòåëüíûìè ÿçûêàìè.  íîâûõ ñâîèõ ðåäàêöèÿõ Ëèñï áûñòðî óñâàèâàë âñå öåííûå èçîáðåòåíèÿ ñâîèõ êîíêóðåíòîâ.[2]
Ïîñëå ñîçäàíèÿ â íà÷àëå 70-õ ãîäîâ ìîùíûõ Ëèñï-ñèñòåì Ìàêëèñï Èíòåðëèñï ïîïûòêè ñîçäàíèÿ ÿçûêîâ ÈÈ, îòëè÷íûõ îò Ëèñïà, íî íà òîé æå îñíîâå, ñõîäÿò íà íåò. Äàëüíåéøåå ðàçâèòèå ÿçûêà èäåò, ñ îäíîé ñòîðîíû, ïî ïóòè åãî ñòàíäàðòèçàöèè (Ñòàíäàðò-Ëèñï, Ôðàíö-Ëèñï, Êîììîí Ëèñï), à ñ äðóãîé - â íàïðàâëåíèè ñîçäàíèÿ êîíöåïòóàëüíî íîâûõ ÿçûêîâ äëÿ ïðåäñòàâëåíèÿ è ìàíèïóëèðîâàíèÿ çíàíèÿìè â Ëèñï ñðåäå.  íàñòîÿùåå âðåìÿ Ëèñï ðåàëèçîâàí íà âñåõ êëàññàõ ÝÂÌ, íà÷èíàÿ ñ ÏÝÂÌ è êîí÷àÿ âûñîêî ïðîèçâîäèòåëüíûìè âû÷èñëèòåëüíûìè ñèñòåìàìè.
Ëèñï - íå åäèíñòâåííûé ÿçûê, èñïîëüçóåìûé äëÿ çàäà÷ ÈÈ. Óæå â ñåðåäèíå 60-õ ãîäîâ ðàçðàáàòûâàëèñü ÿçûêè, ïðåäëàãàþùèå äðóãèå êîíöåïòóàëüíûå îñíîâû. Íàèáîëåå âàæíûå èç íèõ â îáëàñòè îáðàáîòêè ñèìâîëüíîé èíôîðìàöèè - ÑÍÎÁÎË è Ðåôàë.
ÑÍÎÁÎË.
Ýòî ÿçûê îáðàáîòêè ñòðîê, â ðàìêàõ êîòîðîãî âïåðâûå ïîÿâèëàñü è áûëà ðåàëèçîâàíà â äîñòàòî÷íî ïîëíîé ìåðå êîíöåïöèÿ ïîèñêà ïî îáðàçöó. ßçûê ÑÍÎÁÎË áûë îäíîé èç ïåðâûõ ïðàêòè÷åñêèõ ðåàëèçàöèé ðàçâèòîé ïðîäóêöèîííîé ñèñòåìû. Íàèáîëåå èçâåñòíàÿ è èíòåðåñíàÿ âåðñèÿ ýòîãî ÿçûêà - Ñíîáîë-4 Çäåñü òåõíèêà çàäàíèÿ îáðàçöîâ è ðàáîòà ñ íèìè ñóùåñòâåííî îïåðåäèëè ïîòðåáíîñòè ïðàêòèêè. Ïî ñóùåñòâó, îí òàê è îñòàëñÿ «ôèðìåííûì» ÿçûêîì ïðîãðàììèðîâàíèÿ, õîòÿ êîíöåïöèè ÑÍÎÁÎËà, áåçóñëîâíî, îêàçàëè âëèÿíèå è íà Ëèñï, è íà äðóãèå ÿçûêè ïðîãðàììèðîâàíèÿ çàäà÷ ÈÈ.
Ðåôàë.
ßçûê Ðåôàë - àëãîðèòìè÷åñêèé ÿçûê ðåêóðñèâíûõ ôóíêöèé. Îí áûë ñîçäàí Òóð÷èíûì â êà÷åñòâå ìåòàÿçûêà, ïðåäíàçíà÷åííîãî äëÿ îïèñàíèÿ ðàçëè÷íûõ, â òîì ÷èñëå è àëãîðèòìè÷åñêèõ, ÿçûêîâ è ðàçëè÷íûõ âèäîâ îáðàáîòêè òàêèõ ÿçûêîâ. Ïðè ýòîì èìåëîñü â âèäó è èñïîëüçîâàíèå Ðåôàëà â êà÷åñòâå ìåòàÿçûêà íàä ñàìèì ñîáîé. Äëÿ ïîëüçîâàòåëÿ ýòî ÿçûê îáðàáîòêè ñèìâîëüíîé èíôîðìàöèè. Ïîýòîìó, ïîìèìî îïèñàíèÿ ñåìàíòèêè àëãîðèòìè÷åñêèõ ÿçûêîâ, îí íàøåë è äðóãèå ïðèìåíåíèÿ. Ýòî âûïîëíåíèå ãðîìîçäêèõ àíàëèòè÷åñêèõ âûêëàäîê â òåîðåòè÷åñêîé ôèçèêå è ïðèêëàäíîé ìàòåìàòèêå, èíòåðïðåòàöèÿ è êîìïèëÿöèÿ ÿçûêîâ ïðîãðàììèðîâàíèÿ, äîêàçàòåëüñòâî òåîðåì, ìîäåëèðîâàíèå öåëåíàïðàâëåííîãî ïîâåäåíèÿ, à â ïîñëåäíåå âðåìÿ è çàäà÷è ÈÈ. Îáùèì äëÿ âñåõ ýòèõ ïðèìåíåíèé ÿâëÿþòñÿ ñëîæíûå ïðåîáðàçîâàíèÿ íàä îáúåêòàìè, îïðåäåëåííûìè â íåêîòîðûõ ôîðìàëèçîâàííûõ ÿçûêàõ.
 îñíîâó ÿçûêà Ðåôàë ïîëîæåíî ïîíÿòèå ðåêóðñèâíîé ôóíêöèè, îïðåäåëåííîé íà ìíîæåñòâå ïðîèçâîëüíûõ ñèìâîëüíûõ âûðàæåíèé. Áàçîâîé ñòðóêòóðîé äàííûõ ýòîãî ÿçûêà ÿâëÿþòñÿ ñïèñêè, íî íå îäíîñâÿçíûå, êàê â Ëèñïå, à äâóíàïðàâëåííûå. Îáðàáîòêà ñèìâîëîâ áëèæå ê ïðîäóêöèîííîé ïàðàäèãìå. Ïðè ýòîì Àêòèâíî èñïîëüçóåòñÿ êîíöåïöèÿ ïîèñêà ïî îáðàçöó, õàðàêòåðíàÿ äëÿ ÑÍÎÁÎËà.
Ïðîãðàììà íàïèñàííàÿ íà Ðåôàëå, îïðåäåëÿåò íåêîòîðûé íàáîð ôóíêöèé, êàæäàÿ èç êîòîðûõ èìååò îäèí àðãóìåíò. Âûçîâ ôóíêöèè çàêëþ÷àåòñÿ â ôóíêöèîíàëüíûå ñêîáêè.
Âî ìíîãèõ ñëó÷àÿõ âîçíèêàåò íåîáõîäèìîñòü èç ïðîãðàìì, íàïèñàííûõ íà Ðåôàëå, âûçûâàòü ïðîãðàììû, íàïèñàííûå íà äðóãèõ ÿçûêàõ. Ýòî ïðîñòî, òàê êàê ñ òî÷êè çðåíèÿ Ðåôàëà ïåðâè÷íûå ôóíêöèè (Ôóíêöèè, îïèñàííûå íå íà Ðåôàëå, íî êîòîðûå òåì íå ìåíåå ìîæíî âûçûâàòü èç ïðîãðàìì, íàïèñàííûõ íà ýòîì ÿçûêå.) - ýòî ïðîñòî íåêîòîðûå ôóíêöèè, âíåøíèå ïî îòíîøåíèþ ê äàííîé ïðîãðàììå, ïîýòîìó, âûçûâàÿ êàêóþ-ëèáî ôóíêöèþ, ìîæíî äàæå è íå çíàòü, ÷òî ýòî - ïåðâè÷íàÿ ôóíêöèÿ.
Ñåìàíòèêà Ðåôàë-ïðîãðàììû îïèñûâàåòñÿ â òåðìèíàõ àáñòðàêòíîé Ðåôàë-ìàøèíû. Ðåôàë-ìàøèíà èìååò ïîëå ïàìÿòè è ïîëå çðåíèÿ.  ïîëå ïàìÿòè Ðåôàë-ìàøèíû ïîìåùàåòñÿ ïðîãðàììà, à â ïîëå çðåíèÿ - äàííûå, êîòîðûå áóäóò îáðàáàòûâàòüñÿ ñ åå ïîìîùüþ, ò. å. ïåðåä íà÷àëîì ðàáîòû â ïîëå ïàìÿòè çàíîñèòñÿ îïèñàíèå íàáîðà ôóíêöèé, à â ïîëå çðåíèÿ - âûðàæåíèå, ïîäëåæàùåå îáðàáîòêå.
×àñòî áûâàåò óäîáíî ðàçáèòü Ðåôàë-ïðîãðàììó íà ÷àñòè, êîòîðûå ìîãóò îáðàáàòûâàòüñÿ êîìïèëÿòîðîì Ðåôàëà íåçàâèñèìî äðóã îò äðóãà. Íàèìåíüøàÿ ÷àñòü Ðåôàë-ïðîãðàììû, êîòîðàÿ ìîæåò áûòü îáðàáîòàíà êîìïèëÿòîðîì íåçàâèñèìî îò äðóãèõ, íàçûâàåòñÿ ìîäóëåì. Ðåçóëüòàò êîìïèëÿöèè èñõîäíîãî ìîäóëÿ íà Ðåôàëå ïðåäñòàâëÿåò ñîáîé îáúåêòíûé ìîäóëü, êîòîðûé ïåðåä èñïîëíåíèåì Ðåôàë-ïðîãðàììû äîëæåí áûòü îáúåäèíåí ñ äðóãèìè ìîäóëÿìè, ïîëó÷åííûìè êîìïèëÿöèåé ñ Ðåôàëà èëè äðóãèõ ÿçûêîâ ýòî îáúåäèíåíèå âûïîëíÿåòñÿ ñ ïîìîùüþ ðåäàêòîðà ñâÿçåé è çàãðóç÷èêîâ. Äåòàëè çàâèñÿò îò èñïîëüçóåìîé ÎÑ.
Òàêèì îáðàçîì, Ðåôàë âîáðàë â ñåáÿ ëó÷øèå ÷åðòû íàèáîëåå èíòåðåñíûõ ÿçûêîâ îáðàáîòêè ñèìâîëüíîé èíôîðìàöèè 60-õ ãîäîâ.  íàñòîÿùåå âðåìÿ ÿçûê Ðåôàë èñïîëüçóåòñÿ äëÿ àâòîìàòèçàöèè ïîñòðîåíèÿ òðàíñëÿòîðîâ, ñèñòåì àíàëèòè÷åñêèõ ïðåîáðàçîâàíèé, à òàêæå, ïîäîáíî Ëèñïó, â êà÷åñòâå èíñòðóìåíòàëüíîé ñðåäû äëÿ ðåàëèçàöèè ÿçûêîâ ïðåäñòàâëåíèÿ çíàíèé.[7]
Ïðîëîã.
 íà÷àëå 70-õ ãîäîâ ïîÿâèëñÿ íîâûé ÿçûê ñîñòàâèâøèé êîíêóðåíöèþ Ëèñïó ïðè ðåàëèçàöèè ñèñòåì, îðèåíòèðîâàííûõ íà çíàíèÿ - Ïðîëîã. Ýòîò ÿçûê íå äàåò íîâûõ ñâåðõìîùíûõ ñðåäñòâ ïðîãðàììèðîâàíèÿ ïî ñðàâíåíèþ ñ Ëèñïîì, íî ïîääåðæèâàåò äðóãóþ ìîäåëü îðãàíèçàöèè âû÷èñëåíèé. Åãî ïðèâëåêàòåëüíîñòü ñ ïðàêòè÷åñêîé òî÷êè çðåíèÿ ñîñòîèò â òîì, ÷òî, ïîäîáíî òîìó, êàê Ëèñï ñêðûë îò ïðîãðàììèñòà óñòðîéñòâî ïàìÿòè ÝÂÌ, Ïðîëîã ïîçâîëèë åìó íå çàáîòèòñÿ î ïîòîêå óïðàâëåíèÿ â ïðîãðàììå.[8]
Ïðîëîã - åâðîïåéñêèé ÿçûê, áûë ðàçðàáîòàí â Ìàðñåëüñêîì óíèâåðñèòåòå â 1971 ãîäó. Íî ïîïóëÿðíîñòü îí ñòàë ïðèîáðåòàòü òîëüêî â íà÷àëå 80-õ ãîäîâ. Ýòî ñâÿçàíî ñ äâóìÿ îáñòîÿòåëüñòâàìè: âî-ïåðâûõ, áûë îáîñíîâàí ëîãè÷åñêèé áàçèñ ýòîãî ÿçûêà è, âî-âòîðûõ, â ÿïîíñêîì ïðîåêòå âû÷èñëèòåëüíûõ ñèñòåì ïÿòîãî ïîêîëåíèÿ îí áûë âûáðàí â êà÷åñòâå áàçîâîãî äëÿ îäíîé èç öåíòðàëüíûõ êîìïîíåíò - ìàøèíû âûâîäà.
ßçûê Ïðîëîã áàçèðóåòñÿ íà îãðàíè÷åííîì íàáîðå ìåõàíèçìîâ, âêëþ÷àþùèõ â ñåáÿ ñîïîñòàâëåíèå îáðàçöîâ, äðåâîâèäíîå ïðåäñòàâëåíèå ñòðóêòóð äàííûõ è àâòîìàòè÷åñêèé âîçâðàò. Ïðîëîã îñîáåííî õîðîøî ïðèñïîñîáëåí äëÿ ðåøåíèÿ çàäà÷, â êîòîðûõ ôèãóðèðóþò îáúåêòû è îòíîøåíèÿ ìåæäó íèìè.[9]
Ïðîëîã îáëàäàåò ìîùíûìè ñðåäñòâàìè, ïîçâîëÿþùèìè èçâëåêàòü èíôîðìàöèþ èç áàç äàííûõ, ïðè÷åì ìåòîäû ïîèñêà äàííûõ, èñïîëüçóåìûå â íåì, ïðèíöèïèàëüíî îòëè÷àþòñÿ îò òðàäèöèîííûõ. Ìîùü è ãèáêîñòü áàç äàííûõ Ïðîëîãà, ëåãêîñòü èõ ðàñøèðåíèÿ è ìîäèôèêàöèè äåëàþò ýòîò ÿçûê î÷åíü óäîáíûì äëÿ êîììåð÷åñêèõ ïðèëîæåíèé.
Ïðîëîã óñïåøíî ïðèìåíÿåòñÿ â òàêèõ îáëàñòÿõ êàê: ðåëÿöèîííûå áàçû äàííûõ (ÿçûê îñîáåííî ïîëåçåí ïðè ñîçäàíèè èíòåðôåéñîâ ðåëÿöèîííûõ áàç äàííûõ ñ ïîëüçîâàòåëåì); àâòîìàòè÷åñêîå ðåøåíèå çàäà÷; ïîíèìàíèå åñòåñòâåííîãî ÿçûêà; ðåàëèçàöèÿ ÿçûêîâ ïðîãðàììèðîâàíèÿ; ïðåäñòàâëåíèå çíàíèé; ýêñïåðòíûå ñèñòåìû è äð. çàäà÷è ÈÈ.[9]
Òåîðåòè÷åñêîé îñíîâîé Ïðîëîãà ÿâëÿåòñÿ èñ÷èñëåíèå ïðåäèêàòîâ. Ïðîëîãó ïðèñóù ðÿä ñâîéñòâ, êîòîðûìè íå îáëàäàþò òðàäèöèîííûå ÿçûêè ïðîãðàììèðîâàíèÿ. Ê òàêèì ñâîéñòâàì îòíîñÿòñÿ ìåõàíèçì âûâîäà ñ ïîèñêîì è âîçâðàòîì, âñòðîåííûé ìåõàíèçì ñîïîñòàâëåíèÿ ñ îáðàçöîì. Ïðîëîã îòëè÷àåò åäèíîîáðàçèå ïðîãðàìì è äàííûõ. Îíè ÿâëÿþòñÿ ëèøü ðàçëè÷íûìè òî÷êàìè çðåíèÿ íà îáúåêòû Ïðîëîãà.  ÿçûêå îòñóòñòâóþò óêàçàòåëè, îïåðàòîðû ïðèñâàèâàíèÿ è áåçóñëîâíîãî ïåðåõîäà. Åñòåñòâåííûì ìåòîäîì ïðîãðàììèðîâàíèÿ ÿâëÿåòñÿ ðåêóðñèÿ.
Ïðîëîã ïðîãðàììà ñîñòîèò èç äâóõ ÷àñòåé: áàçû äàííûõ (ìíîæåñòâî àêñèîì) è ïîñëåäîâàòåëüíîñòè öåëåâûõ óòâåðæäåíèé, îïèñûâàþùèõ â ñîâîêóïíîñòè îòðèöàíèå äîêàçûâàåìîé òåîðåìû. Ãëàâíîå ïðèíöèïèàëüíîå îòëè÷èå èíòåðïðåòàöèè ïðîãðàììû íà Ïðîëîãå îò ïðîöåäóðû äîêàçàòåëüñòâà òåîðåìû â èñ÷èñëåíèè ïðåäèêàòîâ ïåðâîãî ïîðÿäêà ñîñòîèò â òîì, ÷òî àêñèîìû â áàçå äàííûõ óïîðÿäî÷åíû è ïîðÿäîê èõ ñëåäîâàíèÿ âåñüìà ñóùåñòâåíåí, òàê êàê íà ýòîì îñíîâàí ñàì àëãîðèòì, ðåàëèçóåìûé Ïðîëîã-ïðîãðàììû. Äðóãîå ñóùåñòâåííîå îãðàíè÷åíèå Ïðîëîãà â òîì, ÷òî â êà÷åñòâå ëîãè÷åñêèõ àêñèîì èñïîëüçóþòñÿ ôîðìóëû îãðàíè÷åííîãî êëàññà - òàê íàçûâàåìûå äèçúþíêòû Õîðíà. Îäíàêî ïðè ðåøåíèè ìíîãèõ ïðàêòè÷åñêèõ çàäà÷ ýòîãî äîñòàòî÷íî äëÿ àäåêâàòíîãî ïðåäñòàâëåíèÿ çíàíèé. Âî ôðàçàõ Õîðíà ïîñëå åäèíñòâåííîãî çàêëþ÷åíèÿ ñëåäóåò íîëü è áîëåå óñëîâèé.
Ïîèñê «ïîëåçíûõ» äëÿ äîêàçàòåëüñòâà ôîðìóë - êîìáèíàòîðíàÿ çàäà÷à è ïðè óâåëè÷åíèè ÷èñëà àêñèîì ÷èñëî øàãîâ âûâîäà êàòàñòðîôè÷åñêè áûñòðî ðàñòåò. Ïîýòîìó â ðåàëüíûõ ñèñòåìàõ ïðèìåíÿþò âñåâîçìîæíûå ñòðàòåãèè, îãðàíè÷èâàþùèå ñëåïîé ïåðåáîð.  ÿçûêå Ïðîëîã ðåàëèçîâàíà ñòðàòåãèÿ ëèíåéíîé ðåçîëþöèè, ïðåäëàãàþùàÿ èñïîëüçîâàíèå íà êàæäîì øàãå â êà÷åñòâå îäíîé èç ñðàâíèâàåìûõ ôîðìóë îòðèöàíèå òåîðåìû èëè åå «ïîòîìêà», à â êà÷åñòâå äðóãîé - îäíó èç àêñèîì. Ïðè ýòîì âûáîð òîé èëè èíîé àêñèîìû äëÿ ñðàâíåíèÿ ìîæåò ñðàçó èëè ÷åðåç íåñêîëüêî øàãîâ çàâåñòè â «òóïèê». Ýòî ïðèíóæäàåò âåðíóòüñÿ ê òî÷êå, â êîòîðîé ïðîèçâîäèëñÿ âûáîð, ÷òîáû èñïûòàòü íîâóþ àëüòåðíàòèâó, è ò. ä. Ïîðÿäîê ïðîñìîòðà àëüòåðíàòèâíûõ àêñèîì íå ïðîèçâîëåí - åãî çàäàåò ïðîãðàììèñò, ðàñïîëàãàÿ àêñèîìû â áàçå äàííûõ â îïðåäåëåííîì ïîðÿäêå. Êðîìå òîãî â Ïðîëîãå ïðåäóñìîòðåíû äîñòàòî÷íî óäîáíûå «âñòðîåííûå» ñðåäñòâà äëÿ çàïðåùåíèÿ âîçâðàòà â òó èëè èíóþ òî÷êó â çàâèñèìîñòè îò âûïîëíåíèÿ îïðåäåëåííûõ óñëîâèé. Òàêèì îáðàçîì ïðîöåññ äîêàçàòåëüñòâà â Ïðîëîãå áîëåå ïðîñò è öåëåíàïðàâëåí ÷åì â êëàññè÷åñêîì ìåòîäå ðåçîëþöèé.
Ñìûñë ïðîãðàììû ÿçûêà Ïðîëîã ìîæåò áûòü ïîíÿò ëèáî ñ ïîçèöèé äåêëàðàòèâíîãî ïîäõîäà, ëèáî ñ ïîçèöèé ïðîöåäóðíîãî ïîäõîäà.[8]
Äåêëàðàòèâíûé ñìûñë ïðîãðàììû îïðåäåëÿåò, ÿâëÿåòñÿ ëè äàííàÿ öåëü èñòèííîé (äîñòèæèìîé) è, åñëè äà, ïðè êàêèõ çíà÷åíèÿõ ïåðåìåííûõ îíà äîñòèãàåòñÿ. Îí ïîä÷åðêèâàåò ñòàòè÷åñêîå ñóùåñòâîâàíèå îòíîøåíèé. Ïîðÿäîê ñëåäîâàíèÿ ïîäöåëåé â ïðàâèëå íå âëèÿåò íà äåêëàðàòèâíûé ñìûñë ýòîãî ïðàâèëà. Äåêëàðàòèâíàÿ ìîäåëü áîëåå áëèçêà ê ñåìàíòèêå ëîãèêè ïðåäèêàòîâ, ÷òî äåëàåò Ïðîëîã ýôôåêòèâíûì ÿçûêîì äëÿ ïðåäñòàâëåíèÿ çíàíèé. Îäíàêî â äåêëàðàòèâíîé ìîäåëè íåëüçÿ àäåêâàòíî ïðåäñòàâèòü òå ôðàçû, â êîòîðûõ âàæåí ïîðÿäîê ñëåäîâàíèÿ ïîäöåëåé. Äëÿ ïîÿñíåíèÿ ñìûñëà ôðàç òàêîãî ðîäà íåîáõîäèìî âîñïîëüçîâàòüñÿ ïðîöåäóðíîé ìîäåëüþ.
Ïðè ïðîöåäóðíîé òðàêòîâêå Ïðîëîã-ïðîãðàììû îïðåäåëÿþòñÿ íå òîëüêî ëîãè÷åñêèå ñâÿçè ìåæäó ãîëîâîé ïðåäëîæåíèÿ è öåëÿìè â åãî òåëå, íî åùå è ïîðÿäîê, â êîòîðîì ýòè öåëè îáðàáàòûâàþòñÿ. Íî ïðîöåäóðíàÿ ìîäåëü íå ãîäèòñÿ äëÿ ðàçúÿñíåíèÿ ñìûñëà ôðàç, âûçûâàþùèõ ïîáî÷íûå ýôôåêòû óïðàâëåíèÿ, òàêèå êàê îñòàíîâêà âûïîëíåíèÿ çàïðîñà èëè óäàëåíèå ôðàçû èç ïðîãðàììû.[9]
Äëÿ ðåøåíèÿ ðåàëüíûõ çàäà÷ ÈÈ íåîáõîäèìû ìàøèíû, ñêîðîñòü êîòîðûõ äîëæíà ïðåâûøàòü ñêîðîñòü ñâåòà, à ýòî âîçìîæíî ëèøü â ïàðàëëåëüíûõ ñèñòåìàõ. Ïîýòîìó ïîñëåäîâàòåëüíûå ðåàëèçàöèè ñëåäóåò ðàññìàòðèâàòü êàê ðàáî÷èå ñòàíöèè äëÿ ñîçäàíèÿ ïðîãðàììíîãî îáåñïå÷åíèÿ áóäóùèõ âûñîêîïðîèçâîäèòåëüíûõ ïàðàëëåëüíûõ ñèñòåì, ñïîñîáíûõ âûïîëíÿòü ñîòíè ìèëëèîíîâ ëîãè÷åñêèõ âûâîäîâ â ñåêóíäó.  íàñòîÿùåå âðåìÿ ñóùåñòâóþò äåñÿòêè ìîäåëåé ïàðàëëåëüíîãî âûïîëíåíèÿ ëîãè÷åñêèõ ïðîãðàìì âîîáùå è Ïðîëîã-ïðîãðàìì â ÷àñòíîñòè. ×àñòî ýòî ìîäåëè, èñïîëüçóþùèå òðàäèöèîííûé ïîäõîä ê îðãàíèçàöèè ïàðàëëåëüíûõ âû÷èñëåíèé: ìíîæåñòâî ïàðàëëåëüíî ðàáîòàþùèõ è âçàèìîäåéñòâóþùèõ ïðîöåññîâ.  ïîñëåäíåå âðåìÿ çíà÷èòåëüíîå âíèìàíèå óäåëÿåòñÿ è áîëåå ñîâðåìåííûì ñõåìàì îðãàíèçàöèè ïàðàëëåëüíûõ âû÷èñëåíèé - ïîòîêîâûì ìîäåëÿì.  ìîäåëÿõ ïàðàëëåëüíîãî âûïîëíåíèÿ ðàññìàòðèâàþòñÿ òðàäèöèîííûé Ïðîëîã è ïðèñóùèå åìó èñòî÷íèêè ïàðàëëåëüíîñòè.
Íà ýôôåêòèâíîñòè Ïðîëîãà î÷åíü ñèëüíî ñêàçûâàþòñÿ îãðàíè÷åííîñòü ðåñóðñîâ ïî âðåìåíè è ïðîñòðàíñòâó. Ýòî ñâÿçàíî ñ íåïðèñïîñîáëåííîñòüþ òðàäèöèîííîé àðõèòåêòóðû âû÷èñëèòåëüíûõ ìàøèí äëÿ ðåàëèçàöèè ïðîëîãîâñêîãî ñïîñîáà âûïîëíåíèÿ ïðîãðàìì, ïðåäóñìàòðèâàþùåãî äîñòèæåíèå öåëåé èç íåêîòîðîãî ñïèñêà. Âûçîâåò ëè ýòî òðóäíîñòè â ïðàêòè÷åñêèõ ïðèëîæåíèÿõ, çàâèñèò îò çàäà÷è. Ôàêòîð âðåìåíè ïðàêòè÷åñêè íå èìååò çíà÷åíèÿ, åñëè ïðîëîã-ïðîãðàììà, çàïóñêàåìàÿ ïî íåñêîëüêî ðàç â äåíü, çàíèìàåò îäíó ñåêóíäó, à ñîîòâåòñòâóþùàÿ ïðîãðàììà íà äðóãîì ÿçûêå - 0.1 ñåêóíäû. Íî ðàçíèöà â ýôôåêòèâíîñòè ñòàíîâèòñÿ ñóùåñòâåííîé, åñëè ýòè äâå ïðîãðàììû òðåáóþò 50 è 5 ìèíóò ñîîòâåòñòâåííî.
Ñ äðóãîé ñòîðîíû, âî ìíîãèõ îáëàñòÿõ ïðèìåíåíèÿ Ïðîëîãà îí ìîæåò ñóùåñòâåííî ñîêðàòèòü âðåìÿ ðàçðàáîòêè ïðîãðàìì. Ïðîãðàììû íà Ïðîëîãå ëåã÷å ïèñàòü, ëåã÷å ïîíèìàòü è îòëàæèâàòü, ÷åì ïðîãðàììû, íàïèñàííûå íà òðàäèöèîííûõ ÿçûêàõ, ò. å. ÿçûê Ïðîëîã ïðèâëåêàòåëåí ñâîåé ïðîñòîòîé. Ïðîëîã-ïðîãðàììó ëåãêî ÷èòàòü, ÷òî ÿâëÿåòñÿ ôàêòîðîì, ñïîñîáñòâóþùèì ïîâûøåíèþ ïðîèçâîäèòåëüíîñòè ïðè ïðîãðàììèðîâàíèè è óâåëè÷åíèþ óäîáñòâ ïðè ñîïðîâîæäåíèè ïðîãðàìì. Ïîñêîëüêó Ïðîëîã îñíîâàí íà ôðàçàõ Õîðíà, èñõîäíûé òåêñò Ïðîëîã-ïðîãðàìì çíà÷èòåëüíî ìåíåå ïîäâåðæåí âëèÿíèþ ìàøèííî-çàâèñèìûõ îñîáåííîñòåé, ÷åì èñõîäíûå òåêñòû ïðîãðàìì, íàïèñàííûõ íà äðóãèõ ÿçûêàõ. Êðîìå òîãî â ðàçëè÷íûõ âåðñèÿõ ÿçûêà Ïðîëîã ïðîÿâëÿåòñÿ òåíäåíöèÿ ê åäèíîîáðàçèþ, òàê ÷òî ïðîãðàììó, íàïèñàííóþ äëÿ îäíîé âåðñèè, ëåãêî ìîæíî ïðåîáðàçîâàòü â ïðîãðàììó äëÿ äðóãîé âåðñèè ýòîãî ÿçûêà. Êðîìå òîãî Ïðîëîã ïðîñò â èçó÷åíèè.[8]
Ïðè âûáîðå ÿçûêà Ïðîëîã êàê áàçîâîãî ÿçûêà ïðîãðàììèðîâàíèÿ â ÿïîíñêîì ïðîåêòå âû÷èñëèòåëüíûõ ñèñòåì ïÿòîãî ïîêîëåíèÿ â êà÷åñòâå îäíîãî èç åãî íåäîñòàòêîâ îòìå÷àëîñü îòñóòñòâèå ðàçâèòîé ñðåäû ïðîãðàììèðîâàíèÿ è íåïðèñïîñîáëåííîñòü Ïðîëîãà äëÿ ñîçäàíèÿ áîëüøèõ ïðîãðàììíûõ ñèñòåì. Ñåé÷àñ ñèòóàöèÿ íåñêîëüêî èçìåíèëàñü, õîòÿ ãîâîðèòü î äåéñòâèòåëüíî îðèåíòèðîâàííîé íà ëîãè÷åñêîå ïðîãðàììèðîâàíèå ñðåäå ïðåæäåâðåìåííî.
Ñðåäè ÿçûêîâ, ñ ïîÿâëåíèåì êîòîðûõ âîçíèêàëè íîâûå ïðåäñòàâëåíèÿ î ðåàëèçàöèè èíòåëëåêòóàëüíûõ ñèñòåì, íåîáõîäèìî âûäåëèòü ÿçûêè, îðèåíòèðîâàííûå íà ïðîãðàììèðîâàíèå ïîèñêîâûõ çàäà÷.
Ãðóïïà ÿçûêîâ, êîòîðûå ìîæíî íàçâàòü ÿçûêàìè èíòåëëåêòóàëüíûõ ðåøàòåëåé, â îñíîâíîì îðèåíòèðîâàíà íà òàêóþ ïîäîáëàñòü ÈÈ, êàê ðåøåíèå ïðîáëåì, äëÿ êîòîðîé õàðàêòåðíû, ñ îäíîé ñòîðîíû, äîñòàòî÷íî ïðîñòûå è õîðîøî ôîðìàëèçóåìûå ìîäåëè çàäà÷, à ñ äðóãîé - óñëîæíåííûå ìåòîäû ïîèñêà èõ ðåøåíèÿ. Ïîýòîìó îñíîâíîå âíèìàíèå â ýòèõ ÿçûêàõ áûëî óäåëåíî ââåäåíèþ ìîùíûõ ñòðóêòóð óïðàâëåíèÿ, à íå ñïîñîáàì ïðåäñòàâëåíèÿ çíàíèé. Ýòî òàêèå ÿçûêè êàê Ïëýíåð, Êîíèâåð, ÊþÀ-4, ÊþËèñï.
Ïëýíåð.
Ýòîò ÿçûê äàë òîë÷îê ìîùíîìó ÿçûêîòâîð÷åñòâó â îáëàñòè ÈÈ. ßçûê ðàçðàáîòàí â Ìàññà÷óññåòñêîì òåõíîëîãè÷åñêîì èíñòèòóòå â 1967-1971ãã. Âíà÷àëå ýòî áûëà íàäñòðîéêà íàä Ëèñïîì, â òàêîì âèäå ÿçûê ðåàëèçîâàí íà Ìàêëèñïå ïîä íàçâàíèåì Ìèêðî Ïëýíåð.  äàëüíåéøåì Ïëýíåð áûë ñóùåñòâåííî ðàñøèðåí è ïðåâðàùåí â ñàìîñòîÿòåëüíûé ÿçûê.  ÑÑÑÐ îí ðåàëèçîâàí ïîä íàçâàíèåì Ïëýíåð-ÁÝÑÌ è Ïëýíåð-Ýëüáðóñ. Ýòîò ÿçûê ââåë â ÿçûêè ïðîãðàììèðîâàíèÿ ìíîãî íîâûõ èäåé: àâòîìàòè÷åñêèé ïîèñê ñ âîçâðàòàìè, ïîèñê äàííûõ ïî îáðàçöó, âûçîâ ïðîöåäóð ïî îáðàçöó, äåäóêòèâíûé ìåòîä è ò. ä.
 êà÷åñòâå ñâîåãî ïîäìíîæåñòâà Ïëýíåð ñîäåðæèò ïðàêòè÷åñêè âåñü Ëèñï (ñ íåêîòîðûìè ìîäèôèêàöèÿìè) è âî ìíîãîì ñîõðàíÿåò åãî ñïåöèôè÷åñêèå îñîáåííîñòè. Ñòðóêòóðà äàííûõ (âûðàæåíèé, àòîìîâ è ñïèñêîâ), ñèíòàêñèñ ïðîãðàìì è ïðàâèëà èõ âû÷èñëåíèÿ â Ïëýíåðå àíàëîãè÷íû ëèñïîâñêèì. Äëÿ îáðàáîòêè äàííûõ â Ïëýíåðå â îñíîâíîì èñïîëüçóþòñÿ òå æå ñðåäñòâà, ÷òî è â Ëèñïå: ðåêóðñèâíûå è áëî÷íûå ôóíêöèè. Ïðàêòè÷åñêè âñå âñòðîåííûå ôóíêöèè Ëèñïà, â òîì ÷èñëå è ôóíêöèÿ EVAL, âêëþ÷åíû â Ïëýíåð. Àíàëîãè÷íî îïðåäåëÿþòñÿ íîâûå ôóíêöèè. Êàê è â Ëèñïå , ñ àòîìàìè ìîãóò áûòü ñâÿçàíû ñïèñêè ñâîéñòâ.
Íî ìåæäó Ëèñïîì è Ïëýíåðîì ñóùåñòâóþò è ðàçëè÷èÿ. Îòìåòèì íåêîòîðûå èç íèõ.  Ëèñïå ïðè îáðàùåíèè ê ïåðåìåííîé óêàçûâàåòñÿ òîëüêî åå èìÿ, íàïðèìåð Õ, ñàì æå àòîì êàê äàííîå óêàçûâàåòñÿ êàê ‘X.  Ïëýíåðå èñïîëüçóåòñÿ îáðàòíàÿ íîòàöèÿ: àòîìû îáîçíà÷àþò ñàìèõ ñåáÿ, à ïðè îáðàùåíèè ê ïåðåìåííûì ïåðåä èõ èìåíåì ñòàâèòñÿ ïðåôèêñ. Ïðè ýòîì ïðåôèêñ óêàçûâàåò êàê äîëæíà áûòü èñïîëüçîâàíà ïåðåìåííàÿ. Îòëè÷àåòñÿ îò ëèñïîâñêîãî è ñèíòàêñèñ îáðàùåíèÿ ê ôóíêöèÿì, êîòîðîå â Ïëýíåðå çàïèñûâàåòñÿ â âèäå ñïèñêà íå ñ êðóãëûìè, à ñ êâàäðàòíûìè ñêîáêàìè.
Äëÿ îáðàáîòêè äàííûõ â Ïëýíåðå èñïîëüçóþòñÿ íå òîëüêî ôóíêöèè, íî è îáðàçöû è ñîïîñòàâèòåëè.
Îáðàçöû îïèñûâàþò ïðàâèëà àíàëèçà è äåêîìïîçèöèè äàííûõ è ïîýòîìó èõ ïðèìåíåíèå îáëåã÷àåò íàïèñàíèå ïðîãðàìì è ñîêðàùàåò èõ òåêñòû.
Ñîïîñòàâèòåëè îïðåäåëÿþòñÿ òàêæå, êàê ôóíêöèè, òîëüêî èõ îïðåäåëÿþùåå âûðàæåíèå íà÷èíàåòñÿ ñ êëþ÷åâîãî ñëîâà, à â êà÷åñòâå òåëà óêàçûâàåòñÿ îáðàçåö. Èõ âûïîëíåíèå çàêëþ÷àåòñÿ íå â âû÷èñëåíèè êàêîãî ëèáî çíà÷åíèÿ, à â ïðîâåðêå, îáëàäàåò ëè ñîïîñòàâëÿåìîå ñ íèì âûðàæåíèå îïðåäåëåííûì ñâîéñòâîì.
Ðàññìîòðåííîå ïîäìíîæåñòâî Ïëýíåðà ìîæíî èñïîëüçîâàòü íåçàâèñèìî îò äðóãèõ åãî ÷àñòåé: îíî ïðåäñòàâëÿåò ñîáîé ìîùíûé ÿçûê ïðîãðàììèðîâàíèÿ, óäîáíûé äëÿ ðåàëèçàöèè ðàçëè÷íûõ ñèñòåì ñèìâîëüíîé îáðàáîòêè. Îñòàëüíûå ÷àñòè Ïëýíåðà îðèåíòèðóþò åãî íà îáëàñòü ÈÈ, ïðåäîñòàâëÿÿ ñðåäñòâà äëÿ îïèñàíèÿ çàäà÷ (èñõîäíûõ ñèòóàöèé, äîïóñòèìûõ îïåðàöèé, öåëåé), ðåøåíèÿ êîòîðûõ äîëæíà èñêàòü ñèñòåìà ÈÈ, ðåàëèçóåìàÿ íà Ïëýíåðå, è ñðåäñòâà, óïðîùàþùèå ðåàëèçàöèþ ïðîöåäóð ïîèñêà ðåøåíèÿ ýòèõ çàäà÷.
Íà Ïëýíåðå ìîæíî ïðîãðàììèðîâàòü îïèñûâàÿ òî, ÷òî èìååòñÿ è òî ÷òî íàäî ïîëó÷èòü, áåç ÿâíîãî óêàçàíèÿ, êàê ýòî äåëàòü. Îòâåòñòâåííîñòü æå çà ïîèñê ðåøåíèÿ îïèñûâàåìîé çàäà÷è áåðåò íà ñåáÿ âñòðîåííûé â ÿçûê äåäóêòèâíûé ìåõàíèçì (ìåõàíèçì àâòîìàòè÷åñêîãî äîñòèæåíèÿ öåëåé), â îñíîâå êîòîðîãî ëåæèò âûçîâ òåîðåì ïî îáðàçöó. Îäíàêî òîëüêî âûçîâà òåîðåì ïî îáðàçöó íå äîñòàòî÷íî äëÿ òàêîãî ìåõàíèçìà. Íåîáõîäèì ìåõàíèçì ïåðåáîðà, è òàêîé ìåõàíèçì - ðåæèì âîçâðàòîâ - ââåäåí â ÿçûê.
Âûïîëíåíèå ïðîãðàììû â ðåæèìå âîçâðàòîâ óäîáíî äëÿ åå àâòîðà òåì, ÷òî ÿçûê áåðåò íà ñåáÿ îòâåòñòâåííîñòü çà çàïîìèíàíèå ðàçâèëîê è îñòàâøèõñÿ â íèõ àëüòåðíàòèâ, çà îñóùåñòâëåíèå âîçâðàòîâ ê íèì è âîññòàíîâëåíèÿ ïðåæíåãî ñîñòîÿíèÿ ïðîãðàììû - âñå ýòî äåëàåòñÿ àâòîìàòè÷åñêè. Íî òàêîé àâòîìàòèçì íå âñåãäà âûãîäåí, òàê êàê â îáùåì ñëó÷àå îí âåäåò ê «ñëåïîìó» ïåðåáîðó. È ìîæåò îêàçàòüñÿ òàê, ÷òî ïðè âûçîâå òåîðåì íàèáîëåå ïîäõîäÿùàÿ èç íèõ áóäåò âûçâàíà ïîñëåäíåé, õîòÿ àâòîð ïðîãðàììû çàðàíåå çíàåò î åå äîñòîèíñòâàõ. Ó÷èòûâàÿ ýòî Ïëýíåð ïðåäîñòàâëÿåò ñðåäñòâà óïðàâëåíèÿ ðåæèìîì âîçâðàòîâ.[7]
Êîíèâåð.
ßçûê Êîíèâåð áûë ðàçðàáîòàí â 1972 ãîäó, ðåàëèçîâàí êàê íàäñòðîéêà íàä ÿçûêîì Ìàêëèñï. Àâòîðû ÿçûêà Êîíèâåð âûñòóïèëè ñ êðèòèêîé íåêîòîðûõ èäåé ÿçûêà Ïëýíåð.  îñíîâíîì îíà îòíîñèëàñü ê àâòîìàòè÷åñêîìó ðåæèìó âîçâðàòîâ, êîòîðûé â îáùåì ñëó÷àå âåäåò ê íåýôôåêòèâíûì è íåêîíòðîëèðóåìûì ïðîãðàììàì, îñîáåííî åñëè îíà ñîñòàâëÿåòñÿ íåêâàëèôèöèðîâàííûìè ïîëüçîâàòåëÿìè. Àâòîðû Êîíèâåð îòêàçàëèñü îò àâòîìàòè÷åñêîãî ðåæèìà âîçâðàòîâ, ñ÷èòàÿ, ÷òî âñòðàèâàòü â ÿçûê êàêèå-òî ôèêñèðîâàííûå äèñöèïëèíû óïðàâëåíèÿ (êðîìå ïðîñòåéøèõ - öèêëîâ, ðåêóðñèé) íå ñëåäóåò è ÷òî àâòîð ïðîãðàììû äîëæåí ñàì îðãàíèçîâûâàòü íóæíûå åìó äèñöèïëèíû óïðàâëåíèÿ, à äëÿ ýòîãî ÿçûê äîëæåí îòêðûâàòü ïîëüçîâàòåëþ ñâîþ ñòðóêòóðó óïðàâëåíèÿ è ïðåäîñòàâëÿòü ñðåäñòâà ðàáîòû ñ íåé. Ýòà êîíöåïöèÿ áûëà ðåàëèçîâàíà â Êîíèâåð ñëåäóþùèì îáðàçîì.
Ïðè âûçîâå ïðîöåäóðû â ïàìÿòè îòâîäèòñÿ ìåñòî, ãäå õðàíèòñÿ èíôîðìàöèÿ, íåîáõîäèìàÿ äëÿ åå ðàáîòû. Çäåñü, â ÷àñòíîñòè, ðàñïîëàãàþòñÿ ëîêàëüíûå ïåðåìåííûå ïðîöåäóðû, óêàçàòåëè äîñòóïà (ññûëêà íà ïðîöåäóðó, ïåðåìåííûå êîòîðîé äîñòóïíû èç äàííîé) è âîçâðàòà (ññûëêà íà ïðîöåäóðó, êîòîðîé íàäî âåðíóòü óïðàâëåíèå). Îáû÷íî ýòà èíôîðìàöèÿ ñêðûòà îò ïîëüçîâàòåëÿ, à â ÿçûêå Êîíèâåð òàêîé ó÷àñòîê ïàìÿòè (ôðåéì) îòêðûò: ïîëüçîâàòåëü ìîæåò ïðîñìàòðèâàòü è ìåíÿòü ñîäåðæèìîå ôðåéìà.  ÿçûêå ôðåéìû ïðåäñòàâëÿþò ñïåöèàëüíûé òèï äàííûõ, äîñòóï ê êîòîðûì îñóùåñòâëÿåòñÿ ïî óêàçàòåëÿì.
Íåäîñòàòîê ÿçûêà â òîì, ÷òî õîòÿ ïîëüçîâàòåëü è ïîëó÷àåò ãèáêèå ñðåäñòâà óïðàâëåíèÿ, îäíîâðåìåííî íà íåãî ëîæèòñÿ òðóäíàÿ è êðîïîòëèâàÿ ðàáîòà, òðåáóþùàÿ âûñîêîé êâàëèôèêàöèè. ßçûê Êîíèâåð õîðîø íå äëÿ ðåàëèçàöèè ñëîæíûõ ñèñòåì, à êàê áàçà, íà îñíîâå êîòîðîé êâàëèôèöèðîâàííûå ïðîãðàììèñòû ãîòîâÿò íóæíûå ìåõàíèçìû óïðàâëåíèÿ äëÿ äðóãèõ ïîëüçîâàòåëåé.
Ó÷èòûâàÿ ñëîæíîñòü ðåàëèçàöèè äèñöèïëèí óïðàâëåíèÿ, àâòîðû ÿçûêà áûëè âûíóæäåíû âêëþ÷èòü â íåãî ðÿä ôèêñèðîâàííûõ ìåõàíèçìîâ óïðàâëåíèÿ, àíàëîãîâ ïðîöåäóð-ðàçâèëîê è òåîðåì ÿçûêà Ïëýíåð. Íî â îòëè÷èè îò Ïëýíåðà, ãäå ðàçðûâ ìåæäó âûáîðîì àëüòåðíàòèâû â ðàçâèëêå è åå àíàëèçîì, à â ñëó÷àå íåîáõîäèìîñòè âûðàáîòêîé íåóñïåõà ìîæåò áûòü ñêîëü óãîäíî âåëèê, â ÿçûêå Êîíèâåð ýòîò ðàçðûâ ñâåäåí ê ìèíèìóìó. Ýòèì Êîíèâåð èçáàâëÿåòñÿ îò íåãàòèâíûõ ïîñëåäñòâèé ãëîáàëüíûõ âîçâðàòîâ ïî íåóñïåõó, êîãäà ïðèõîäèòñÿ îòìåíÿòü ïðåäûäóùóþ ðàáîòó ÷óòü ëè íå âñåé ïðîãðàììû.[7]
 ðàìêàõ êàæäîãî áàçîâîãî ÿçûêà ÈÈ ÿâíûì îáðàçîì âûäåëÿþòñÿ è ïðÿìîå åãî èñïîëüçîâàíèå, è ðàñøèðåíèå çà ñ÷åò ïàêåòîâ ôóíêöèé, è ñîçäàíèå «àâòîíîìíîãî» ÿçûêà ïðåäñòàâëåíèÿ çíàíèé (ßÏÇ) ñ ïîñëåäóþùåé èíòåðïðåòàöèåé èëè êîìïèëÿöèåé ïðîãðàìì íà ñîçäàííîì ÿçûêå. Íî â ïîñëåäíåì ñëó÷àå áàçîâûé ÿçûê, êàê ïðàâèëî, ñòàíîâèòñÿ èíñòðóìåíòàëüíûì ñðåäñòâîì äëÿ ðåàëèçàöèè ßÏÇ.
Íåçàâèñèìî îò ðåàëèçàöèè ßÏÇ äîëæåí îòâå÷àòü ñëåäóþùèì òðåáîâàíèÿì:
íàëè÷èå ïðîñòûõ è âìåñòå ñ òåì äîñòàòî÷íî ìîùíûõ ñðåäñòâ ïðåäñòàâëåíèÿ ñëîæíî ñòðóêòóðèðîâàííûõ è âçàèìîñâÿçàííûõ îáúåêòîâ;
âîçìîæíîñòü îòîáðàæåíèÿ îïèñàíèé îáúåêòîâ íà ðàçíûå âèäû ïàìÿòè ÝÂÌ;
íàëè÷èå ãèáêèõ ñðåäñòâ óïðàâëåíèÿ âûâîäîì, ó÷èòûâàþùèõ íåîáõîäèìîñòü ñòðóêòóðèðîâàíèÿ ïðàâèë ðàáîòû ðåøàòåëÿ;
«ïðîçðà÷íîñòü» ñèñòåìíûõ ìåõàíèçìîâ äëÿ ïðîãðàììèñòà, ò. å. âîçìîæíîñòü èõ äî îïðåäåëåíèÿ è ïåðåîïðåäåëåíèÿ íà óðîâíå âõîäíîãî ÿçûêà;
âîçìîæíîñòü ýôôåêòèâíîé ðåàëèçàöèè, êàê ïðîãðàììíîé, òàê è àïïàðàòíîé;
Êîíå÷íî, ïåðå÷èñëåííûå òðåáîâàíèÿ âî ìíîãîì ïðîòèâîðå÷èâû. Íî ëèøü òîãäà, êîãäà â ðàìêàõ ðàçóìíîãî êîìïðîìèññà ó÷òåíû âñå ýòè òðåáîâàíèÿ, ñîçäàþòñÿ óäà÷íûå ßÏÇ.
Ñðåäè ßÏÇ ïåðâîãî ïîêîëåíèÿ (70-å ãîäû) ëèøü íåêîòîðûå ñûãðàëè çàìåòíóþ ðîëü â ïðîãðàììíîé ïîääåðæêå ñèñòåì ïðåäñòàâëåíèÿ çíàíèé (ÑÏÇ). Âûäåëèì ñðåäè íèõ KRL, FRL, KL-ONE. Õàðàêòåðíûìè ÷åðòàìè ýòèõ ÿçûêîâ áûëè: äâóõóðîâíåâîå ïðåäñòàâëåíèå äàííûõ, ïðåäñòàâëåíèå çàêîíîìåðíîñòåé ïðåäìåòíîé îáëàñòè è ñâÿçåé ìåæäó ïîíÿòèÿìè â âèäå ïðèñîåäèíåííûõ ïðîöåäóð, ñåìàíòè÷åñêèé ïîäõîä ê ñîïîñòàâëåíèþ îáðàçöîâ è ïîèñêó ïî îáðàçöó.
KRL.
Îäèí èç ñàìûõ èíòåðåñíûõ ÿçûêîâ ýòîé ãðóïïû - KRL, â îñíîâó êîòîðîãî áûëè ïîëîæåíû ñëåäóþùèå êîíöåïöèè: îðãàíèçàöèÿ çíàíèé â âèäå ñïåöèàëüíî âûäåëåííûõ åäèíèö ñ ïðèñîåäèíåííûìè îïèñàíèÿìè è ïðîöåäóðàìè; íàëè÷èå ñðåäñòâ ïðåäñòàâëåíèÿ ìíîãîàñïåêòíîãî è/èëè íåïîëíîãî çíàíèÿ îá îáúåêòàõ; âîçìîæíîñòü îïèñàíèÿ îáúåêòîâ ÷åðåç ñîïîñòàâëåíèå èõ ñ äðóãèìè îáúåêòàìè ñ ó÷åòîì óòî÷íÿþùèõ îïèñàíèé; íàëè÷èå ãèáêîãî íàáîðà áàçîâûõ ñðåäñòâ îïèñàíèÿ ñòðàòåãèé âûâîäà ðåøåíèé è âîçìîæíîñòü èõ äèíàìè÷åñêîãî èçìåíåíèÿ. Îäíàêî KRL øèðîêî íå èñïîëüçîâàëñÿ â èíòåëëåêòóàëüíûõ ñèñòåìàõ èç-çà íåêîòîðîé åãî ãðîìîçäêîñòè è îòñóòñòâèÿ ñîáñòâåííûõ ñðåäñòâ îïèñàíèÿ ïðîöåäóð. Êàê ñëåäñòâèå, â KRL àêòèâíî èñïîëüçîâàëñÿ Ëèñï. ×àñòî íåëüçÿ áûëî ïîíÿòü, èìååì ìû äåëî ñ KRL-ïðîãðàììîé è ïðèñîåäèíåííûìè Ëèñï-ôóíêöèÿìè èëè ñ Ëèñï-ïðîãðàììîé, â êîòîðîé ïðèìåíÿåòñÿ KRL êàê ñïîñîá ïðåäñòàâëåíèÿ äàííûõ.
FRL.
ßçûê FRL íå ñàìîñòîÿòåëüíûé ÿçûê, à õîðîøî ïðîäóìàííàÿ áèáëèîòå÷íàÿ ñèñòåìà íàä Ëèñïîì.  FRL íå ïðåäëàãàåòñÿ ïðèíöèïèàëüíî íîâûõ ïî ñðàâíåíèþ ñ KRL êîíöåïöèé ïðåäñòàâëåíèÿ çíàíèé, íî òåì íå ìåíåå îí îêàçàëñÿ áîëåå óäîáíûì áëàãîäàðÿ òùàòåëüíîìó è ýêîíîìíîìó îòáîðó áàçîâûõ àëãîðèòìè÷åñêèõ ñðåäñòâ, à òàêæå áîëåå ïðîñòîìó èõ ñèíòàêñè÷åñêîìó îôîðìëåíèþ. Çäåñü èìåþòñÿ ðàçâèòûå ñðåäñòâà ìàíèïóëèðîâàíèÿ èåðàðõè÷åñêèìè ñïèñêàìè ñâîéñòâ îáúåêòîâ, âêëþ÷àÿ ìåõàíèçìû íàñëåäîâàíèÿ ñâîéñòâ è íàáîð ïðèñîåäèíåííûõ ê îïèñàíèÿì ïðîöåäóð.
Äëÿ âñåõ ßÏÇ ïî ñðàâíåíèþ ñ òðàäèöèîííûìè ÿçûêàìè ïðîãðàììèðîâàíèÿ õàðàêòåðíà ñóùåñòâåííî áîëüøàÿ «àêòèâíîñòü» äàííûõ, ÷òî ïðèâîäèò ê ñòèðàíèþ ãðàíåé ìåæäó äåêëàðàòèâíîé è ïðîöåäóðíîé êîìïîíåíòàìè. Êðîìå òîãî, ðåàëüíûå îáúåìû îáðàáàòûâàåìûõ äàííûõ òðåáóþò ïðè ðåàëèçàöèè ßÏÇ èñïîëüçîâàíèÿ êîíöåïöèè áàçû äàííûõ è ìåòîäîâ, ðàçâèòûõ ïðè ñîçäàíèè ÑÓÁÄ. È, íàêîíåö, ßÏÇ òÿãîòåþò áîëüøå ê ðåæèìó èíòåðïðåòàöèè, ÷åì ê êîìïèëÿöèè, õàðàêòåðíîé äëÿ ðåàëèçàöèè îáû÷íûõ ÿçûêîâ ïðîãðàììèðîâàíèÿ.  îáëàñòè ðàçðàáîòêè è ðåàëèçàöèè ßÏÇ ìîæíî âûäåëèòü òðè êðóãà ïðîáëåì: îïðåäåëåíèå âõîäíûõ ÿçûêîâ ÑÏÇ; âûáîð âûõîäíîãî ÿçûêà ñîîòâåòñòâóþùåãî òðàíñëÿòîðà è ñîáñòâåííî ïðîáëåìû ýòàïà òðàíñëÿöèè.
Âõîäíîé ÿçûê ÑÏÇ äîëæåí áûòü áëèçîê ê ÿçûêó ïðåäìåòíîé îáëàñòè è ïî ëåêñèêå, è ïî ñèíòàêñèñó, è ïî ñåìàíòèêå.
Îò âûáîðà âûõîäíîãî ÿçûêà çàâèñèò íå òîëüêî ýôôåêòèâíîñòü, íî è ñàìà âîçìîæíîñòü ðåàëèçàöèè ßÏÇ. Âûõîäíîé ÿçûê äîëæåí îòâå÷àòü ïî êðàéíåé ìåðå ñëåäóþùèì òðåáîâàíèÿì: èìåòü äîñòàòî÷íî áîëüøîé íàáîð ïðèìèòèâîâ ðàáîòû ñ îáðàçöàìè; îáëàäàòü âñòðîåííûìè ñðåäñòâàìè ýôôåêòèâíîé ïîääåðæêè ðåêóðñèè; èìåòü ãèáêèå ñðåäñòâà îïèñàíèÿ ïîòîêîâ óïðàâëåíèÿ. Êðîìå òîãî, â ðàìêàõ âûõîäíîãî ÿçûêà íåîáõîäèìû ñðåäñòâà îòîáðàæåíèÿ äàííûõ íà îñíîâíóþ è âíåøíþþ ïàìÿòü è óäîáíûå ñðåäñòâà ðàáîòû ñ ýòèìè äàííûìè. È, íàêîíåö, æåëàòåëüíî, ÷òîáû â íåì èìåëèñü äîñòàòî÷íî ðàçâèòûå ñðåäñòâà îïðåäåëåíèÿ íîâûõ òèïîâ äàííûõ.
 íàñòîÿùåå âðåìÿ ÿçûêîâ ïðîãðàììèðîâàíèÿ, ãäå èìåëà áû ìåñòî ýôôåêòèâíàÿ ðåàëèçàöèÿ âñåõ óêàçàííûõ òðåáîâàíèé, ïîêà íåò. Ïîýòîìó âûáîð öåëåâîãî ÿçûêà ßÏÇ-òðàíñëÿòîðà âñåãäà êîìïðîìèññ.
Íà äàííîì ýòàïå ñóùåñòâóåò ñîòíè ÿçûêîâ è ñèñòåì ïðåäñòàâëåíèÿ çíàíèé. Ïîýòîìó ðàññìîòðèì ëèøü íåêîòîðûå îñîáåííîñòè íåñêîëüêèõ ßÏÇ.
RLL.
Ýòî ôðåéìîâûé ÿçûê ïðåäñòàâëåíèÿ çíàíèé (ïðåäñòàâèòåëü ïîïóëÿðíîãî â 70-õ ãîäàõ ïîäõîäà «ôðåéìû äî êîíöà», ÿâëÿåòñÿ èíñòðóìåíòàëüíîé ñðåäîé äëÿ ñîçäàíèÿ ñïåöèàëèçèðîâàííûõ ßÏÇ.
Ïîäîáíî äðóãèì èíñòðóìåíòàëüíûì ñðåäñòâàì, RLL ñîäåðæèò äâà ñëîÿ: áàçèñíûå ïðèìèòèâû è ñðåäñòâà èõ êîìáèíèðîâàíèÿ íà áîëåå âûñîêîì óðîâíå, ÷åì Ëèñï. Ïðè ýòîì òåõíîëîãèÿ êîíñòðóèðîâàíèÿ ñïåöèàëüíûõ ßÏÇ â ðàìêàõ RLL-ñðåäû ñâîäèòñÿ, êàê ïðàâèëî, ê ðåäàêòèðîâàíèþ óæå ñóùåñòâóþùèõ çàãîòîâîê è ïîñëåäóþùåìó êîíâåðòèðîâàíèþ èõ â Ëèñï.
Ó÷èòûâàÿ ïîñëåäîâàòåëüíóþ îðèåíòàöèþ RLL íà êîíöåïöèþ ôðåéìîâ, âñå ñòðóêòóðû (äåêëàðàòèâíûå è ïðîöåäóðíûå), áîëåå ñëîæíûå ÷åì ñïèñîê çíà÷åíèé, îïèñûâàþòñÿ çäåñü â âèäå ôðåéì-ïîäîáíûõ RLL-ýëåìåíòîâ.
Ñ ïîìîùüþ RLL-ýëåìåíòîâ îïèñûâàþòñÿ ïîíÿòèÿ íå òîëüêî ïðåäìåòíîé îáëàñòè, íî è ñàìîé RLL-ñðåäû (íàïðèìåð, ñëîò, ìåõàíèçì íàñëåäîâàíèÿ, ñòðóêòóðà óïðàâëåíèÿ è ò. ä.). Çàðàíåå íà óðîâíå RLL-èíòåðïðåòàòîðà èëè êîíâåðòîðà ôèêñèðóåòñÿ ñåìàíòèêà îãðàíè÷åííîãî ÷èñëà ñèñòåìíûõ ïîíÿòèé - ýòî ìíîæåñòâà, ñïèñêè, ñëîòû è äð. RLL-ýëåìåíòû èìåþò ÿâíî ñïåöèôèöèðîâàííûå ðîäîâèäîâûå îòíîøåíèÿ, êîòîðûå òàêæå ÿâëÿþòñÿ ñèñòåìíûìè ïîíÿòèÿìè, è âñòðîåííûé ìåõàíèçì îïèñàíèÿ îòíîøåíèé ñ ïîìîùüþ ìíîãîñâÿçíûõ ñïèñêîâ.
 RLL èìååòñÿ è áèáëèîòåêà óäà÷íûõ óïðàâëÿþùèõ ñòðóêòóð, è îïðåäåëåííûå ñðåäñòâà êîíñòðóèðîâàíèÿ èç íèõ ðåøàòåëåé, íåîáõîäèìûõ äëÿ êîíêðåòíîé ÝÑ.
Îäíèì èç îñíîâíûõ ñòàíäàðòíûõ ìåõàíèçìîâ âûâîäà ðåøåíèé â RLL ÿâëÿåòñÿ agenda (óïðàâëÿþùèé ñïèñîê ñ äèíàìè÷åñêîé êîððåêöèåé ýëåìåíòîâ).
ART.
Ýòîò ÿçûê äåìîíñòðèðóåò äðóãóþ ïàðàäèãìó «ôðåéìû ïëþñ ïðîäóêöèè», õàðàêòåðíóþ äëÿ íà÷àëà 80-õ ãîäîâ. Ýòî íå òîëüêî ÿçûê ïðåäñòàâëåíèÿ çíàíèé, íî è îïðåäåëåííîå ïðîãðàììíîå îêðóæåíèå, âêëþ÷àþùåå ðåäàêòîðû, îòëàä÷èêè, òðàíñëÿòîðû è ìîäóëè óïðàâëåíèÿ.
Âõîäíîé ÿçûê ñèñòåìû ART âåñüìà ãèáêèé è îáåñïå÷èâàåò èñïîëüçîâàíèå ôàêòîâ, ñõåì, êîìáèíàöèé ýòèõ ïîíÿòèé è ïðàâèë. Äåêëàðàòèâíóþ êîìïîíåíòó ýòîãî ßÏÇ ñîñòàâëÿþò ôàêòû è ñõåìû. Ïî îïðåäåëåíèþ, ôàêò âêëþ÷àåò òðè îñíîâíûõ êîìïîíåíòà: óòâåðæäåíèå, çíà÷åíèå èñòèííîñòè è òî÷êó çðåíèÿ. Ñ êàæäûì óòâåðæäåíèåì ìîæåò áûòü ñâÿçàíî îäíî èç òðåõ çíà÷åíèé èñòèííîñòè true, false èëè unknown, à òàêæå îïðåäåëåííûå ñôåðû åãî ñïðàâåäëèâîñòè, êîòîðîå è íàçûâàåòñÿ òî÷êîé çðåíèÿ. Ôàêòû îïèñûâàþòñÿ ýêçåìïëÿðàìè ôðåéìîâ. Ôðåéìû-ïðîòîòèïû â ART ïðåäñòàâëÿþòñÿ ñõåìàìè, êàæäàÿ èç êîòîðûõ îïèñûâàåò îáúåêòû è/èëè êëàññû îáúåêòîâ ñ ôèêñèðîâàííûìè ñâîéñòâàìè. Ìåõàíèçìû íàñëåäîâàíèÿ ñâîéñòâ ïðè ýòîì ïîääåðæèâàþòñÿ ñàìîé ñèñòåìîé.
 öåëîì ÿçûê ART ïîãðóæåí â Ëèñï-ñðåäó, òàê ÷òî ñèíòàêñè÷åñêè è ôðåéìîâûå è ïðîäóêöèîííûå ñòðóêòóðû âûðàæàþòñÿ çäåñü êàê àòîìû, ôóíêöèè è ñïèñêè ÿçûêà Ëèñï. Òàêîé ïîäõîä â ART åñòåñòâåíåí, òàê êàê ïåðâîíà÷àëüíî áûë ðåàëèçîâàí íà Ëèñï-ìàøèíàõ. Ñðåäñòâà îïèñàíèÿ ôàêòîâ â ÿçûêå ART ïî÷òè ïîëíîñòüþ «îòäàíû íà îòêóï» Ëèñïó, ÷òî ñíèæàåò êîíöåïòóàëüíóþ öåëîñòíîñòü ÿçûêà , òàê êàê ñðåäñòâà îïèñàíèÿ ñõåì è ïðàâèë çäåñü õîòÿ è ïîõîæè íà ëèñïîâñêèå, íî ñâîè.  ART ïîëüçîâàòåëþ äàåòñÿ íåáîëüøîé íàáîð âñòðîåííûõ ñòðàòåãèé âûâîäà ðåøåíèé è âåñüìà îãðàíè÷åííûé âûáîð èç ART-äåéñòâèé, âçàèìîäåéñòâóþùèõ ñ ìîäóëåì âûâîäà. Íî â ñèñòåìå èìååòñÿ âîçìîæíîñòü âûõîäà â áàçîâûé ÿçûê Ëèñï, ãäå ïðîãðàììèðóþòñÿ ëþáûå óïðàâëÿþùèå ñòðàòåãèè.
 ïîëíîì îáúåìå ART ïðåäñòàâëÿåò ðàçðàáîò÷èêó ÝÑ äîñòàòî÷íî ìîùíûå ñðåäñòâà ïðåäñòàâëåíèÿ çíàíèé, íî ýôôåêòèâíî â ñèñòåìå ART ìîãóò ðàáîòàòü òîëüêî êâàëèôèöèðîâàííûå Ëèñï-ïðîãðàììèñòû, ãîòîâûå ðåàëèçîâàòü â ýòîì ÿçûêå âñå ïðîöåäóðû ïîääåðæêè ßÏÇ.
Äàëüíåéøåå ðàçâèòèå ßÏÇ ñìåùàåòñÿ â ñòîðîíó ïðîäóêöèé. Âìåñòå ñ òåì â íàñòîÿùåå âðåìÿ óæå ðåäêî óäàåòñÿ êëàññèôèöèðîâàòü ÿçûêè è ñèñòåìû ïðåäñòàâëåíèÿ çíàíèé íà øêàëå «ôðåéìû - ïðîäóêöèè - ñåìàíòè÷åñêèå ñåòè - ...» îäíîçíà÷íî. È õîòÿ òîò èëè èíîé ôîðìàëèçì ïðåäñòàâëåíèÿ çíàíèé íàêëàäûâàåò â áîëüøåé èëè ìåíüøåé ñòåïåíè ñâîé îòïå÷àòîê íà ñîîòâåòñòâóþùèé ßÏÇ, ñîâðåìåííûå ÿçûêè è ñèñòåìû, êàê ïðàâèëî, ïîääåðæèâàþò íåñêîëüêî ôîðìàëèçìîâ îäíîâðåìåííî.
1.3 Îñîáåííîñòè äèàëåêòîâ ÿçûêà Ëèñï.
Ìàêëèñï.
Êðîìå ñèìâîëüíîé îáðàáîòêè Ìàêëèñï øèðîêî èñïîëüçîâàëñÿ â òðàäèöèîííûõ ÷èñëîâûõ âû÷èñëåíèÿõ, ïðèìåíÿåìûõ , íàïðèìåð, â îáðàáîòêå ðå÷è è èçîáðàæåíèé. Êðîìå èññëåäîâàòåëåé ÈÈ è ðàçðàáîò÷èêîâ àëãåáðàè÷åñêîé ñèñòåìû Ìàêñèìà íà Ìàêëèñï îêàçàëè âëèÿíèå è ðàáîòû ãðóïï â ÌÈÒ ïî ðîáîòîòåõíèêå, îáðàáîòêå ðå÷è è èçîáðàæåíèé. Èñõîäÿ èç òðåáîâàíèé, ïðåäúÿâëÿåìûõ ýòèìè îáëàñòÿìè, â Ìàêëèñï áûëè âêëþ÷åíû íîâûå ìàòåìàòè÷åñêèå òèïû äàííûõ, òàêèå êàê ìàòðè÷íàÿ è áèòîâàÿ îáðàáîòêà, à òàêæå øèðîêèé íàáîð àðèôìåòè÷åñêèõ ôóíêöèé è ñðåäñòâ. Áûòü ìîæåò, âàæíåéøàÿ èç íèõ - âîçìîæíîñòü âû÷èñëåíèé ñ íåîãðàíè÷åííîé òî÷íîñòüþ, îñíîâûâàþùàÿñÿ íà ñîçäàííûõ Êíóòîì (1969) àëãîðèòìàõ.[2]
Ìàêëèñï áûë òàêæå ïåðâîé Ëèñï-ñèñòåìîé äëÿ êîòîðîé ñîçäàí õîðîøèé òðàíñëÿòîð. Òðàíñëÿòîð ãåíåðèðóåò ìàøèííóþ ïðîãðàììó â ôîðìå ñïèñêîâ. Ìàøèííûé êîä â âèäå ñïèñêà ëåãêî îáðàáàòûâàòü è ðåçóëüòèðóþùèé êîä äëÿ ÷èñëîâûõ çàäà÷ ïîëó÷àëñÿ ýôôåêòèâíåå, ÷åì ó ëó÷øèõ ôîðòðàíîâñêèõ òðàíñëÿòîðîâ.
Îäíàêî áîëüøóþ ÷àñòü ñâîèõ ñâîéñòâ Ìàêëèñï ïðèîáðåë ïîä âëèÿíèåì ñòîÿùèõ ïåðåä èññëåäîâàòåëÿìè ÈÈ ïðîáëåì è íàêîïëåííîãî îïûòà. Òàê â ÿçûê ïîïàëè ìàêðîñû ÷òåíèÿ è òàáëèöû ÷òåíèÿ, ïîçâîëÿþùèå ëåãêî èçìåíÿòü è ðàñøèðÿòü ñòðóêòóðó ÿçûêà. Òàêèì æå îáðàçîì èç òðåáîâàíèé ê ïðîãðàììàì è îêðóæåíèþ âîçíèêëè óïðàâëÿþùèå ñòðóêòóðû, ìåõàíèçìû îáðàáîòêè ïðåðûâàíèé è îøèáîê, à òàêæå èñïîëüçîâàíèå óïðàâëÿþùèõ ñèìâîëîâ, ñîçäàí è èíòåãðèðîâàí â ñèñòåìó ýêðàííûé ðåäàêòîð, ïîÿâèëèñü óïðàâëåíèå è âçàèìîäåéñòâèå ïàðàëëåëüíûõ ïðîöåññîâ.
Îñíîâíîå âíèìàíèå ðàçðàáîò÷èêè Ìàêëèñïà ñîñðåäîòî÷èëè íà ýôôåêòèâíîñòè. Ýòîìó ñëóæàò óêàçàíèÿ, óòî÷íÿþùèå ñïîñîáû îáðàáîòêè àðãóìåíòîâ ôóíêöèé, à òàêæå ýêðàíèðîâàíèå îò âìåøàòåëüñòâà ïðîãðàììèñòà âíóòðåííèõ ìåõàíèçìîâ ñèñòåìû. Çà ñ÷åò ýòèõ ìåð ñêîðîñòü ðàáîòû Ìàêëèñïà â 1.5-2.5 ðàçà âûøå, ÷åì Èíòåðëèñï.[7]
Âñåãî â Ìàêëèñïå èñïîëüçóåòñÿ îêîëî 400 ôóíêöèé. Ñàìûì áîëüøèì íåäîñòàòêîì ñèñòåìû ÿâëÿåòñÿ òî, ÷òî åå íèêîãäà íå äîêóìåíòèðîâàëè äîëæíûì îáðàçîì. Äîêóìåíòàöèÿ ïî ýòîé ñèñòåìå ðàçáðîñàíà ïî ðàçëè÷íûì îò÷åòàì è ðóêîâîäñòâàì. Ìàêëèñï áûë èññëåäîâàòåëüñêîé ñèñòåìîé è íå ïðåäíàçíà÷àëñÿ äëÿ îáó÷åíèÿ è ïðîìûøëåííîãî èñïîëüçîâàíèÿ.[2]
ìóËèñï.
Èíòåðïðåòàòîð Ìóëèñï-85, ðàçðàáîòàííûé äëÿ ÏÝÂÌ ñåðèè IBM PC - óäà÷íûé âàðèàíò ðåàëèçàöèè äèàëåêòà ÿçûêà, âêëþ÷àþùèé ñðàâíèòåëüíî îãðàíè÷åííûé íàáîð áàçîâûõ ôóíêöèé (îêîëî 260) è îêàçàâøèéñÿ â ñëåäñòâèå ýòîãî áîëåå ïðîñòûì äëÿ èçó÷åíèÿ.
Ïî ñðàâíåíèþ ñ Êîììîí Ëèñïîì äèàëåêò ìóËèñï íå èìååò òàêîãî øèðîêîãî ñïåêòðà äîñòóïíûõ òèïîâ äàííûõ.  íåì îáåñïå÷èâàåòñÿ ðàáîòà òîëüêî ñ äâóìÿ òèïàìè ÷èñëîâîé èíôîðìàöèè: öåëûìè ÷èñëàìè ñ ëþáûì îñíîâàíèåì è ðàöèîíàëüíûìè.  äèàëåêòå îòñóòñòâóþò ñðåäñòâà ðàáîòû ñî ñòðóêòóðàìè, ìàññèâàìè, ïîòîêàìè è äðóãèìè òèïàìè äàííûõ, óêàçàííàÿ ðåàëèçàöèÿ ÿçûêà Ëèñï èìååò îäíî ñóùåñòâåííîå ïðåèìóùåñòâî - âîçìîæíîñòü ïîïîëíåíèÿ áàçîâîãî íàáîðà ôóíêöèé ïóòåì ïîäêëþ÷åíèÿ ïîäïðîãðàìì, íàïèñàííûõ íà ÿçûêå àññåìáëåðà, ÷òî ïîçâîëèëî ïîâûñèòü ãèáêîñòü èñïîëüçîâàíèÿ èíòåðïðåòàòîðà è ýôôåêòèâíîñòü ïðèêëàäíîãî ïðîãðàììíîãî îáåñïå÷åíèÿ, ñîçäàâàåìîãî íà åãî îñíîâå. Âîçìîæíîñòü òàêîãî ïîïîëíåíèÿ îòñóòñòâóåò â áîëüøèíñòâå äðóãèõ Ëèñï-ñèñòåì, ÿâëÿþùèõñÿ â ýòîì ñìûñëå çàìêíóòûìè ïðîãðàììíûìè ïðîäóêòàìè.
Ñðåäè äðóãèõ, âåðîÿòíî, ìåíåå ñóùåñòâåííûõ, îñîáåííîñòåé ñèñòåìû ìîæíî óêàçàòü íà ðåàëèçàöèþ ñïåöèàëüíîãî ìåõàíèçìà, ïîçâîëÿþùåãî íå çàáîòèòüñÿ î ïðèñâàèâàíèè íà÷àëüíûõ çíà÷åíèé ëèòåðàëüíûì àòîìàì, ïîëó÷àþùèõ èçíà÷àëüíîå çíà÷åíèå, ðàâíîå «ïå÷àòíîìó» èìåíè ñàìîãî àòîìà. Åùå îäíîé îñîáåííîñòüþ äèàëåêòà ÿâëÿåòñÿ âîçìîæíîñòü èñïîëüçîâàíèÿ íîâîé ñèíòàêñè÷åñêîé êîíñòðóêöèè «âñòðîåííûé COND», ñóùåñòâåííî ñîêðàùàþùåé òåêñòû îïèñàíèé ôóíêöèé ïîëüçîâàòåëÿ è ïðèìåíÿåìîé ïðè çàïèñè òåë ôóíêöèé è ëÿìáäà-âûðàæåíèé.[7]
Íàáîð áàçîâûõ ôóíêöèé ìóËèñï-èíòåðïðåòàòîðà âêëþ÷àåò ðÿä ôóíêöèé, îáåñïå÷èâàþùèõ äîñòóï ïðàêòè÷åñêè êî âñåì ôóíêöèÿì ÎÑ ÝÂÌ ÷åðåç ñîîòâåòñòâóþùèå ïðåðûâàíèÿ. Íàêîíåö, óêàçàííàÿ Ëèñï-ñèñ-òåìà îáåñïå÷èâàåòñÿ áèáëèîòåêàìè Ëèñï-ôóíêöèé, äîïîëíÿþùèìè áàçîâûé íàáîð ôóíêöèÿìè, èìåþùèìèñÿ â äèàëåêòàõ Êîììîí Ëèñï è Èíòåðëèñï, ÷òî îáëåã÷àåò ðåøåíèå ïðîáëåìû ïåðåíîñèìîñòè èñõîäíûõ òåêñòîâ ïðîãðàììíûõ ìîäóëåé, à òàêæå áèáëèîòåêàìè, ïîçâîëÿþùèìè âûïîëíÿòü ìàíèïóëèðîâàíèå îêíàìè íà ýêðàíå äèñïëåÿ è îáðàáàòûâàòü óïðàâëÿþùèå âîçäåéñòâèÿ ÷åðåç óñòðîéñòâî òèïà «ìûøü».  êîìïëåêò äîïîëíèòåëüíîãî ïðîãðàììíîãî îáåñïå÷åíèÿ ê èíòåðïðåòàòîðó âõîäÿò èíòåðàêòèâíûé ðåäàêòîð òåêñòîâ è ïðîñòàÿ îáó÷àþùàÿ ñèñòåìà, íàïèñàííûå íà äèàëåêòå ÿçûêà ìóËèñï.[7]
Èíòåðëèñï.
Èíòåðëèñï ïîÿâèëñÿ â 1972 ãîäó èç ÁÁÍ-Ëèñïà. Ê 1978 ãîäó, êîãäà âûøëî îïèñàíèå Èíòåðëèñïà, ÿçûê è ñèñòåìà óæå äîñòàòî÷íî ñòàáèëèçèðîâàëèñü. Èíòåðëèñï óæå íå áûë ÿçûêîì â òîì æå ñìûñëå, ÷òî è Ìàêëèñï èëè äðóãèå Ëèñï- ñèñòåìû èëè îáû÷íûå òðàäèöèîííûå ñèñòåìû ïðîãðàììèðîâàíèÿ. Îí ïðåäñòàâëÿë ñîáîé èíòåãðèðîâàííóþ ñðåäó ïðîãðàììèðîâàíèÿ, â êîòîðóþ âîøëî ìíîæåñòâî ðàçëè÷íûõ âñïîìîãàòåëüíûõ ñðåäñòâ. Èíòåðëèñï ñòàë êëàññè÷åñêèì ïðèìåðîì õîðîøî ðàçâèòûõ ïðîãðàììíûõ ñðåäñòâ è ñðåäñòâ â ñèñòåìàõ ðàçäåëåíèÿ âðåìåíè.[2]
Ýòîò äèàëåêò íàðÿäó ñ Êîììîí Ëèñïîì îäèí èç íàèáîëåå ðàñïðîñòðàíåííûõ, èìååò äîñòàòî÷íî ðàçâèòûé àïïàðàò ïðåäñòàâëåíèÿ è ìàíèïóëèðîâàíèÿ ðàçëè÷íûìè ñòðóêòóðàìè äàííûõ, âêëþ÷àÿ ìàññèâû. Ñðåäè îáùèõ îñîáåííîñòåé äàííîãî âàðèàíòà ÿçûêà ñëåäóåò îòìåòèòü èñïîëüçîâàíèå äëÿ îáîçíà÷åíèÿ âñòðîåííûõ ôóíêöèé íåòðàäèöèîííûõ èìåí, ÷òî ïîðîé çàòðóäíÿåò ïåðåíîñ ãîòîâûõ ïðîãðàììíûõ ïðîäóêòîâ íà äðóãèå äèàëåêòû è äðóãèå ÝÂÌ.[7]
 1974 ãîäó Xerox íà÷àëà ðàçðàáîòêó äëÿ Èíòåðëèñïà ïåðñîíàëüíîé ëèñïîâñêîé ðàáî÷åé ñòàíöèè ïîä íàçâàíèåì Alto.  ðåàëèçàöèè Ëèñïà äëÿ Alto âïåðâûå ïðèìåíèëè ñïðîåêòèðîâàííóþ ñïåöèàëüíî äëÿ ÿçûêà Ëèñï ìèêðîïðîãðàììèðóåìóþ ñèñòåìó êîìàíä è ìèíè-ÝÂÌ, ñïîñîáíóþ ñ áîëåå âûñîêîé ïðîèçâîäèòåëüíîñòüþ, ÷åì óíèâåðñàëüíûå ÝÂÌ, èíòåðïðåòèðîâàòü ëèñïîâñêèå ïðîãðàììû. Èç ýòîé ìàøèíû Alto âïîñëåäñòâèè ðàçâèëèñü Ëèñï-ìàøèíû ñåðèè 1100 ôèðìû Xerox.
Íà îñíîâå âåðñèè Èíòåðëèñïà, ðàáîòàâøåé â ñèñòåìå ðàçäåëåíèÿ âðåìåíè, áûëà ñîçäàíà ñîâìåñòèìàÿ ñíèçó ââåðõ âåðñèÿ Ëèñïà Èíòåðëèñï-äå, èñïîëüçóåìàÿ íà Ëèñï-ìàøèíàõ ñåðèè 1100.  åå ïîëüçîâàòåëüñêèé èíòåðôåéñ âõîäèëè ìíîãîîêîííîå âçàèìîäåéñòâèå, ãðàôèêà ñ âûñîêîé ðàçðåøàþùåé ñïîñîáíîñòüþ, ñðåäñòâà âûáîðà èç ìåíþ è ìûøü, à òàêæå îðèåíòèðîâàííûé íà èñïîëüçîâàíèå ýêðàíà èíñïåêòîð ñòðóêòóð äàííûõ. Èäåÿ ðàçäåëåíèÿ ýêðàíà íà ìíîãèå íåçàâèñèìûå îêíà ðîäèëàñü â XLG. Àëàí Êýé óæå â êîíöå 60-õ ãîäîâ ïðåäëîæèë òàêóþ èäåþ ïîäõîäà ê êîìïüþòåðàì áóäóùåãî è èíòåðôåéñó ìåæäó ÷åëîâåêîì è ìàøèíîé. Ðàáîòà XLG ïðèâåëà ê ñîçäàíèþ â 70-õ ãîäàõ ê ðàçðàáîòêå ÿçûêà ïðîãðàììèðîâàíèÿ Smolltalk è îáúåêòíîãî ïðîãðàììèðîâàíèÿ.
Ïðè ñîçäàíèè Èíòåðëèñïà ðàáîòà âåëàñü âåñüìà òùàòåëüíî. Ñèñòåìà õîðîøî äîêóìåíòèðîâàíà è áîëåå íîâûå âåðñèè ñîâìåñòèìû ñ áîëåå ðàííèìè. Òàê ïðåèìóùåñòâîì ñèñòåìû ñòàëî íåïðåðûâíî ïîïîëíÿþùååñÿ áîëüøîå êîëè÷åñòâî ïåðåíîñèìîãî ïðîãðàììíîãî îáåñïå÷åíèÿ. Ñ äðóãîé ñòîðîíû, îãðàíè÷åíèå ñèñòåìû ñòàðûì çàôèêñèðîâàííûì óæå â êîíöå 70-õ ãîäîâ äèàëåêòîì ñäåëàëî ñèñòåìó îò÷àñòè óñòàðåâøåé è òðóäíî ðàñøèðÿåìîé.  Èíòåðëèñïå ñðåäè ïðî÷åãî îòñóòñòâóþò èåðàðõè÷åñêèå òèïû äàííûõ, îáúåêòû è çàìûêàíèÿ. Ê òîìó æå îí áàçèðóåòñÿ íà äèíàìè÷åñêîì ñâÿçûâàíèè, òîãäà êàê íîâûå âåðñèè Ëèñïà - ñòàòè÷åñêèå. Îäíàêî èç Èíòåðëèñïà áåðåò íà÷àëî íîâàÿ âåðñèÿ - Êîììîí Ëèñï (1986). Äëÿ ïðîãðàììèðîâàíèÿ íà áîëåå âûñîêîì óðîâíå â Èíòåðëèñï ðàçðàáîòàíû òàêèå ñðåäñòâà, â êîòîðûõ óæå ïðèñóòñòâîâàëè îáúåêòû.
Èíòåðëèñï - ñòîëü çàìêíóòàÿ ñèñòåìà, ÷òî äîñòóïíà òîëüêî åå îòòðàíñëèðîâàííàÿ âåðñèÿ â ìàøèííûõ êîäàõ. Â íåêîòîðûõ äðóãèõ ñèñòåìàõ, òàêèõ êàê, íàïðèìåð Çåòàëèñï, ïîääåðæèâàåòñÿ âåðñèÿ Ëèñïà íà èñõîäíîì ÿçûêå, êîòîðàÿ äîñòóïíà ïîëüçîâàòåëþ è ìîæåò ìîäèôèöèðîâàòüñÿ èì. Ðàçâèòèå çàêðûòûõ ñèñòåì, ïîõîæèõ íà Èíòåðëèñï, ñâÿçàíî ñ ðåñóðñàìè, èìåþùèìñÿ ó ñîçäàâøèõ èõ ëàáîðàòîðèé.
Èíòåðëèñï èñïîëüçóåò ñâûøå 500 ôóíêöèé è áîëüøîå êîëè÷åñòâî ñèñòåìíûõ èìåí è ôëàæêîâ, ñ ïîìîùüþ êîòîðûõ ìîæíî íàñòðîèòü è ïîäîãíàòü ñèñòåìó. Èíòåðëèñï ðåàëèçîâàí â ñèñòåìå ðàçäåëåíèÿ âðåìåíè íà ìíîãèõ áîëüøèõ ÝÂÌ.
 Èíòåðëèñïå îñíîâíîå âíèìàíèå áûëî óäåëåíî óäîáñòâó ñèñòåìû äëÿ ïîëüçîâàòåëÿ. Ãëàâíûé ïðèíöèï ðàçðàáîò÷èêîâ ýòîãî äèàëåêòà: âñå, ÷òî ìîæåò èìåòü ìåñòî â ñèñòåìå, äîëæíî åñòåñòâåííî âûðàæàòüñÿ â òåðìèíàõ åå âõîäíîãî ÿçûêà. Ïîýòîìó â Èíòåðëèñï ïðîãðàììèñòó äîñòóïíî âñå. Îí ìîæåò ïåðåîïðåäåëÿòü ëþáûå, â òîì ÷èñëå è âñòðîåííûå, ôóíêöèè; çàäàâàòü è ïåðåîïðåäåëÿòü ðåàêöèè íà îøèáêè; ðàáîòàòü íåïîñðåäñòâåííî ñ óðîâíÿ âõîäíîãî ÿçûêà ñ âíóòðåííèìè ñòðóêòóðàìè èíòåðïðåòàòîðà è ò. ä. Ïðè ýòîì ñèñòåìà ïîääåðæèâàåò ñâîþ öåëîñòíîñòü è ðàáîòîñïîñîáíîñòü.[7]
Ôðàíñ Ëèñï.
Ìàêëèñï ñòàë îñíîâîé äëÿ ìíîãèõ íîâûõ äèàëåêòîâ ÿçûêà Ëèñï, ïåðâûì èç êîòîðûõ áûë Ôðàíñ Ëèñï. Ýòà âåðñèÿ Ëèñïà íàçâàíà â ÷åñòü èçâåñòíîãî âåíãåðñêîãî êîìïîçèòîðà. Ãëàâíûì ìîòèâîì ðàçðàáîòêè Ôðàíñ Ëèñï áûëî æåëàíèå ïîëó÷èòü ñîâðåìåííóþ Ëèñï-ñèñòåìó äëÿ íîâûõ ìàøèí VAX, ÷òîáû íà íèõ ìîæíî áûëî èñïîëüçîâàòü ñèñòåìó Ìàêñèìà è äðóãîå ëèñïîâñêîå ïðîãðàììíîå îáåñïå÷åíèå. Ôðàíñ Ëèñï â äîâîëüíî áîëüøîé ñòåïåíè íàïîìèíàåò Ìàêëèñï, íà êîòîðîì ïåðâîíà÷àëüíî áûëà ðåàëèçîâàíà Ìàêñèìà. Îäíàêî â äèàëåêòå îòñóòñòâóþò íåêîòîðûå óñòàðåâøèå îñîáåííîñòè Ìàêëèñïà è ñîäåðæàòñÿ áîëåå íîâûå ñèñòåìíûå èäåè, çàèìñòâîâàííûå â òî âðåìÿ â MIT Ëèñï-ìàøèí äëÿ Çåòàëèñïà.
Íîâûé äèàëåêò áûë ðåàëèçîâàí â óíèâåðñèòåòå â Áåðêëè íà ÝÂÌ VAX 780/11 íà ÿçûêå Ñè ïîä óïðàâëåíèåì ñèñòåìû UNIX. Ôðàíñ Ëèñï äîâîëüíî øèðîêî èñïîëüçóåòñÿ êàê ïîä óïðàâëåíèåì UNIX, òàê è ïîä óïðàâëåíèåì VAX/VMS è â íàñòîÿùåå âðåìÿ ÿâëÿåòñÿ íàèáîëåå ÷àñòî èñïîëüçóåìîé âåðñèåé Ëèñïà äëÿ ñèñòåì ðàçäåëåíèÿ âðåìåíè. Êðîìå òîãî, îí øèðîêî èñïîëüçóåòñÿ è íà 32-áèòîâûõ ìèêðî-ÝÂÌ è ðàáî÷èõ ñòàíöèÿõ, ðàáîòàþùèõ ïîä óïðàâëåíèåì UNIX.
Áëàãîäàðÿ ñâîåé õîðîøåé ïåðåíîñèìîñòè Ôðàíñ Ëèñï ïîëó÷èë ðàñïðîñòðàíåíèå âî ìíîãèõ óíèâåðñèòåòàõ è èññëåäîâàòåëüñêèõ ó÷ðåæäåíèÿõ. Ñîïðîâîæäåíèå ñèñòåìû òàêæå ðàçîøëîñü â ðàçëè÷íûõ èñïðàâëåíèÿõ ñèñòåìíûõ îøèáîê, ðåàëèçàöèÿõ íàèáîëåå ýôôåêòèâíûõ àëãîðèòìîâ, à òàêæå â ðàñøèðåíèÿõ ÿçûêà.
Çåòàëèñï Ëèñï-ìàøèí.
Çåòàëèñï òàêæå îïèðàåòñÿ íà Ìàêëèñï. Îí ñîçäàí â 70-å ãîäû â MIT â ðàìêàõ ïðîåêòà Ëèñï-ìàøèíû, ôèíàíñèðîâàííîãî îáîðîííûì àãåíòñòâîì. Ñ ñàìîãî íà÷àëà åãî öåëüþ áûëî èçãîòîâëåíèå êîììåð÷åñêîãî ïðîäóêòà.  1979 ãîäó â ñâÿçè ñ ïðîåêòîì ðîäèëèñü äâà ïðåäïðèÿòèÿ èçãîòàâëèâàþùèå Ëèñï-ìàøèíû: Symbolic Inc. è Lisp Machine Inc. (LMI). Ïîñëå ýòîãî â 80-å ãîäû ðàáîòà ïî ðàçâèòèþ Çåòà Ëèñïà ïðîäîëæàëàñü â íèõ íåçàâèñèìî äðóã îò äðóãà íà êîììåð÷åñêîé îñíîâå.  êàêîé-òî ìåðå ñèñòåìû îòëè÷àþòñÿ äðóã îò äðóãà, íî â ÷àñòè Çåòà Ëèñïà ìàøèíû ïî÷òè ñîâìåñòèìû.[2]
Çåòà Ëèñï ñîäåðæèò ñëåäóþùèå ðàçâèòûå ìåõàíèçìû è ÷åðòû:
øèðîêèé âûáîð òèïîâ äàííûõ;
âîçìîæíîñòü îáúåêòíî-îðèåíòèðîâàííîãî ïðîãðàììèðîâàíèÿ â ñèñòåìå Flavor ;
ñîâðåìåííûå óïðàâëÿþùèå ñòðóêòóðû, äèíàìè÷åñêèå ìåõàíèçìû ïåðåäà÷è óïðàâëåíèÿ ñîïðîãðàììû è ïðîöåññû;
ãèáêèé ìåõàíèçì êëþ÷åâûõ ñëîâ â ëÿìáäà-ñïèñêå è ìíîãîçíà÷íûå ôóíêöèè;
ââîä è âûâîä îñíîâûâàþùèéñÿ íà ïîòîêàõ;
ïðîñòðàíñòâà èìåí;
óæå ãîòîâûå ôóíêöèè, â òîì ÷èñëå äëÿ ñîðòèðîâêè, ðàáîòû ñ ëèíåéíûìè óïðàâëåíèÿìè è ìàòðè÷íûå âû÷èñëåíèÿ.
Âûáîð èñïîëüçóåìûõ â ñðåäå Çåòàëèñïà èíñòðóìåíòîâ è ÿçûêîâ ïðîãðàììèðîâàíèÿ çàâèñèò îò ïîñòàâùèêà, ïðè÷åì ïðåäëàãàåìûé íàáîð ñðåäñòâ âñå âðåìÿ ðàñøèðÿåòñÿ. Ñðåäè äðóãèõ ÿçûêîâ ïðåäëàãàþòñÿ Ôîðòðàí, Ïàñêàëü, Àäà è Ïðîëîã. Äëÿ ýòèõ ÿçûêîâ â ñðåäå Çåòàëèñïà ñóùåñòâóþò îñîáåííî ðàçâèòûå ïðîãðàììíûå îêðóæåíèÿ, è ðàçðàáîòàííûå â íèõ ïðîãðàììû ìîæíî âûïîëíÿòü âìåñòå ñ ïðîãðàììàìè íà Ëèñïå.
Ãîòîâûå èíñòðóìåíòû è ïðèêëàäíûå ðàçðàáîòêè â áîëüøîì êîëè÷åñòâå èìåþòñÿ äëÿ ðàáîòû ñ ÝÑ, ñ åñòåñòâåííûì ÿçûêîì è ðå÷üþ, ñ ðåëÿöèîííûìè áàçàìè äàííûõ, ìàøèííîé ãðàôèêè è ìàøèííîãî ïðîåêòèðîâàíèÿ.[2]
Êîììîí Ëèñï.
Ýòîò äèàëåêò îòëè÷àåòñÿ íàèáîëåå øèðîêèì ïðåäñòàâëåíèåì ðàçëè÷íûõ ñòðóêòóð äàííûõ è âêëþ÷àåò îêîëî 800 âñòðîåííûõ ôóíêöèé.  ýòîì äèàëåêòå îáåñïå÷èâàþòñÿ ñðåäñòâà îáðàáîòêè îñíîâíûõ êëàññîâ ÷èñëîâîé èíôîðìàöèè: öåëûõ, âåùåñòâåííûõ è êîìïëåêñíûõ. Ñèìâîëüíûå äàííûå (ëèòåðû, ëèòåðàëüíûå àòîìû, ñòðîêè) â Êîììîí Ëèñïå ñîîòâåòñòâóþò îñíîâíûì âîçìîæíîñòÿì äðóãèõ Ëèñï-ñèñòåì. Äîïîëíèòåëüíî èìåþòñÿ ñðåäñòâà îáðàáîòêè íåïå÷àòíûõ ëèòåð â ñèìâîëüíûõ èìåíàõ.
Îäíèì èç ñóùåñòâåííûõ ïðåèìóùåñòâ äèàëåêòà Êîììîí Ëèñï ÿâëÿåòñÿ íàëè÷èå ñðåäñòâ îáðàáîòêè ìàññèâîâ è ñòðóêòóð, ïî ñâîèì âîçìîæíîñòÿì íå óñòóïàþùèõ ñîîòâåòñòâóþùèì ñðåäñòâàì òðàäèöèîííûõ ÿçûêîâ ïðîãðàììèðîâàíèÿ (Ôîðòðàí, Ïàñêàëü). Ìàññèâû â Êîììîí Ëèñïå ìîãóò èìåòü ëþáîå íåîòðèöàòåëüíîå ÷èñëî èçìåðåíèé è èíäåêñèðóþòñÿ ïîñëåäîâàòåëüíîñòüþ öåëûõ ÷èñåë. Òèï êîìïîíåíòîâ ìàññèâà ìîæåò áûòü ïðîèçâîëüíûì. Âûäåëÿåòñÿ ïîäêëàññ âåêòîðîâ - îäíîìåðíûõ ìàññèâîâ, ñðåäè êîòîðûõ îòäåëüíî ðàññìàòðèâàþòñÿ ñòðîêè è áèòîâûå ìàññèâû.
Ñòðóêòóðû Êîììîí Ëèñïà ÿâëÿþòñÿ òèïîì ìíîãîêîìïîíåíòíûõ çàïèñåé, îïðåäåëÿåìûõ ïîëüçîâàòåëåì è èìåþùèõ èìåíîâàííûå êîìïîíåíòû. Âñòðîåííîå ìàêðîîïðåäåëåíèå DEFSTRUCT èñïîëüçóåòñÿ äëÿ îïðåäåëåíèÿ ñòðóêòóð íîâûõ òèïîâ. Äëÿ ñîçäàíèÿ äàííûõ íîâîãî òèïà â âèäå ñòðóêòóðû ïðåäóñìîòðåíû ñðåäñòâà àâòîìàòè÷åñêîé ãåíåðàöèè íàáîðà ôóíêöèé, îáåñïå÷èâàþùèõ ñðåäñòâà ìàíèïóëèðîâàíèÿ îáúåêòàìè ýòîãî êëàññà.[1]
Óäîáíûì ñðåäñòâîì êîíòðîëÿ äîñòóïà ê ðàçëè÷íûì ïåðåìåííûì è ôóíêöèÿì Ëèñï-ïðîãðàìì â Êîììîí-Ëèñïå ÿâëÿþòñÿ ïàêåòû. Ïàêåò - ìíîæåñòâî èìåí îáúåêòîâ, îïðåäåëåííûõ è äîñòóïíûõ â íåì. Âíóòðè ïàêåòà èìåíà îáúåêòîâ ïîäðàçäåëÿþòñÿ íà âíóòðåííèå è âíåøíèå. Ïåðâûå ïðåäíàçíà÷åíû äëÿ èñïîëüçîâàíèÿ òîëüêî âíóòðè äàííîãî ïàêåòà, à âòîðûå - äëÿ îáåñïå÷åíèÿ ñâÿçè ñ äðóãèìè ïàêåòàìè. Ëèñï-èíòåðïðåòàòîð ïðåäñòàâëÿåò øèðîêèé ñïåêòð ñðåäñòâ ìàíèïóëèðîâàíèÿ ñ ïàêåòàìè. Êàê ïðàâèëî, Ëèñï-ñèñòåìà èìååò â ñâîåì ñîñòàâå ÷åòûðå ñòàíäàðòíûõ ïàêåòà: lisp (ñîäåðæàùèé ïðèìèòèâû ñèñòåìû), user (óìàë÷èâàåìûé ïàêåò ïðèêëàäíûõ ïðîãðàìì è äàííûõ ïîëüçîâàòåëÿ), keyword (ñîäåðæàùèé êëþ÷åâûå ñëîâà âñåõ âñòðîåííûõ ôóíêöèé è ôóíêöèé, îïðåäåëÿåìûõ ïîëüçîâàòåëåì), system (çàðåçåðâèðîâàííûé äëÿ ñèñòåìíûõ öåëåé).
Çíà÷èòåëüíîé ïåðåðàáîòêå è ðàñøèðåíèþ â Êîììîí Ëèñïå ïîäâåðãëèñü ñðåäñòâà ââîäà-âûâîäà è ïåðåäà÷è èíôîðìàöèè. Äëÿ ýôôåêòèâíîé îðãàíèçàöèè ðàçëè÷íûõ îáìåíîâ ñ âíåøíåé ñðåäîé ââåäåíà êîíöåïöèÿ ïîòîêîâ, ïîçâîëÿþùèõ îñóùåñòâëÿòü îäíî- è (èëè) äâóõñòîðîííþþ ïåðåäà÷ó èíôîðìàöèè. Äëÿ ïîòîêîâ ïðåäóñìîòðåí íàáîð áàçîâûõ ôóíêöèé.  äèàëåêòå ðàçëè÷àþò ñèìâîëüíûå è äâîè÷íûå ïîòîêè.  ïåðâîì ñëó÷àå ïåðåäà÷à îñóùåñòâëÿåòñÿ ïî áàéòàì, à âî âòîðîì - öåëûìè ÷èñëàìè. Êðîìå ñòàíäàðòíûõ ïîòîêîâ ïîëüçîâàòåëü èìååò âîçìîæíîñòü ñîçäàâàòü è èñïîëüçîâàòü ñîáñòâåííûå ïîòîêè.[2]
 äîïîëíåíèå ê óêàçàííûì òèïàì äàííûõ Êîììîí Ëèñï èìååò ðÿä ñïåöèôè÷åñêèõ êëàññîâ îáúåêòîâ: õýø-òàáëèöû, îáåñïå÷èâàþùèå ýôôåêòèâíûé ñïîñîá äîñòóïà ê äàííûì ïî êëþ÷ó; READ-òàáëèöû, îáåñïå÷èâàþùèå óïðàâëåíèå îáðàáîòêîé èíôîðìàöèè ïîñòóïàþùåé èç âõîäíîãî ïîòîêà Ëèñï-ñèñòåìû, è íåêîòîðûå äðóãèå. Òàêîå ìíîæåñòâî èìåþùèõñÿ â äèàëåêòå ðàçëè÷íûõ òèïîâ äàííûõ, ñ îäíîé ñòîðîíû, ðàçâåèâàåò ñóùåñòâóþùåå îøèáî÷íîå ïðåäñòàâëåíèå î ÿçûêå Ëèñï êàê î ñðåäñòâå îáðàáîòêè òîëüêî ñèìâîëüíîé èíôîðìàöèè, à ñ äðóãîé - íàëè÷èå ìîùíûõ ñðåäñòâ ìàíèïóëèðîâàíèÿ òèïàìè äàííûõ ñóùåñòâåííî óñëîæíÿåò åãî.[7]
Ýòîò äèàëåêò îñòàâëåí îòêðûò: ïðèíöèïèàëüíûì ÿâëÿåòñÿ òî, ÷òî îñòàëàñü âîçìîæíîñòü â áóäóùåì, êîãäà ïîäîéäåò âðåìÿ è áóäåò äîñòèãíóòî ñîãëàñèå, äîáàâèòü íîâûå ñðåäñòâà è ìåòîäû. Ýòà èäåÿ êàê ðàç ñîîòâåòñòâóåò äóõó Ëèñïà.
Êîììîí Ëèñï íå ÿâëÿåòñÿ ãîòîâîé ïðîãðàììíîé ñèñòåìîé â òîì æå ñìûñëå, ÷òî è Èíòåðëèñï, ïîñêîëüêó âîïðîñû ñðåäû â îñíîâíîì îñòàâëåíû îòêðûòûìè.  ñòàíäàðòå íå îïðåäåëåíî, êàêèì äîëæåí áûòü ðåäàêòîð èëè äðóãèå âñïîìîãàòåëüíûå ñðåäñòâà. Ñêàçàíî ëèøü â ñàìîì îáùåì âèäå, êàêèì îáðàçîì îíè âûçûâàþòñÿ. Äëÿ òîãî ÷òîáû îáåñïå÷èòü áûñòðîå ðàçâèòèå, ñðåäà è èíñòðóìåíòàëüíûå ñðåäñòâà åùå íå çàòðîíóòû ñòàíäàðòèçàöèåé, è ïîýòîìó åñòü âîçìîæíîñòü ñîçäàâàòü ðàçëè÷íûå ñðåäû äëÿ ðàçëè÷íûõ öåëåé. Êîììîí Ëèñï íå îïðåäåëÿåò òàêæå è èíòåðôåéñ ïîëüçîâàòåëÿ.
 Êîììîí Ëèñï íà ñîâðåìåííîì ýòàïå íå âêëþ÷åíû äàæå ñðåäñòâà îáúåêòíîãî ïðîãðàììèðîâàíèÿ, õîòÿ è îïðåäåëåíû íåîáõîäèìûå äëÿ ýòîãî áàçîâûå ìåõàíèçìû (çàìûêàíèå è äð.). Òàêèì îáðàçîì, îáúåêòû ìîæíî ðåàëèçîâàòü íà Ëèñïå. Íî óæå âåäåòñÿ ðàáîòà ïî ñòàíäàðòèçàöèè ñðåäñòâ è ôîðì îáúåêòíîãî ïðîãðàììèðîâàíèÿ.
 Êîììîí Ëèñïå ìíîãî âíèìàíèÿ óäåëåíî ïðàêòè÷åñêèì òðåáîâàíèÿì, è, âåðîÿòíî, ïîýòîìó íå âñå åãî ÷åðòû ýñòåòè÷íû è ÷èñòû. Íåñîìíåííî, ÷òî è äðóãèå Ëèñï-ñèñòåìû áóäóò èñïîëüçîâàòüñÿ â äàëüíåéøåì, è èõ òàêæå íåîáõîäèìî ðàçâèâàòü.
Êîììîí Ëèñï ïðåäíàçíà÷åí íå òîëüêî äëÿ ðàáîòû ñî ñïèñêàìè èëè äëÿ ñèìâîëüíîé îáðàáîòêè, îí ÿâëÿåòñÿ óíèâåðñàëüíûì ÿçûêîì ïðîãðàììèðîâàíèÿ, âêëþ÷àþùèì â ñåáÿ îñîáåííî õîðîøèå ñðåäñòâà äëÿ ÷èñëåííûõ âû÷èñëåíèé, óïðàâëåíèÿ äàííûìè è ñâÿçè. Íà Êîììîí Ëèñïå ìîæíî ñ îäèíàêîâûì óñïåõîì ïèñàòü ïðîãðàììû â òðàäèöèîííûõ îïåðàòîðíîì, ïðîöåäóðíîì, ôðàçîâîì ñòèëå, à òàêæå è â ñâîéñòâåííûõ Ëèñïó ñòèëÿõ.  ÿçûêå ñîäåðæàòñÿ ïðåäïîñûëêè äëÿ èñïîëüçîâàíèÿ ðàçëè÷íûõ ñïîñîáîâ è ñòèëåé ïðîãðàììèðîâàíèÿ, òàêèõ êàê îïåðàòîðíîå, ôóíêöèîíàëüíîå, ìàêðîïðîãðàììèðîâàíèå, ïðîãðàììèðîâàíèå, óïðàâëÿåìîå äàííûìè, è ïðîäóêöèîííîå ïðîãðàììèðîâàíèå, à òàêæå ñðåäñòâà, íåîáõîäèìûå äëÿ ëîãè÷åñêîãî è îáúåêòíîãî ïðîãðàììèðîâàíèÿ è ðåàëèçàöèè äðóãèõ ñðåäñòâ áîëåå âûñîêîãî óðîâíÿ.[1]
Ìîæíî ñìåëî ñêàçàòü, ÷òî Êîììîí Ëèñï ñîäåðæèò ïî÷òè âñå, ÷òî íà ñåãîäíÿøíèé äåíü ìîãóò äàòü äðóãèå èçâåñòíûå ÿçûêè ïðîãðàììèðîâàíèÿ, è, êðîìå òîãî, îí ïðåäóñìàòðèâàåò ñðåäñòâà äëÿ ðàñøèðåíèÿ ÿçûêà.
Ñ íàñòóïëåíèåì 70-õ ãîäîâ áîëüøèå ñèñòåìû ÈÈ è àëãåáðàè÷åñêèå ñèñòåìû íàòîëêíóëèñü íà îãðàíè÷åíèÿ ïàìÿòè è ýôôåêòèâíîñòè, ñóùåñòâóþùèå è íà áîëüøèõ óíèâåðñàëüíûõ ÝÂÌ. Âîñåìíàäöàòèáèòîâîå ïîëå àäðåñà øèðîêî èñïîëüçóåìûõ ìàøèí PDP-10/20 ñòàëî ñåðüåçíûì îãðàíè÷åíèåì, ê òîìó æå èññëåäîâàòåëè ÈÈ íå ìîãëè ðàáîòàòü â ñèñòåìå ðàçäåëåíèÿ âðåìåíè â äíåâíîå âðåìÿ èç-çà áîëüøîé íàãðóçêè íà ìàøèíû. Èç ýòèõ ïðîáëåì ðîäèëàñü èäåÿ îá îòäåëüíîé Ëèñï-ìàøèíå è î ìàíåâðå, êîòîðûé èçâåñòåí ïîä íàçâàíèåì «áåãñòâî èç ðàçäåëåíèÿ âðåìåíè». Íà ýòî íàïðàâëåíèå ïîâëèÿëî òàêæå è áûñòðîå ðàçâèòèå ìèêðî-ýëåêòðîííèêè â 70-õ ãîäàõ, ñäåëàâøåå âîçìîæíûì ïðîåêòèðîâàíèå è ïðîèçâîäñòâî îðèåíòèðîâàííûõ íà ÿçûê ïðîöåññîðîâ è ïåðñîíàëüíûõ ÝÂÌ.
Ïåðâûé îò÷åò, ñâÿçàííûé ñ Ëèñï-ìàøèíàìè, ïîÿâèëñÿ â ñåðèè èçäàíèé ëàáîðàòîðèè ÈÈ MIT â 1974 ãîäó, à èíòåãðàëüíàÿ ñõåìà LSI áûëà èçãîòîâëåíà â 1978 ãîäó. Ïåðâûå ïðîìûøëåííûå Ëèñï-ìàøèíû ïîÿâèëèñü íà ðûíêå íåñêîëüêî ëåò ñïóñòÿ.
×àñòü èäåé, êàñàþùèõñÿ Ëèñï-ìàøèí, çàðîäèëàñü â Èññëåäîâàòåëüñêîì öåíòðå Palo Alto ôèðìû Xerox è áûëà ðåçóëüòàòîì ïèîíåðñêèõ ðàçðàáîòîê â îáëàñòè îáðàáîòêè äàííûõ íà ïåðñîíàëüíûõ ÝÂÌ è ýêðàííî-îðèåíòèðîâàííûõ ÷åëîâåêî-ìàøèííûõ èíòåðôåéñîâ. Ýòî áûëè îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä, à òàêæå ñïåöèàëüíûå èíòåãðèðîâàííûå â ñðåäó ñðåäñòâà è ìåòîäû ïðîãðàììèðîâàíèÿ, ñîçäàííûå ôèðìàìè Xerox è BBN â õîäå ðàáîòû íàä Èíòåðëèñïîì.[2]
Öåëüþ ïðîåêòèðîâàíèÿ Ëèñï-ìàøèí áûëà ðàçðàáîòêà èõ â âèäå ïåðñîíàëüíûõ ÝÂÌ, êîòîðûå ìîæíî áûëî áû èñïîëüçîâàòü íå òîëüêî äëÿ ïðîôåññèîíàëüíûõ èññëåäîâàíèé â îáëàñòè ÈÈ, íî è äëÿ ðàçëè÷íûõ ïðîìûøëåííûõ è êîììåð÷åñêèõ ïðèëîæåíèé. Ðàçðàáîòêå è èõ ðàñïðîñòðàíåíèþ ïîìåøàëà íåîáõîäèìîñòü ïåðåíîñà ïðîãðàììíîãî îáåñïå÷åíèÿ áîëüøîãî îáúåìà èç äîðîãîé ñðåäû áîëüøèõ ìàøèí.
Ïî ïðîèçâîäèòåëüíîñòè îáîðóäîâàíèÿ Ëèñï-ìàøèíû î÷åíü ýôôåêòèâíû, êðîìå òîãî, îíè èìåþò áîëüøîé îáúåì îñíîâíîé ïàìÿòè. Èõ àïïàðàòóðà ñïðîåêòèðîâàíà ñïåöèàëüíî äëÿ âû÷èñëåíèé íà Ëèñïå. Ñ òî÷êè çðåíèÿ ýôôåêòèâíîñòè îäíîé èç íàèáîëåå âàæíûõ îñîáåííîñòåé ÿâëÿåòñÿ ïðîâåðêà òèïîâ íà óðîâíå àïïàðàòóðû, èñïîëüçóåìàÿ â ñèñòåìàõ, ïðîèñõîäÿùèõ èç MIT.
Îäíàêî íàèáîëåå ñóùåñòâåííûì ïðåèìóùåñòâîì òàêîé àïïàðàòóðû ÿâëÿåòñÿ âîçìîæíîñòü èñïîëüçîâàíèÿ íà Ëèñï-ìàøèíå èíòåãðèðîâàííîé ïðîãðàììíîé ñðåäû.  íåé íàðÿäó ñ ñàìèì Ëèñïîì ñîäåðæàòñÿ ðàçíîîáðàçíûå ïðîãðàììíûå ñðåäñòâà. Ïðîãðàììíîå îáåñïå÷åíèå èñïîëüçóåò òûñÿ÷è ôóíêöèé. Âî ìíîãèõ ñèñòåìàõ ïîìèìî Ëèñïà äîñòóïíû è äðóãèå ÿçûêè (Ïàñêàëü, Àäà, Ñè, Ïðîëîã è äð.). Òàê, â ñèñòåìó ìîæíî äîáàâèòü ðåàëèçîâàííûå ðàíåå íà äðóãèõ ÿçûêàõ ÷àñòè èëè ñäåëàòü òðàäèöèîííîå ïðîãðàììèðîâàíèå áîëåå ýôôåêòèâíûì ñ ïîìîùüþ ðàçíîîáðàçíåéøèõ ñðåäñòâ, èìåþùèõñÿ íà Ëèñï-ìàøèíå.
Ñîçäàíèå Ëèñï-ìàøèí äàëî íîâûé òîë÷îê ðàçâèòèþ Ëèñïà. Êðîìå âûñîêîãî áûñòðîäåéñòâèÿ (ïåðâàÿ æå Ëèñï-ìàøèíà ðàáîòàëà â íåñêîëüêî ðàç áûñòðåå, ÷åì Ìàêëèñï) è îãðîìíîé âèðòóàëüíîé ñïèñêîâîé ïàìÿòè, äîñòîèíñòâîì Ëèñï-ìàøèí ÿâëÿåòñÿ è òî, ÷òî äëÿ íèõ ýòî åäèíñòâåííûé ÿçûê ïðîãðàììèðîâàíèÿ. Íà íåì íàïèñàíû âñå ñèñòåìíûå ïðîãðàììû, íà÷èíàÿ ñ ÎÑ è êîí÷àÿ âñåâîçìîæíûìè ïðåïðîöåññîðàìè, è ïðîãðàììû ïîëüçîâàòåëÿ. Òàêàÿ îäíîðîäíîñòü çíà÷èòåëüíî óïðîùàåò êàê ðàçðàáîòêó ñàìèõ ñèñòåìíûõ êîìïîíåíòîâ, òàê è âçàèìîäåéñòâèå ñ íèìè. Ïî ñóòè äåëà, íà Ëèñï-ìàøèíàõ ñòèðàåòñÿ ãðàíü ìåæäó ñèñòåìíûì è ïðèêëàäíûì ïðîãðàììíûì îáåñïå÷åíèåì.  íàñòîÿùåå âðåìÿ Ëèñï-ìàøèíû âûïóñêàþòñÿ ðÿäîì ôèðì ÑØÀ, ßïîíèè è Çàïàäíîé Åâðîïû.  áûâøèõ ñîöèàëèñòè÷åñêèõ ñòðàíàõ òàêæå èìåþòñÿ ïîëîæèòåëüíûå ïðèìåðû ðàçðàáîòêè òàêèõ ìàøèí.[7]
Ñîâðåìåííûå äèàëåêòû ÿçûêà Ëèñï ìîæíî ðàññìàòðèâàòü êàê ìîùíûå èíòåðàêòèâíûå ñèñòåìû ïðîãðàììèðîâàíèÿ. Ýòî îáúÿñíÿåòñÿ äâóìÿ ïðè÷èíàìè. Âî-ïåðâûõ, ñàì ÿçûê Ëèñï ïðåòåðïåâàåò ñåðüåçíûå èçìåíåíèÿ - ðàçâèâàþòñÿ ñðåäñòâà ÿçûêà, ïðåäíàçíà÷åííûå äëÿ îáðàáîòêè íåòðàäèöèîííûõ äëÿ Ëèñïà òèïîâ äàííûõ: ìàññèâîâ, âåêòîðîâ, ìàòðèö; ïîÿâëÿþòñÿ íåêîòîðûå ñðåäñòâà óïðàâëåíèÿ ïàìÿòüþ (ïàêåòû), îòñóòñòâóþùèå â Ëèñïå. Ñåðüåçíûå èçìåíåíèÿ ïðåòåðïåâàþò è óïðàâëÿþùèå ñòðóêòóðû. Ïîÿâèëèñü íåñâîéñòâåííûå ïðèðîäå ÿçûêà Ëèñï ôóíêöèè, çàèìñòâîâàííûå èç Ôîðòðàíà, Àëãîëà, Ïàñêàëÿ, Ñè: Do, Loop, Goto , Case è ïðî÷èå, ïîçâîëÿþùèå ïîëüçîâàòåëþ, íåçíàêîìîìó ñ ïðèíöèïàìè ôóíêöèîíàëüíûõ ÿçûêîâ, ëåãêî ïåðåõîäèòü íà Ëèñï. Êà÷åñòâî ïðîãðàìì ñíèæàåòñÿ, çàòî âîçðàñòàåò ïîïóëÿðíîñòü ÿçûêà. Âî-âòîðûõ, åñëè íà ïåðâîì ýòàïå ðàçâèòèÿ Ëèñï-ñèñòåìàì áûëà ïðèñóùà íåáîëüøàÿ ñêîðîñòü îáðàáîòêè äàííûõ è ñåðüåçíûå îãðàíè÷åíèÿ íà åìêîñòü èñïîëüçóåìîé îïåðàòèâíîé ïàìÿòè, òî ñîâðåìåííûå Ëèñï-ñèñòåìû óæå ìîãóò ñîïåðíè÷àòü ïî ýòèì ïàðàìåòðàì ñ òàêèìè ÿçûêàìè, êàê Ñè, Ïàñêàëü è äð. Èñïîëüçîâàíèå Ëèñï-ìàøèí âîîáùå ïðàêòè÷åñêè ñíèìàåò îãðàíè÷åíèÿ ïàìÿòè è áûñòðîäåéñòâèÿ.
Äëÿ ÏÝÂÌ îãðàíè÷åíèÿ ïî ïàìÿòè è áûñòðîäåéñòâèþ âñå åùå îñòàþòñÿ ñóùåñòâåííûìè. Îäíàêî ïîëîæåíèå íå áåçíàäåæíî. Ðàçâèòèå Ëèñï-ñèñòåì äëÿ ÏÝÂÌ èäåò ñåãîäíÿ ïî òðåì ðàçëè÷íûì íàïðàâëåíèÿì. Ïåðâîå ñâÿçàíî ñ óâåëè÷åíèåì åìêîñòè ïàìÿòè, êîòîðàÿ ìîæåò èñïîëüçîâàòüñÿ Ëèñï-ñèñòåìîé. Ñ ýòîé öåëüþ ðÿä êîìïàíèé ðàçðàáîòàë âåðñèè ÿçûêà Golden Common Lisp, èñïîëüçóþùèå ðàñøèðåíèÿ îïåðàòèâíîé ïàìÿòè è âèðòóàëüíóþ ïàìÿòü. Âòîðîå íàïðàâëåíèå ñâÿçàííî ñ ïîâûøåíèåì áûñòðîäåéñòâèÿ Ëèñï-ñèñòåì. Òðåòüå íàïðàâëåíèå ñîñòîèò â ðàçðàáîòêå ýôôåêòèâíûõ êîìïèëÿòîðîâ ïðîãðàìì ñ ÿçûêà Ëèñï â òðàäèöèîííûå ÿçûêè (÷àùå âñåãî â ÿçûê Ñè).
Ïîëîæèòåëüíûì íîâîââåäåíèåì â ñîâðåìåííûå äèàëåêòû ÿçûêà ìîæíî ñ÷èòàòü ïñåâäîàññåìáëåðíûå êîìàíäû, êîòîðûå ïîçâîëÿþò îïåðèðîâàòü îñíîâíûìè ðåãèñòðàìè ìàøèíû è îðãàíèçîâûâàòü ïðåðûâàíèÿ íà óðîâíå DOS è BIOS. Êðîìå òîãî, ìíîãèå Ëèñï-ñèñòåìû èìåþò õîðîøèå èíòåðôåéñû ñ äðóãèìè ÿçûêàìè (Ôîðòðàí, Ïàñêàëü, Àññåìáëåð, Ñè), ÷òî ïîçâîëÿåò ïîâûñèòü ýôôåêòèâíîñòü ïðèêëàäíûõ Ëèñï-ïðîãðàìì.
Åñëè æå ãîâîðèòü î ãëîáàëüíîé òåíäåíöèè ðàçâèòèÿ ñàìîé èäåîëîãèè ÿçûêà Ëèñï, òî î÷åâèäíî, ÷òî îíà ñâÿçàíà ñ ñîçäàíèåì îáúåêòíî-îðèåíòèðîâàííûõ âåðñèé ÿçûêà êàê íàèáîëåå ïðèãîäíûõ äëÿ ðåàëèçàöèè ñèñòåì ÈÈ.
Àíàëèç ñóùåñòâóþùèõ ÿçûêîâ îáðàáîòêè ñèìâîëüíîé èíôîðìàöèè, èñïîëüçîâàíèå èõ äëÿ ðåàëèçàöèè èíòåëëåêòóàëüíûõ ñèñòåì, à òàêæå ñðàâíåíèå òåíäåíöèé ðàçâèòèÿ ýòèõ ÿçûêîâ ïîçâîëÿþò ñäåëàòü íåñêîëüêî çàìå÷àíèé.
Ìîæíî ïðåäïîëîæèòü, ÷òî Ëèñï åùå çíà÷èòåëüíîå âðåìÿ áóäåò îñòàâàòüñÿ îñíîâíûì ÿçûêîì äëÿ ðåàëèçàöèè èíòåëëåêòóàëüíûõ ñèñòåì.
Óæå â áëèæàéøåå âðåìÿ ìîæíî îæèäàòü ïîÿâëåíèÿ ÿçûêîâ, âîáðàâøèõ â ñåáÿ ëó÷øèå ÷åðòû Ëèñïà è äð. ÿçûêîâ ïðîãðàììèðîâàíèÿ ÈÈ.
Íàáëþäàåòñÿ ÿâíàÿ òåíäåíöèÿ ê ñîçäàíèþ ïàðàëëåëüíûõ âåðñèé ÿçûêîâ äëÿ ïðîãðàììèðîâàíèÿ çàäà÷ ÈÈ. ßçûêè òèïà Ëèñï, Ïðîëîã, Ðåôàë (à òàêæå âñåâîçìîæíûå ìîäèôèêàöèè è «ñìåñè» ýòèõ è/èëè äðóãèõ ÿçûêîâ ñèìâîëüíîé îáðàáîòêè) áóäóò âñå áîëüøå óñòóïàòü ñâîè ïîçèöèè íà óðîâíå èíæåíåðîâ ïî çíàíèÿì ñïåöèàëüíûì ÿçûêàì ïðåäñòàâëåíèÿ çíàíèé, îñòàâàÿñü èíñòðóìåíòàðèåì ñèñòåìíûõ ïðîãðàììèñòîâ.
Íà îñíîâàíèè àíàëèçà ñðàâíèòåëüíûõ õàðàêòåðèñòèê äëÿ èçó÷åíèÿ ÿçûêà Ëèñï â êóðñå ëàáîðàòîðíûõ ðàáîò ïî ïðåäìåòó «Ñèñòåìû èñêóñòâåííîãî èíòåëëåêòà» áûë âûáðàí äèàëåêò ìóËèñï. Âûáîð ýòîãî äèàëåêòà îñíîâàí íà ñëåäóþùèõ åãî îñîáåííîñòÿõ:
Ïðîñòîòà â èçó÷åíèè (áëàãîäàðÿ íåáîëüøîìó íàáîðó áàçîâûõ ôóíêöèé).
Áëèçîñòü ê ñòàíäàðòó ÿçûêà.
Âîçìîæíîñòü ïîïîëíåíèÿ áàçîâîãî íàáîðà ôóíêöèé.
Äîïîëíèòåëüíûå áèáëèîòåêè Ëèñï-ôóíêöèé, ðàñøèðÿþùèå áàçîâûé íàáîð ôóíêöèé, èìåþùèìèñÿ â äèàëåêòàõ Êîììîí Ëèñï è Èíòåðëèñï, à òàêæå áèáëèîòåêàìè, ïîçâîëÿþùèìè âûïîëíÿòü ìàíèïóëèðîâàíèå îêíàìè íà ýêðàíå äèñïëåÿ è ðàáîòàòü ñ óñòðîéñòâîì «ìûøü».
Äîïîëíèòåëüíîå ïðîãðàììíîå îáåñïå÷åíèå ê èíòåðïðåòàòîðó: èíòåðàêòèâíûé ðåäàêòîð òåêñòîâ è ïðîñòàÿ îáó÷àþùàÿ ñèñòåìà.
Ðåôåðàò.
Îá’ºì äèïëîìíî¿ ðîáîò³ ________________ñòîð.
ʳëüê³ñòü ³ëþñòðàö³é _______________________ 4
³êîðèñòàíî ë³òåðàòóðíèõ äæåðåë ___________ 12
Êëþ÷îâ³ ñëîâà: øòó÷íèé ³íòåëåêò, ³íòåãðîâàíå ñåðåäîâèùå, îïåðàòîð, ôóíêö³ÿ, ôóíêö³îíàë, ìàêðîñ, çàìèêàííÿ, ðåêóðñ³ÿ.
Ìåòîþ ö³º¿ äèïëîìíî³ ðîáîòè º îçíàºìëåííÿ ç îñíîâàìè îãðàìóâàííÿ íà ˳ñï³, â³â÷åííÿ îñîáëèâîñòåé ñåðåäîâèùà MuLisp òà dlisp, ðîçðîáêà êîìïëåêñó ëàáîðàòîðíèõ ðîá³ò ç äèñöèïë³íè «Ñèñòåìè øòó÷íîãî ³íòåëåêòó» äëÿ ñòóäåíò³â ñïåö³àëüíîñò³ «Êîìï’þòåðí³ òà ³íòåëåêòóàëüí³ ñèñòåìè òà ìåðåæ³», ðîçøèðåííÿ á³áë³îòåêè ôóíêö³é ³íòåãðîâàííîãî ñåðåäîâèùà dlisp, ðîçðîáêà çàâäàíü òà êîíòðîëüíûõ ïèòàíü äî ëàáîðàòîðíèõ ðîá³ò.
Ñîäåðæàíèå.
Ââåäåíèå __________________________________________________
1 Ëèòåðàòóðíûé îáçîð _______________________________________
1.1 Êðàòêàÿ èñòîðèÿ ðàçâèòèÿ èñêóññòâåííîãî èíòåëëåêòà ____
1.2 ßçûêè ïðîãðàììèðîâàíèÿ èñêóññòâåííîãî èíòåëëåêòà _____ 1.2.1 Êëàññèôèêàöèÿ ÿçûêîâ è ñòèëåé ïðîãðàììèðîâà-
íèÿ ____________________________________________
1.2.2 Ñðàâíèòåëüíûå õàðàêòåðèñòèêè ÿçûêîâ èñêóñ-
ñòâåííîãî èíòåëëåêòà____________________________
1.2.2.1 ßçûêè îáðàáîòêè ñèìâîëüíîé èíôîð-
ìàöèè ____________________________________
1.2.2.2 ßçûêè ïðîãðàììèðîâàíèÿ èíòåëëåêòóàëü-
íûõ ðåøàòåëåé ____________________________
1.3 Îñîáåííîñòè Ëèñï-ñèñòåì ______________________________ 1.3.1 Äèàëåêòû Ëèñïà ____________________________
1.3.2 Ëèñï-ìàøèíû ______________________________
1.4 Âûâîäû ___________________________________________ 1.5 Ïîñòàíîâêà çàäà÷è _________________________________
2 Òåîðåòè÷åñêàÿ ÷àñòü ______________________________________
2.1 Îñíîâíûå îñîáåííîñòè ÿçûêà Ëèñï ___________________
2.2 Ïîíÿòèÿ ÿçûêà Ëèñï ________________________________ 2.2.1 Àòîìû è ñïèñêè _____________________________ 2.2.2 Âíóòðåííåå ïðåäñòàâëåíèå ñïèñêà _____________ 2.2.3 Íàïèñàíèå ïðîãðàììû íà Ëèñïå _______________ 2.2.4 Îïðåäåëåíèå ôóíêöèé _______________________ 2.2.5 Ðåêóðñèÿ è èòåðàöèÿ _________________________ 2.2.6 Ôóíêöèè èíòåðïðåòàöèè âûðàæåíèé ____________ 2.2.7 Ìàêðîñðåäñòâà _____________________________ 2.2.8 Ôóíêöèè ââîäà è âûâîäà _____________________
2.3 Çíàíèÿ â èñêóññòâåííîì èíòåëëåêòå ___________________ 2.3.1 Òðåáîâàíèÿ ê çíàíèÿì _______________________ 2.3.2 Îñíîâíûå òèïû çíàíèé _______________________
2.3.3 Ìåòîäû ïðåäñòàâëåíèÿ çíàíèé ________________
3 Ïðàêòè÷åñêàÿ ÷àñòü ________________________________________
3.1 Ëàáîðàòîðíàÿ ðàáîòà ¹1 ____________________________
3.2 Ëàáîðàòîðíàÿ ðàáîòà ¹2 ____________________________ 3.3 Ëàáîðàòîðíàÿ ðàáîòà ¹3 ____________________________ 3.4 Ëàáîðàòîðíàÿ ðàáîòà ¹4 ____________________________ 3.5 Ëàáîðàòîðíàÿ ðàáîòà ¹5 ____________________________
3.6 Ëàáîðàòîðíàÿ ðàáîòà ¹6 ____________________________
4 Âîïðîñû èíæåíåðíîé ïñèõîëîãèè, ïðèìåíèòåëüíî ê îòðàáîòêå
ïðîãðàìì __________________________________________________
Çàêëþ÷åíèå ________________________________________________
Ñïèñîê ëèòåðàòóðû __________________________________________
2.1 Îñíîâíûå îñîáåííîñòè ÿçûêà Ëèñï.
Îò äðóãèõ ÿçûêîâ ïðîãðàììèðîâàíèÿ Ëèñï îòëè÷àåòñÿ ñëåäóþùèìè ñâîéñòâàìè:
1. îäèíàêîâàÿ ôîðìà äàííûõ è ïðîãðàìì;
2. õðàíåíèå äàííûõ, íå çàâèñÿùåå îò ìåñòà;
3. àâòîìàòè÷åñêîå è äèíàìè÷åñêîå óïðàâëåíèå ïàìÿòüþ;
4. ôóíêöèîíàëüíàÿ íàïðàâëåííîñòü;
5. Ëèñï - áåñòèïîâûé ÿçûê;
6. èíòåðïðåòèðóþùèé è êîìïèëèðóþùèé ðåæèìû ðàáîòû;
7. ïîøàãîâîå ïðîãðàììèðîâàíèå;
8. åäèíûé ñèñòåìíûé è ïðèêëàäíîé ÿçûê ïðîãðàììèðîâàíèÿ.
Òåïåðü ðàññìîòðèì ýòè ñâîéñòâà áîëåå ïîäðîáíî.
Îäèíàêîâàÿ ôîðìà äàííûõ è ïðîãðàìì.
 Ëèñïå ôîðìû ïðåäñòàâëåíèÿ ïðîãðàììû è îáðàáàòûâàåìûõ åþ äàííûõ îäèíàêîâû. È òî è äðóãîå ïðåäñòàâëÿåòñÿ ñïèñî÷íîé ñòðóêòóðîé, èìåþùåé îäèíàêîâóþ ôîðìó. Òàêèì îáðàçîì ïðîãðàììû ìîãóò îáðàáàòûâàòü è ïðåîáðàçîâûâàòü äðóãèå ïðîãðàììû è äàæå ñàìèõ ñåáÿ.  ïðîöåññå òðàíñëÿöèè ìîæíî ââåäåííîå è ñôîðìèðîâàííîå â ðåçóëüòàòå âû÷èñëåíèé âûðàæåíèå äàííûõ ïðîèíòåðïðåòèðîâàòü â êà÷åñòâå ïðîãðàììû è íåïîñðåäñòâåííî âûïîëíèòü. Ýòî ñâîéñòâî îáëàäàåò íå òîëüêî òåîðåòè÷åñêèì, íî è áîëüøèì ïðàêòè÷åñêèì çíà÷åíèåì.
Óíèâåðñàëüíûé åäèíîîáðàçíûé è ïðîñòîé ëèñïîâñêèé ñèíòàêñèñ ñïèñêà íå çàâèñèò îò ïðèìåíåíèÿ, è ñ åãî ïîìîùüþ ëåãêî îïðåäåëÿòü íîâûå ôîðìû çàïèñè, ïðåäñòàâëåíèÿ è àáñòðàêöèè. Äàæå ñàìà ñòðóêòóðà ÿçûêà ÿâëÿåòñÿ, òàêèì îáðàçîì, ðàñøèðÿåìîé è ìîæåò áûòü çàíîâî îïðåäåëåíà.  òî æå âðåìÿ äîñòàòî÷íî ïðîñòî íàïèñàíèå èíòåðïðåòàòîðîâ, êîìïèëÿòîðîâ, ðåäàêòîðîâ è äðóãèõ ñðåäñòâ. Ê Ëèñïó íåîáõîäèìî ïîäõîäèòü êàê ê ÿçûêó, ñ ïîìîùüþ êîòîðîãî ðåàëèçóþòñÿ ñïåöèàëèçèðîâàííûå ÿçûêè, îðèåíòèðîâàííûå íà ïðèëîæåíèå, è ñîçäàåòñÿ îêðóæåíèå áîëåå âûñîêîãî óðîâíÿ. Ïðèñóùàÿ Ëèñïó ðàñøèðÿåìîñòü íå âñòðå÷àåòñÿ â òðàäèöèîííûõ çàìêíóòûõ ÿçûêàõ ïðîãðàììèðîâàíèÿ.
Õðàíåíèå äàííûõ íå çàâèñÿùåå îò ìåñòà.
Ñïèñêè, ïðåäñòàâëÿþùèå ïðîãðàììû è äàííûå, ñîñòîÿò èç ñïèñî÷íûõ ÿ÷ååê, ðàñïîëîæåíèå è ïîðÿäîê êîòîðûõ â ïàìÿòè íå ñóùåñòâåííû. Ñòðóêòóðà ñïèñêà îïðåäåëÿåòñÿ ëîãè÷åñêè íà îñíîâå èìåí ñèìâîëîâ è óêàçàòåëåé. Äîáàâëåíèå íîâûõ ýëåìåíòîâ â ñïèñîê èëè óäàëåíèå èç ñïèñêà ìîæåò ïðîèçâîäèòüñÿ áåç ïåðåíîñà ñïèñêà â äðóãèå ÿ÷åéêè ïàìÿòè. Ðåçåðâèðîâàíèå î îñâîáîæäåíèå ìîãóò â çàâèñèìîñòè îò ïîòðåáíîñòè îñóùåñòâëÿòüñÿ äèíàìè÷åñêè, ÿ÷åéêà çà ÿ÷åéêîé.
Àâòîìàòè÷åñêîå è äèíàìè÷åñêîå óïðàâëåíèå ïàìÿòüþ.
Ïîëüçîâàòåëü íå äîëæåí çàáîòèòüñÿ îá ó÷åòå ïàìÿòè. Ñèñòåìà ðåçåðâèðóåò è îñâîáîæäàåò ïàìÿòü àâòîìàòè÷åñêè â ñîîòâåòñòâèè ñ ïîòðåáíîñòüþ. Êîãäà ïàìÿòü êîí÷àåòñÿ, çàïóñêàåòñÿ ñïåöèàëüíûé ìóñîðùèê. Ìóñîðùèê ïåðåáèðàåò âñå ÿ÷åéêè è ñîáèðàåò ÿâëÿþùèåñÿ ìóñîðîì ÿ÷åéêè â ñïèñîê ñâîáîäíîé ïàìÿòè äëÿ òîãî, ÷òîáû èõ ìîæíî áûëî èñïîëüçîâàòü çàíîâî. Cðåäà Ëèñïà ïîñòîÿííî ñîäåðæèòñÿ â ïîðÿäêå  ñîâðåìåííûõ Ëèñï-ñèñòåìàõ âûïîëíåíèå îïåðàöèè ñáîðêè ìóñîðà çàíèìàåò îò îäíîé äî íåñêîëüêèõ ñåêóíä.  çàäà÷àõ áîëüøîãî îáúåìà ñáîðùèê ìóñîðà çàïóñêàåòñÿ âåñüìà ÷àñòî, ÷òî ðåçêî óõóäøàåò âðåìåííûå õàðàêòåðèñòèêè ïðèêëàäíûõ ïðîãðàìì. Âî ìíîãèõ ñèñòåìàõ ìóñîð íå îáðàçóåòñÿ, ïîñêîëüêó îí ñðàçó æå ó÷èòûâàåòñÿ. Óïðàâëåíèå ïàìÿòüþ ïðîñòî è íå çàâèñèò îò ôèçè÷åñêîãî ðàñïîëîæåíèÿ, ïîñêîëüêó ñâîáîäíàÿ ïàìÿòü ëîãè÷åñêè ñîñòîèò èç öåïî÷êè ñïèñî÷íûõ ÿ÷ååê.
 ïåðâóþ î÷åðåäü äàííûå îáðàáàòûâàþòñÿ â îïåðàòèâíîé è âèðòóàëüíîé ïàìÿòè, êîòîðàÿ ìîæåò áûòü äîâîëüíî áîëüøîé. Ôàéëû èñïîëüçóþòñÿ â îñíîâíîì äëÿ õðàíåíèÿ ïðîãðàìì è äàííûõ â ïðîìåæóòêàõ ìåæäó ñåàíñàìè
.
Ôóíêöèîíàëüíàÿ íàïðàâëåííîñòü Ëèñïà.
Ôóíêöèîíàëüíîå ïðîãðàììèðîâàíèå, èñïîëüçóåìîå â Ëèñïå, îñíîâûâàåòñÿ íà òîì, ÷òî â ðåçóëüòàòå êàæäîãî äåéñòâèÿ âîçíèêàåò çíà÷åíèå. Çíà÷åíèÿ ñòàíîâÿòñÿ ýëåìåíòàìè ñëåäóþùèõ äåéñòâèé, è êîíå÷íûé ðåçóëüòàò âñåé çàäà÷è âûäàåòñÿ ïîëüçîâàòåëþ. Îáîéòè ýòî ìîæíî òîëüêî ïðè ïîìîùè ñïåöèàëüíîé ôóíêöèè QUOTE. Òî îáñòîÿòåëüñòâî, ÷òî ðåçóëüòàòîì âû÷èñëåíèé ìîãóò áûòü íîâûå ôóíêöèè, ÿâëÿåòñÿ âàæíûì ïðåèìóùåñòâîì Ëèñïà.
Ëèñï - áåñòèïîâûé ÿçûê.
 Ëèñïå èìåíà ñèìâîëîâ, ïåðåìåííûõ, ñïèñêîâ, ôóíêöèé è äðóãèõ îáúåêòîâ íå çàêðåïëåíû ïðåäâàðèòåëüíî çà êàêèìè- íè áóäü òèïàìè äàííûõ. Òèïû â îáùåì íå ñâÿçàíû ñ èìåíàìè îáúåêòîâ äàííûõ, à ñîïðîâîæäàþò ñàìè îáúåêòû. Ïåðåìåííûå â ðàçëè÷íûå ìîìåíòû âðåìåíè ìîãóò ïðåäñòàâëÿòü ðàçëè÷íûå îáúåêòû.  ýòîì ñìûñëå Ëèñï ÿâëÿåòñÿ áåñòèïîâûì ÿçûêîì.
Äèíàìè÷åñêàÿ, îñóùåñòâëÿåìàÿ ëèøü â ïðîöåññå èñïîëíåíèÿ, ïðîâåðêà òèïà è ïîçäíåå ñâÿçûâàíèå äîïóñêàþò ðàçíîñòîðîííåå èñïîëüçîâàíèå ñèìâîëîâ è ãèáêóþ ìîäèôèêàöèþ ïðîãðàìì. Ôóíêöèè ìîæíî îïðåäåëÿòü ïðàêòè÷åñêè íåçàâèñèìî îò òèïîâ äàííûõ, ê êîòîðûì îíè ïðèìåíÿþòñÿ.
Íî óêàçàííàÿ áåñòèïîâîñòü íå îçíà÷àåò, ÷òî â Ëèñïå íåò äàííûõ ðàçëè÷íûõ òèïîâ. Íàîáîðîò íàáîð òèïîâ äàííûõ íàèáîëåå ðàçâèòûõ Ëèñï-ñèñòåì î÷åíü ðàçíîîáðàçåí.
Îäíèì èç îáùèõ ïðèíöèïîâ ðàçâèòèÿ Ëèñï-ñèñòåì áûëî ñâîáîäíîå âêëþ÷åíèå â ÿçûê íîâûõ âîçìîæíîñòåé è ñòðóêòóð, åñëè ñ÷èòàëîñü, ÷òî îíè íàéäóò áîëåå øèðîêîå ïðèìåíåíèå. Ýòî áûëî âîçìîæíî â ñâÿçè ñ åñòåñòâåííîé ðàñøèðÿåìîñòüþ ÿçûêà.
Ïëàòîé çà äèíàìè÷åñêèå òèïû ÿâëÿþòñÿ äåéñòâèÿ ïî ïðîâåðêå òèïà íà ýòàïå èñïîëíåíèÿ.  áîëåå íîâûõ Ëèñï-ñèñòåìàõ (Êîììîí Ëèñï) âîçìîæíî ôàêóëüòàòèâíîå îïðåäåëåíèå òèïîâ.  ýòîì ñëó÷àå òðàíñëÿòîð ìîæåò èñïîëüçîâàòü ýòó èíôîðìàöèþ äëÿ îïòèìèçàöèè êîäà.  Ëèñï-ìàøèíàõ ïðîâåðêà îñóùåñòâëÿåòñÿ íà óðîâíå àïïàðàòóðû.
Èíòåðïðåòèðóþùèé è êîìïèëèðóþùèé ðåæèìû ðàáîòû.
Ëèñï â ïåðâóþ î÷åðåäü èíòåðïðåòèðóåìûé ÿçûê. Ïðîãðàììû íå íóæíî òðàíñëèðîâàòü, è èõ ìîæíî èñïðàâëÿòü â ïðîöåññå èñïîëíåíèÿ. Åñëè êàêîé-òî ó÷àñòîê ïðîãðàììû îòëàæåí è íå òðåáóåò èçìåíåíèé òî åãî ìîæíî îòòðàíñëèðîâàòü, òîãäà îíà âûïîëíÿåòñÿ áûñòðåå.  îäíîé è òîé æå ïðîãðàììå ìîãóò áûòü òðàíñëèðîâàííûå è èíòåðïðåòèðîâàííûå ôóíêöèè. Òðàíñëèðîâàíèå ïî ÷àñòÿì ýêîíîìèò óñèëèÿ ïðîãðàììèñòà è âðåìÿ âû÷èñëèòåëüíîé ìàøèíû.
Îäíàêî êîìïèëèðóþùèé ðåæèì ïðåäóñìîòðåí äàëåêî íå âî âñåõ Ëèñï-ñèñòåìàõ, åãî èñïîëüçîâàíèå íàêëàäûâàåò ðÿä äîïîëíèòåëüíûõ îãðàíè÷åíèé íà òåõíèêó ïðîãðàììèðîâàíèÿ.
Ïîøàãîâîå ïðîãðàììèðîâàíèå.
Ïðîãðàììèðîâàíèå è òåñòèðîâàíèå ïðîãðàììû îñóùåñòâëÿåòñÿ ôóíêöèÿ çà ôóíêöèåé, êîòîðûå ïîñëåäîâàòåëüíî îïðåäåëÿþòñÿ è òåñòèðóþòñÿ. Íàïèñàíèå, òåñòèðîâàíèå è èñïðàâëåíèå ïðîãðàììû îñóùåñòâëÿþòñÿ âíóòðè Ëèñï-ñèñòåìû áåç ïðîìåæóòî÷íîãî èñïîëüçîâàíèÿ ÎÑ.
Âñïîìîãàòåëüíûå ñðåäñòâà, òàêèå íàïðèìåð êàê, ðåäàêòîð, òðàññèðîâùèê, òðàíñëÿòîð è äðóãèå îáðàçóþò îáùóþ èíòåãðèðîâàííóþ ñðåäó, ÿçûê êîòîðîé íåëüçÿ îòëè÷èòü îò ñèñòåìíûõ ñðåäñòâ. Îòäåëüíûå ñðåäñòâà ïî ñâîåìó ïðèíöèïó ÿâëÿþòñÿ ïðîçðà÷íûìè, ÷òîáû èõ ìîãëè èñïîëüçîâàòü äðóãèå ñðåäñòâà. Ðàáîòà ìîæåò ïðîèçâîäèòüñÿ ÷àñòî íà ðàçëè÷íûõ óðîâíÿõ èëè â ðàçëè÷íûõ ðàáî÷èõ îêíàõ. Òàêîé ñïîñîá ðàáîòû îñîáåííî õîðîøî ïîäõîäèò äëÿ èññëåäîâàòåëüñêîãî ïðîãðàììèðîâàíèÿ è áûñòðîãî ïîñòðîåíèÿ ïðîòîòèïîâ.
Åäèíûé ñèñòåìíûé è ïðèêëàäíîé ÿçûêè ïðîãðàììèðîâàíèÿ.
Ëèñï ÿâëÿåòñÿ îäíîâðåìåííî êàê ÿçûêîì ïðèêëàäíîãî òàê è ñèñòåìíîãî ïðîãðàììèðîâàíèÿ. Îí íàïîìèíàåò ìàøèííûé ÿçûê òåì, ÷òî êàê äàííûå, òàê è ïðîãðàììû ïðåäñòàâëåíû â îäèíàêîâîé ôîðìå. ßçûê ïðåâîñõîäíî ïîäõîäèò äëÿ íàïèñàíèÿ èíòåðïðåòàòîðîâ è òðàíñëÿòîðîâ êàê äëÿ íåãî ñàìîãî, òàê è äëÿ äðóãèõ ÿçûêîâ. Íàèáîëåå êîðîòêèé èíòåðïðåòàòîð Ïðîëîãà, íàïèñàííûé íà Ëèñïå çàíèìàåò íåñêîëüêî äåñÿòêîâ ñòðîê.
Òðàäèöèîííî Ëèñï-ñèñòåìû â îñíîâíîé ñâîåé ÷àñòè íàïèñàíû íà Ëèñïå. Ëèñï ìîæíî â õîðîøåì ñìûñëå ñ÷èòàòü ÿçûêîì ìàøèííîãî è ñèñòåìíîãî ïðîãðàììèðîâàíèÿ âûñîêîãî óðîâíÿ. È ýòî îñîáåííî õîðîøî äëÿ Ëèñï-ìàøèí, êîòîðûå âïëîòü äî óðîâíÿ àïïàðàòóðû ñïðîåêòèðîâàíû äëÿ Ëèñïà è ñèñòåìíîå ïðîãðàììíîå îáåñïå÷åíèå êîòîðûõ íàïèñàíî íà Ëèñïå.
2.2 Ïîíÿòèÿ ÿçûêà Ëèñï.
Îñíîâíàÿ ñòðóêòóðà äàííûõ â Ëèñïå - ñèìâîëüíûå èëè S-âûðàæåíèÿ, êîòîðûå îïðåäåëÿþòñÿ êàê àòîìû èëè ñïèñêè.
Ñèìâîëû è ÷èñëà ïðåäñòàâëÿþò ñîáîé òå îáúåêòû Ëèñïà, èç êîòîðûõ ñòðîÿòñÿ îñòàëüíûå ñòðóêòóðû. Ïîýòîìó èõ íàçûâàþò àòîìàìè.
Ñèìâîë - ýòî èìÿ, ñîñòîÿùåå èç áóêâ, öèôð è ñïåöèàëüíûõ çíàêîâ, êîòîðîå îáîçíà÷àåò êàêîé-íèáóäü ïðåäìåò, îáúåêò, äåéñòâèå èç ðåàëüíîãî ìèðà.  Ëèñïå ñèìâîëû îáîçíà÷àþò ÷èñëà, äðóãèå ñèìâîëû èëè áîëåå ñëîæíûå ñòðóêòóðû, ïðîãðàììû (ôóíêöèè) è äðóãèå ëèñïîâñêèå îáúåêòû.
Ïðèìåð: õ, ã-1997, ñèìâîë, function.
×èñëà íå ÿâëÿþòñÿ ñèìâîëàìè, òàê êàê ÷èñëî íå ìîæåò ïðåäñòàâëÿòü èíûå ëèñïîâñêèå îáúåêòû, êðîìå ñàìîãî ñåáÿ, èëè ñâîåãî ÷èñëîâîãî çíà÷åíèÿ.  Ëèñïå èñïîëüçóåòñÿ áîëüøîå êîëè÷åñòâî ðàçëè÷íûõ òèïîâ ÷èñåë (öåëûå, äåñÿòè÷íûå è ò. ä.) - 24, 35.6, 6.3 e5.
Ñèìâîëû T è NIL èìåþò â Ëèñïå ñïåöèàëüíîå íàçíà÷åíèå: T îáîçíà÷àåò ëîãè÷åñêîå çíà÷åíèå èñòèíà, à NIL - ëîãè÷åñêîå çíà÷åíèå ëîæü. Ñèìâîëû T è NIL èìåþò âñåãäà îäíî è òîæå ôèêñèðîâàííîå âñòðîåííîå çíà÷åíèå. Èõ íåëüçÿ èñïîëüçîâàòü â êà÷åñòâå èìåí äðóãèõ ëèñïîâñêèõ îáúåêòîâ. Ñèìâîë NIL îáîçíà÷àåò òàêæå è ïóñòîé ñïèñîê.
×èñëà è ëîãè÷åñêèå çíà÷åíèÿ T è NIL ÿâëÿþòñÿ êîíñòàíòàìè, îñòàëüíûå ñèìâîëû - ïåðåìåííûìè, êîòîðûå èñïîëüçóþòñÿ äëÿ îáîçíà÷åíèÿ äðóãèõ ëèñïîâñêèõ îáúåêòîâ.
Ñïèñîê - ýòî óïîðÿäî÷åííàÿ ïîñëåäîâàòåëüíîñòü, ýëåìåíòàìè êîòîðîé ÿâëÿþòñÿ àòîìû èëè ñïèñêè (ïîäñïèñêè). Ñïèñêè çàêëþ÷àþòñÿ â êðóãëûå ñêîáêè, ýëåìåíòû ñïèñêà ðàçäåëÿþòñÿ ïðîáåëàìè. Îòêðûâàþùèå è çàêðûâàþùèå ñêîáêè íàõîäÿòñÿ â ñòðîãîì ñîîòâåòñòâèè. Ñïèñîê âñåãäà íà÷èíàåòñÿ ñ îòêðûâàþùåé è çàêàí÷èâàåòñÿ çàêðûâàþùåé ñêîáêîé. Ñïèñîê, êîòîðûé ñîñòîèò èç 0 ýëåìåíòîâ íàçûâàþò ïóñòûì è îáîçíà÷àþò () èëè NIL. Ïóñòîé ñïèñîê - ýòî àòîì. Íàïðèìåð: (à â (ñ î) ð), (+ 3 6).
×èñëî T, NIL Ñïèñêè
Êîíñòàíòû
Àòîìû
S-âûðàæåíèÿ
Îïåðàòèâíàÿ ïàìÿòü ìàøèíû ëîãè÷åñêè ðàçáèâàåòñÿ íà ìàëåíüêèå îáëàñòè, íàçûâàåìûå ñïèñî÷íûìè ÿ÷åéêàìè. Ñïèñî÷íàÿ ÿ÷åéêà ñîñòîèò èç äâóõ ÷àñòåé, ïîëåé CAR è CDR (ãîëîâû è õâîñòà ñîîòâåòñòâåííî). Êàæäîå èç ïîëåé ñîäåðæèò óêàçàòåëü. Óêàçàòåëü ìîæåò ññûëàòüñÿ íà äðóãóþ ñïèñî÷íóþ ÿ÷åéêó èëè íà äðóãîé ëèñïîâñêèé îáúåêò, íàïðèìåð, àòîì. Óêàçàòåëè ìåæäó ÿ÷åéêàìè îáðàçóþò êàê áû öåïî÷êó, ïî êîòîðîé ìîæíî èç ïðåäûäóùåé ÿ÷åéêè ïîïàñòü â ñëåäóþùóþ è òàê äî àòîìàðíûõ îáúåêòîâ. Êàæäûé èçâåñòíûé ñèñòåìå àòîì çàïèñàí â îïðåäåëåííîì ìåñòå ïàìÿòè ëèøü îäèí ðàç. Óêàçàòåëåì ñïèñêà ÿâëÿåòñÿ óêàçàòåëü íà ïåðâóþ ÿ÷åéêó ñïèñêà. Íà îäíó è òó æå ÿ÷åéêó ìîæåò óêàçûâàòü íåñêîëüêî óêàçàòåëåé, íî èñõîäèòü òîëüêî îäèí.
Ãðàôè÷åñêè ñïèñî÷íàÿ ÿ÷åéêà ïðåäñòàâëÿåòñÿ ïðÿìîóãîëüíèêîì (ðèñ3), ðàçäåëåííûì íà ÷àñòè CAR è CDR. Óêàçàòåëü èçîáðàæàåòñÿ â âèäå ñòðåëêè, íà÷èíàþùåéñÿ â îäíîé èç ÷àñòåé ïðÿìîóãîëüíèêà è çàêàí÷èâàþùåéñÿ íà èçîáðàæåíèè äðóãîé ÿ÷åéêè èëè àòîìå, íà êîòîðûå ññûëàåòñÿ óêàçàòåëü.
Ðèñ.3 Ñïèñî÷íàÿ ÿ÷åéêà.
Ëîãè÷åñêè èäåíòè÷íûå àòîìû ñîäåðæàòñÿ â ñèñòåìå ëèøü îäèí ðàç. Íî ëîãè÷åñêè èäåíòè÷íûå ñïèñêè ìîãóò áûòü ïðåäñòàâëåíû ðàçëè÷íûìè ñïèñî÷íûìè ÿ÷åéêàìè. Íàïðèìåð, ñïèñîê ((d c) a d c) èçîáðàæàåòñÿ êàê ïîêàçàíî íà ðèñ.4.  ðåçóëüòàòå âû÷èñëåíèé â ïàìÿòè ìîãóò âîçíèêíóòü ñòðóêòóðû íà êîòîðûå íåëüçÿ ïîòîì ñîñëàòüñÿ. Ýòî ïðîèñõîäèò, åñëè ñòðóêòóðû íå ñîõðàíåíû ñ ïîìîùüþ ôóíêöèè SETQ èëè òåðÿåòñÿ ññûëêà íà ñòàðîå çíà÷åíèå â ñâÿçè ñ íîâûì ïåðåïðèñâàèâàíèåì.
A D C
Ðèñ.4
A D C
ðèñ.5
 çàâèñèìîñòè îò ñïîñîáà ïîñòðîåíèÿ ëîãè÷åñêàÿ è ôèçè÷åñêàÿ ñòðóêòóðû äâóõ ñïèñêîâ ìîãóò îêàçàòüñÿ ðàçëè÷íûìè. Íàïðèìåð, ñïèñîê ((d c) a d c) ìîæåò èìåòü è äðóãóþ ñòðóêòóðó (ðèñ5). Ëîãè÷åñêàÿ ñòðóêòóðà âñåãäà òîïîëîãè÷åñêè èìååò ôîðìó äâîè÷íîãî äåðåâà, â òî âðåìÿ êàê ôèçè÷åñêàÿ ñòðóêòóðà ìîæåò áûòü àöèêëè÷åñêèì ãðàôîì, ò. å. âåòâè ìîãóò ñíîâà ñõîäèòüñÿ, íî íèêîãäà íå ìîãóò îáðàçîâûâàòü çàìêíóòûå öèêëû (óêàçûâàòü íàçàä).
Ïðè ëîãè÷åñêîì ñðàâíèâàíèè ñïèñêîâ èñïîëüçóþò ïðåäèêàò EQUAL, ñðàâíèâàþùèé íå ôèçè÷åñêèå óêàçàòåëè, à ñîâïàäåíèå ñòðóêòóðíîãî ïîñòðîåíèÿ ñïèñêîâ è ñîâïàäåíèå àòîìîâ, ôîðìèðóþùèõ ñïèñîê.
Ïðåäèêàò EQ ìîæíî èñïîëüçîâàòü ëèøü äëÿ ñðàâíåíèÿ äâóõ ñèìâîëîâ. Âî ìíîãèõ ðåàëèçàöèÿõ Ëèñïà ýòîò ïðåäèêàò îáîáùåí òàêèì îáðàçîì, ÷òî ñ åãî ïîìîùüþ ìîæíî îïðåäåëèòü ôèçè÷åñêîå ðàâåíñòâî äâóõ âûðàæåíèé (ò. å. ññûëàþòñÿ ëè çíà÷åíèÿ àðãóìåíòîâ íà îäèí ôèçè÷åñêèé ëèñïîâñêèé îáúåêò) íå çàâèñèìî îò òîãî, ÿâëÿåòñÿ ëè îí àòîìîì èëè ñïèñêîì.
Ëþáàÿ Ëèñï-ñèñòåìà ïðåäñòàâëÿåò ñîáîé íåáîëüøóþ ïðîãðàììó, íàçíà÷åíèå êîòîðîé - âûïîëíåíèå ïðîãðàìì ïóòåì èíòåðïðåòàöèè S-âûðàæåíèé, ïîäàâàåìûõ íà âõîä. Ìåõàíèçì ðàáîòû Ëèñï-ñèñòåìû î÷åíü ïðîñò. Îí ñîñòîèò èç òðåõ ïîñëåäîâàòåëüíûõ øàãîâ: ñ÷èòûâàíèå S-âûðàæåíèÿ; èíòåðïðåòàöèÿ S-âûðàæåíèÿ; ïå÷àòü S-âûðàæåíèÿ.
Îáû÷íî, íàïèñàíèå ïðîãðàììû íà Ëèñïå - íàïèñàíèå íåêîòîðîé ôóíêöèè, âîçìîæíî âåñüìà ñëîæíîãî âèäà, ïðè âû÷èñëåíèè èñïîëüçóþùåé êàêèå-ëèáî äðóãèå ôóíêöèè èëè ðåêóðñèâíî ñàìó ñåáÿ. Îäíàêî íà ïðàêòèêå ÷àñòî îêàçûâàåòñÿ, ÷òî áîëåå óäîáíî ðåøàòü çàäà÷è ïóòåì âûïîëíåíèÿ ïîñëåäîâàòåëüíîñòè îòäåëüíûõ áîëåå èëè ìåíåå ïðîñòûõ øàãîâ ñ ñîõðàíåíèåì è äàëüíåéøèì èñïîëüçîâàíèåì ïðîìåæóòî÷íûõ ðåçóëüòàòîâ. Øàãîì â íàøåì ñëó÷àå áóäåò âû÷èñëåíèå íåêîòîðîé ôóíêöèè Ëèñïà. Ðàçðåøàÿ èñïîëüçîâàòü ïåðåìåííûå íå òîëüêî â êà÷åñòâå àðãóìåíòîâ ôóíêöèé, ìû ðàññòàåìñÿ ñ ÷èñòîòîé ôóíêöèîíàëüíîãî ïðîãðàììèðîâàíèÿ, íî âìåñòå ñ òåì ïðèîáðåòàåì èíñòðóìåíò, â ðÿäå ñëó÷àåâ îáëåã÷àþùèé íàïèñàíèå ïðîãðàìì è íåðåäêî ïîâûøàþùèé ýôôåêòèâíîñòü èõ ðàáîòû íà ÂÌ ñ òðàäèöèîííîé àðõèòåêòóðîé. Íàèáîëåå øèðîêî â ïðàêòè÷åñêîì ïðîãðàììèðîâàíèè íà Ëèñïå ðàñïðîñòðàíåí ñìåøàííûé ñòèëü ïðîãðàììèðîâàíèÿ: ïðîãðàììó ñòàðàþòñÿ ïèñàòü ôóíêöèîíàëüíî, íî ïðè ýòîì ñîîòâåòñòâóþùèå ôóíêöèè íå äåëàþò ñëèøêîì ñëîæíûìè, ïåðåõîäÿ âåçäå, ãäå ýòî îáëåã÷àåò íàïèñàíèå ñîîòâåòñòâóþùåé ôóíêöèè è ïîíèìàíèå ïðèíöèïà åå ðàáîòû, ê èìïåðàòèâíîìó (âòîðîìó) ìåòîäó ïðîãðàììèðîâàíèÿ.
Èòàê, êàê ïðàâèëî, ïðîãðàììà íàïèñàííàÿ íà Ëèñïå, ïðåäñòàâëÿåò ñîáîé ïîñëåäîâàòåëüíîñòü âûçîâîâ íåêîòîðûõ ôóíêöèé, êàê âñòðîåííûõ â Ëèñï, òàê è ïðåäâàðèòåëüíî îïèñàííûõ ñàìèì ïîëüçîâàòåëåì, à ñðåäñòâîì ñâÿçè ìåæäó ïîñëåäîâàòåëüíî âûçûâàåìûìè ôóíêöèÿìè ÿâëÿþòñÿ ïåðåìåííûå, ïîçâîëÿþùèå çàïîìíèòü ëþáîé îáúåêò (àòîì, ñïèñîê, òî÷å÷íóþ ïàðó).
Âñå Ëèñï-ñèñòåìû èìåþò íåêîòîðûé íàáîð áàçîâûõ ôóíêöèé (èõ ìû ðàññìîòðèì â ëàáîðàòîðíûõ ðàáîòàõ), êîòîðûå èçíà÷àëüíî âñòðîåíû â èíòåðïðåòàòîð. Êðîìå òîãî, ïîëüçîâàòåëü ìîæåò îïðåäåëÿòü ñâîè ñîáñòâåííûå ôóíêöèè íà ÿçûêå Ëèñï, èñïîëüçóÿ ñïåöèàëüíûå êîíñòðóêòîðû ôóíêöèé. Åñëè àòîì f íå óäàåòñÿ èíòåðïðåòèðîâàòü êàê âñòðîåííóþ ôóíêöèþ ÿçûêà èëè êàê ôóíêöèþ, îïðåäåëåííóþ ïîëüçîâàòåëåì, áîëüøèíñòâî èíòåðïðåòàòîðîâ âûäàþò ñîîáùåíèå îá îøèáêå.
Ìíîæåñòâà áàçîâûõ ôóíêöèé ðàçëè÷íûõ äèàëåêòîâ ñèëüíî îòëè÷àþòñÿ äðóã îò äðóãà, è èõ ÷èñëî êîëåáëåòñÿ îò íåñêîëüêèõ äåñÿòêîâ äî íåñêîëüêèõ ñîòåí. Âñòðîåííûå ôóíêöèè âûïîëíÿþòñÿ ñ áîëüøåé ñêîðîñòüþ, ÷åì ôóíêöèè, îïðåäåëåííûå ïîëüçîâàòåëåì, òàê êàê ïåðâûå ðåàëèçîâàíû íà òîì æå ÿçûêå, ÷òî è âñÿ Ëèñï-ñèñòåìà (Àññåìáëåð, Ñ, Ïàñêàëü). ×ðåçìåðíîå óâåëè÷åíèå áàçîâîãî íàáîðà ôóíêöèé ïðèâîäèò ê óìåíüøåíèþ ðàáî÷åé ïàìÿòè, îòâîäèìîé ïîä çàäà÷è ïîëüçîâàòåëÿ.
Îïðåäåëåíèå ôóíêöèé è èõ âû÷èñëåíèå â Ëèñïå îñíîâàíî íà ëÿìáäà-èñ÷èñëåíèè ×åð÷à.  ëÿìáäà-èñ÷èñëåíèè ×åð÷à ôóíêöèÿ çàïèñûâàåòñÿ â ñëåäóþùåì âèäå:
lambda(x1,x2,...,xn).fn
 Ëèñïå ëÿìáäà-âûðàæåíèå èìååò âèä
(LAMBDA (x1 x2 ... xn) fn)
Ñèìâîë LAMBDA îçíà÷àåò, ÷òî ìû èìååì äåëî ñ îïðåäåëåíèåì ôóíêöèè. Ñèìâîëû xi ÿâëÿþòñÿ ôîðìàëüíûìè ïàðàìåòðàìè îïðåäåëåíèÿ, êîòîðûå èìåþò àðãóìåíòû â îïèñûâàþùåì âû÷èñëåíèÿ òåëå ôóíêöèè fn. Âõîäÿùèé â ñîñòàâ ôîðìû ñïèñîê, îáðàçîâàííûé èç ïàðàìåòðîâ, íàçûâàþò ëÿìáäà-ñïèñêîì.
Òåëîì ôóíêöèè ÿâëÿåòñÿ ïðîèçâîëüíàÿ ôîðìà, çíà÷åíèå êîòîðîé ìîæåò âû÷èñëèòü èíòåðïðåòàòîð Ëèñïà.
Ôîðìàëüíîñòü ïàðàìåòðîâ îçíà÷àåò, ÷òî èõ ìîæíî çàìåíèòü íà ëþáûå äðóãèå ñèìâîëû, è ýòî íå îòðàçèòñÿ íà âû÷èñëåíèÿõ, îïðåäåëÿåìûõ ôóíêöèåé.
Ëÿìáäà-âûðàæåíèå - ýòî îïðåäåëåíèå âû÷èñëåíèé è ïàðàìåòðîâ ôóíêöèè â ÷èñòîì âèäå áåç ôàêòè÷åñêèõ ïàðàìåòðîâ, èëè àðãóìåíòîâ. Äëÿ òîãî, ÷òîáû ïðèìåíèòü òàêóþ ôóíêöèþ ê íåêîòîðûì àðãóìåíòàì, íóæíî â âûçîâå ôóíêöèè ïîñòàâèòü ëÿìáäà-îïðåäåëåíèå íà ìåñòî èìåíè ôóíêöèè:
(ëÿìáäà-âûðàæåíèå à1 à2 ... àn)
Çäåñü ai - ôîðìû, çàäàþùèå ôàêòè÷åñêèå ïàðàìåòðû, êîòîðûå âû÷èñëÿþòñÿ êàê îáû÷íî.
Âû÷èñëåíèå ëÿìáäà-âûçîâà, èëè ïðèìåíåíèå ëÿìáäà-âûðàæåíèÿ ê ôàêòè÷åñêèì ïàðàìåòðàì, ïðîèçâîäèòñÿ â äâà ýòàïà. Ñíà÷àëà âû÷èñëÿþòñÿ çíà÷åíèÿ ôàêòè÷åñêèõ ïàðàìåòðîâ è ñîîòâåòñòâóþùèå ôîðìàëüíûå ïàðàìåòðû ñâÿçûâàþòñÿ ñ ïîëó÷åííûìè çíà÷åíèÿìè. Ýòîò ýòàï íàçûâàåòñÿ ñâÿçûâàíèåì ïàðàìåòðîâ. Íà ñëåäóþùåì ýòàïå ñ ó÷åòîì íîâûõ ñâÿçåé âû÷èñëÿåòñÿ ôîðìà, ÿâëÿþùàÿñÿ òåëîì ëÿìáäà-âûðàæåíèÿ, è ïîëó÷åííîå çíà÷åíèå âîçâðàùàåòñÿ â êà÷åñòâå çíà÷åíèÿ ëÿìáäà-âûçîâà. Ôîðìàëüíûì ïàðàìåòðàì ïîñëå îêîí÷àíèÿ âû÷èñëåíèÿ âîçâðàùàþòñÿ òå ñâÿçè, êîòîðûå ó íèõ, âîçìîæíî áûëè ïåðåä âû÷èñëåíèåì ëÿìáäà-âûçîâà.
Ëÿìáäà-âûçîâû ìîæíî ñâîáîäíî îáúåäèíÿòü ìåæäó ñîáîé è äðóãèìè ôîðìàìè. Âëîæåííûå ëÿìáäà-âûçîâû ìîæíî ñòàâèòü êàê íà ìåñòî òåëà ëÿìáäà-âûðàæåíèÿ, òàê è íà ìåñòî ôàêòè÷åñêèõ ïàðàìåòðîâ.
Ëÿìáäà-âûðàæåíèå ÿâëÿåòñÿ êàê ÷èñòî àáñòðàêòíûì ìåõàíèçìîì äëÿ îïèñàíèÿ è îïðåäåëåíèÿ âû÷èñëåíèé, òàê è ìåõàíèçìîì äëÿ ñâÿçûâàíèÿ ôîðìàëüíûõ è ôàêòè÷åñêèõ ïàðàìåòðîâ íà âðåìÿ âûïîëíåíèÿ âû÷èñëåíèé. Ëÿìáäà-âûðàæåíèå - ýòî áåçûìÿííàÿ ôóíêöèÿ, êîòîðàÿ ïðîïàäàåò òîò÷àñ ïîñëå âû÷èñëåíèÿ çíà÷åíèÿ ôîðìû. Åå òðóäíî èñïîëüçîâàòü ñíîâà, òàê êàê íåëüçÿ âûçâàòü ïî èìåíè, õîòÿ ðàíåå âûðàæåíèå áûëî äîñòóïíî êàê ñïèñî÷íûé îáúåêò. Îäíàêî èñïîëüçóþòñÿ è áåçûìÿííûå ôóíêöèè, íàïðèìåð ïðè ïåðåäà÷å ôóíêöèè â êà÷åñòâå àðãóìåíòà äðóãîé ôóíêöèè èëè ïðè ôîðìèðîâàíèè ôóíêöèè â ðåçóëüòàòå âû÷èñëåíèé, äðóãèìè ñëîâàìè, ïðè ñèíòåçå ïðîãðàìì.
Ëÿìáäà-âûðàæåíèå ñîîòâåòñòâóåò èñïîëüçóåìîìó â äðóãèõ ÿçûêàõ îïðåäåëåíèþ ïðîöåäóðû èëè ôóíêöèè, à ëÿìáäà-âûçîâ - âûçîâó ïðîöåäóðû èëè ôóíêöèè. Çàïèñûâàòü âûçîâû ôóíêöèé ïîëíîñòüþ ñ ïîìîùüþ ëÿìáäà-âûçîâîâ íå ðàçóìíî, ïîñêîëüêó î÷åíü ñêîðî âûðàæåíèÿ â âûçîâå ïðèøëîñü áû ïîâòîðÿòü, õîòÿ ðàçíûå âûçîâû îäíîé ôóíêöèè îòëè÷àþòñÿ ëèøü â ÷àñòè ôàêòè÷åñêèõ ïàðàìåòðîâ. Ïðîáëåìà ðàçðåøèìà ïóòåì èìåíîâàíèÿ ëÿìáäà-âûðàæåíèé è èñïîëüçîâàíèÿ â âûçîâå ëèøü èìåíè.
Äàòü èìÿ è îïðåäåëèòü íîâóþ ôóíêöèþ ìîæíî ñ ïîìîùüþ ôóíêöèè DEFUN:
(DEFUN èìÿ ëÿìáäà-ñïèñîê òåëî)
DEFUN ñîåäèíÿåò ñèìâîë ñ ëÿìáäà-âûðàæåíèåì, è ñèìâîë íà÷èíàåò ïðåäñòàâëÿòü îïðåäåëåííûå ýòèì ëÿìáäà-âûðàæåíèåì âû÷èñëåíèÿ. Çíà÷åíèåì ýòîé ôîðìû ÿâëÿåòñÿ èìÿ íîâîé ôóíêöèè.
 ðàçëè÷íûõ äèàëåêòàõ Ëèñïà âìåñòî DEFUN èñïîëüçóþòñÿ äðóãèå èìåíà è ôîðìû (DEFINE, DE, CSETQ è äð.).
Áóäó÷è ÿçûêîì ôóíêöèé, ñèìâîëüíûì ÿçûêîì è ÿçûêîì ñïèñêîâ, Ëèñï ÿâëÿåòñÿ è ðåêóðñèâíûì ÿçûêîì.  ïðîãðàììèðîâàíèè íà Ëèñïå ðåêóðñèÿ èñïîëüçóåòñÿ äëÿ îðãàíèçàöèè ïîâòîðÿþùèõñÿ âû÷èñëåíèé. Íà íåé æå îñíîâàíî ðàçáèåíèå ïðîáëåìû íà ïîäçàäà÷è, ðåøåíèå êîòîðûõ ïûòàþòñÿ ñâåñòè ê óæå ðåøåííîé èëè ðåøàåìîé â äàííûé ìîìåíò çàäà÷è.
Îñíîâíàÿ èäåÿ ðåêóðñèâíîãî îïðåäåëåíèÿ çàêëþ÷àåòñÿ â òîì, ÷òî ôóíêöèþ ìîæíî ñ ïîìîùüþ ðåêóððåíòíûõ ôîðìóë ñâåñòè ê íåêîòîðûì íà÷àëüíûì çíà÷åíèÿì, ê ðàíåå îïðåäåëåííûì ôóíêöèÿì èëè ê ñàìîé îïðåäåëÿåìîé ôóíêöèè, íî ñ áîëåå «ïðîñòûìè» àðãóìåíòàìè. Âû÷èñëåíèå òàêîé ôóíêöèè çàêàí÷èâàåòñÿ â òîò ìîìåíò, êîãäà îíî ñâîäèòñÿ ê èçâåñòíûì íà÷àëüíûì çíà÷åíèÿì. Ðàçóìååòñÿ, ìîæíî îðãàíèçîâàòü âû÷èñëåíèÿ ïî ðåêóððåíòíûì ôîðìóëàì è áåç èñïîëüçîâàíèÿ ðåêóðñèè, îäíàêî ïðè ýòîì âñòàåò âîïðîñ î ÿñíîñòè ïðîãðàììû è äîêàçàòåëüñòâå åå ýêâèâàëåíòíîñòè èñõîäíûì ôîðìóëàì. Èñïîëüçîâàíèå ðåêóðñèè ïîçâîëÿåò ëåãêî çàïðîãðàììèðîâàòü âû÷èñëåíèå ïî ðåêóððåíòíûì ôîðìóëàì.
 ðåêóðñèâíîì îïèñàíèè äåéñòâèé èìååò ñìûñë îáðàòèòü âíèìàíèå íà ñëåäóþùèå îáñòîÿòåëüñòâà. Âî-ïåðâûõ, ïðîöåäóðà ñîäåðæèò âñåãäà ïî êðàéíåé ìåðå îäíó òåðìèíàëüíóþ âåòâü è óñëîâèå îêîí÷àíèÿ. Âî-âòîðûõ, êîãäà ïðîöåäóðà äîõîäèò äî ðåêóðñèâíîé âåòâè, òî ôóíêöèîíèðóþùèé ïðîöåññ ïðèîñòàíàâëèâàåòñÿ, è íîâûé òàêîé æå ïðîöåññ çàïóñêàåòñÿ ñíà÷àëà, íî óæå íà íîâîì óðîâíå. Ïðåðâàííûé ïðîöåññ êàêèì-íèáóäü îáðàçîì çàïîìèíàåòñÿ. Îí áóäåò æäàòü è íà÷íåò èñïîëíÿòüñÿ ëèøü ïîñëå îêîí÷àíèÿ íîâîãî ïðîöåññà.  ñâîþ î÷åðåäü, íîâûé ïðîöåññ ìîæåò ïðèîñòàíîâèòüñÿ, îæèäàòü è ò. ä.
Òàê îáðàçóåòñÿ êàê áû ñòåê ïðåðâàííûõ ïðîöåññîâ, èç êîòîðûõ âûïîëíÿåòñÿ ëèøü ïîñëåäíèé â íàñòîÿùèé ìîìåíò âðåìåíè ïðîöåññ; ïîñëå îêîí÷àíèÿ åãî ðàáîòû ïðîäîëæàåò âûïîëíÿòüñÿ ïðåäøåñòâîâàâøèé åìó ïðîöåññ. Öåëèêîì âåñü ïðîöåññ âûïîëíåí, êîãäà ñòåê ñíîâà îïóñòååò, èëè, äðóãèìè ñëîâàìè, âñå ïðåðâàííûå ïðîöåññû âûïîëíÿòñÿ.
Ìîæíî ãîâîðèòü î ðåêóðñèè ïî çíà÷åíèþ, êîãäà âûçîâ ÿâëÿåòñÿ âûðàæåíèåì, îïðåäåëÿþùèì ðåçóëüòàò ôóíêöèè. Åñëè â êà÷åñòâå ðåçóëüòàòà ôóíêöèè âîçâðàùàåòñÿ çíà÷åíèå íåêîòîðîé äðóãîé ôóíêöèè è ðåêóðñèâíûé âûçîâ ó÷àñòâóåò â âû÷èñëåíèè àðãóìåíòîâ ýòîé ôóíêöèè, òî áóäåì ãîâîðèòü î ðåêóðñèè ïî àðãóìåíòàì. Àðãóìåíòîì ðåêóðñèâíîãî âûçîâà ìîæåò áûòü âíîâü ðåêóðñèâíûé âûçîâ è òàêèõ âûçîâîâ ìîæåò áûòü ìíîãî.
Äëÿ îáåñïå÷åíèÿ «èäåîëîãè÷åñêîé» ñîâìåñòèìîñòè ñ äðóãèìè ÿçûêàìè ïðîãðàììèðîâàíèÿ, à òàêæå äëÿ ïîâûøåíèÿ ýôôåêòèâíîñòè ïðîãðàìì ïðè ðåøåíèè íåêîòîðûõ ÷àñòíûõ çàäà÷ â ÿçûê áûëà ââåäåíà ãðóïïà ôóíêöèé, ïðåäîñòàâëÿþùèõ âîçìîæíîñòü îðãàíèçàöèè èòåðàöèîííîé îáðàáîòêè èíôîðìàöèè.
 óêàçàííîé ãðóïïå ïðåæäå âñåãî âûäåëÿþòñÿ òàê íàçûâàåìûå îòîáðàæàþùèå èëè MAP-ôóíêöèè: MAPC, MAPCAR, MAPLIST è äðóãèå. MAP-ôóíêöèîíàëû ÿâëÿþòñÿ ôóíêöèÿìè, êîòîðûå íåêîòîðûì îáðàçîì îòîáðàæàþò ñïèñîê (ïîñëåäîâàòåëüíîñòü) â íîâóþ ïîñëåäîâàòåëüíîñòü èëè ïîðîæäàþò ïîáî÷íûé ýôôåêò, ñâÿçàííûé ñ ýòîé ïîñëåäîâàòåëüíîñòüþ. Êàæäàÿ èç íèõ èìååò áîëåå äâóõ àðãóìåíòîâ, çíà÷åíèåì ïåðâîãî äîëæíî áûòü èìÿ îïðåäåëåííîé ðàíåå èëè áàçîâîé ôóíêöèè, èëè ëÿìáäà-âûðàæåíèå, âûçûâàåìîå MAP-ôóíêöèåé èòåðàöèîííî, à îñòàëüíûå àðãóìåíòû ñëóæàò äëÿ çàäàíèÿ àðãóìåíòîâ íà êàæäîé èòåðàöèè. Åñòåñòâåííî, ÷òî êîëè÷åñòâî àðãóìåíòîâ â îáðàùåíèè ê MAP-ôóíêöèè äîëæíî áûòü ñîãëàñîâàíî ñ ïðåäóñìîòðåííûì êîëè÷åñòâîì àðãóìåíòîâ ó àðãóìåíòà-ôóíêöèè. Ðàçëè÷èå ìåæäó âñåìè MAP-ôóíêöèÿìè ñîñòîèò â ïðàâèëàõ ôîðìèðîâàíèÿ âîçâðàùàåìîãî çíà÷åíèÿ è ìåõàíèçìå âûáîðà àðãóìåíòîâ èòåðèðóþùåé ôóíêöèè íà êàæäîì øàãå.
Ðàññìîòðèì îñíîâíûå òèïû MAP-ôóíêöèé.
Çíà÷åíèå ýòîé ôóíêöèè âû÷èñëÿåòñÿ ïóòåì ïðèìåíåíèÿ ôóíêöèè fn ê ïîñëåäîâàòåëüíûì ýëåìåíòàì xi ñïèñêà, ÿâëÿþùåãîñÿ âòîðûì àðãóìåíòîì ôóíêöèè. Íàïðèìåð â ñëó÷àå îäíîãî ñïèñêà ïîëó÷àåòñÿ ñëåäóþùåå âûðàæåíèå:
(MAPCAR fn ‘(x1 x2 ... xn))
 êà÷åñòâå çíà÷åíèÿ ôóíêöèîíàëà âîçâðàùàåòñÿ ñïèñîê, ïîñòðîåííûé èç ðåçóëüòàòîâ âûçîâîâ ôóíêöèîíàëüíîãî àðãóìåíòà MAPCAR
MAPLIST äåéñòâóåò ïîäîáíî MAPCAR, íî äåéñòâèÿ îñóùåñòâëÿåò íå íàä ýëåìåíòàìè ñïèñêà, à íàä ïîñëåäîâàòåëüíûìè CDR ýòîãî ñïèñêà.
Ôóíêöèîíàëû MAPCAR è MAPLIST èñïîëüçóþòñÿ äëÿ ïðîãðàììèðîâàíèÿ öèêëîâ ñïåöèàëüíîãî âèäà è â îïðåäåëåíèè äðóãèõ ôóíêöèé, ïîñêîëüêó ñ èõ ïîìîùüþ ìîæíî ñîêðàòèòü çàïèñü ïîâòîðÿþùèõñÿ âû÷èñëåíèé.
Ôóíêöèè MAPCAN è MAPCON ÿâëÿþòñÿ àíàëîãàìè ôóíêöèé MAPCAR è MAPLIST. Îòëè÷èå ñîñòîèò â òîì, ÷òî MAPCAN è MAPCON íå ñòðîÿò, èñïîëüçóÿ LIST, íîâûé ñïèñîê èç ðåçóëüòàòîâ, à îáúåäèíÿþò ñïèñêè, ÿâëÿþùèåñÿ ðåçóëüòàòàìè, â îäèí ñïèñîê.
Äðóãèì òèïè÷íûì ïðåäñòàâèòåëåì ãðóïïû èòåðàöèîííûõ ôóíêöèé ìîæåò ñëóæèòü ôóíêöèÿ LOOP, èìåþùàÿ â îáùåì ñëó÷àå âèä (LOOP expr1 expr2 ... exprN), ãäå â êà÷åñòâå àðãóìåíòîâ ìîãóò áûòü èñïîëüçîâàíû ëþáûå ñèíòàêñè÷åñêè è ñåìàíòè÷åñêè äîïóñòèìûå S-âûðàæåíèÿ ëèáî ñïåöèàëüíûå êîíñòðóêöèè.
Ïî÷òè âî âñåõ äèàëåêòàõ îïðåäåëåíû ôóíêöèè APPLY è FUNCALL, ïîçâîëÿþùèå èíòåðïðåòèðîâàòü S-âûðàæåíèÿ. Îáðàùåíèÿ ê ýòèì ôóíêöèÿì èìåþò ñëåäóþùèé âèä:
(APPLY fun arg)
(FUNCALL fun arg1 arg2 ... argN)
APPLY è FUNCALL âû÷èñëÿþò ôóíêöèè, ÿâëÿþùèåñÿ èõ ïåðâûìè àðãóìåíòàìè, ïðîèçâîäÿ ñâÿçûâàíèå ôîðìàëüíûõ àðãóìåíòîâ ñ óêàçàííûìè S-âûðàæåíèÿìè arg èëè arg1, arg2, ... argN.  êà÷åñòâå çíà÷åíèÿ âîçâðàùàåòñÿ ðåçóëüòàò ïðèìåíåíèÿ ôóíêöèè fun, êîòîðàÿ ìîæåò áûòü âñòðîåííîé èëè îïðåäåëåííîé ôóíêöèåé èëè ëÿìáäà-âûðàæåíèåì.
Íåîáõîäèìî îòìåòèòü åùå îäíó îñîáåííîñòü ÿçûêà Ëèñï, êîòîðàÿ âûòåêàåò èç ïðèðîäû îðãàíèçàöèè ñòðóêòóð äàííûõ è ïðîãðàìì è ìåõàíèçìà èõ èíòåðïðåòàöèè. Íà ÿçûêå ëåãêî ðåàëèçîâàòü çàäà÷è àâòîìàòè÷åñêîãî ñèíòåçà ïðîãðàìì. Îí ïîçâîëÿåò ñ ïîìîùüþ îäíèõ ôóíêöèé ôîðìèðîâàòü îïðåäåëåíèÿ äðóãèõ ôóíêöèé, ïðîãðàììíî àíàëèçèðîâàòü è ðåäàêòèðîâàòü ýòè îïðåäåëåíèÿ êàê S-âûðàæåíèÿ, à çàòåì èñïîëíÿòü èõ.
×àñòî áûâàåò ïîëåçíî íå âûïèñûâàòü âû÷èñëÿåìîå âûðàæåíèå âðó÷íóþ, à ñôîðìèðîâàòü åãî ñ ïîìîùüþ ïðîãðàììû. Ýòà èäåÿ àâòîìàòè÷åñêîãî äèíàìè÷åñêîãî ïðîãðàììèðîâàíèÿ îñîáåííî õîðîøî ðåàëèçóåòñÿ â Ëèñïå. Ïðîãðàììíîå ôîðìèðîâàíèå âûðàæåíèé íàèáîëåå åñòåñòâåííî îñóùåñòâëÿåòñÿ ñ ïîìîùüþ ñïåöèàëüíûõ ìàêðîñîâ. Èñïîëüçîâàíèå ìàêðîñðåäñòâ, ïðåäëàãàåìûõ ñîâðåìåííûìè Ëèñï-ñèñòåìàìè, - îäèí èç ñàìûõ ýôôåêòèâíûõ ïóòåé ðåàëèçàöèè ñëîæíûõ ïðîãðàìì. Ìàêðîñû äàþò âîçìîæíîñòü ðàñøèðÿòü ñèíòàêñèñ è ñåìàíòèêó Ëèñïà è èñïîëüçîâàòü íîâûå ïîäõîäÿùèå äëÿ ðåøàåìîé çàäà÷è ôîðìû ïðåäëîæåíèé. Îíè äàþò âîçìîæíîñòü ïèñàòü êîìïàêòíûå, îðèåíòèðîâàííûå íà çàäà÷ó ïðîãðàììû, êîòîðûå àâòîìàòè÷åñêè ïðåîáðàçóþòñÿ â áîëåå ñëîæíûé, íî áîëåå áëèçêèé ìàøèíå ýôôåêòèâíûé ëèñïîâñêèé êîä. Ïðè íàëè÷èè ìàêðîñðåäñòâ íåêîòîðûå ôóíêöèè â ÿçûêå ìîãóò áûòü îïðåäåëåíû â âèäå ìàêðîôóíêöèé. Òàêîå îïðåäåëåíèå ôàêòè÷åñêè çàäàåò çàêîí ïðåäâàðèòåëüíîãî ïîñòðîåíèÿ òåëà ôóíêöèè íåïîñðåäñòâåííî ïåðåä ôàçîé èíòåðïðåòàöèè.
Ñèíòàêñèñ îïðåäåëåíèÿ ìàêðîñà âûãëÿäèò òàê æå, êàê ñèíòàêñèñ èñïîëüçóåìîé ïðè îïðåäåëåíèè ôóíêöèé ôîðìû DEFUN:
(DEFMACRO èìÿ ëÿìáäà-ñïèñîê òåëî)
Âûçîâ ìàêðîñà ñîâïàäàåò ïî ôîðìå ñ âûçîâîì ôóíêöèè, íî åãî âû÷èñëåíèå îòëè÷àåòñÿ îò âû÷èñëåíèÿ âûçîâà ôóíêöèè. Ïåðâîå îòëè÷èå ñîñòîèò â òîì, ÷òî â ìàêðîñå íå âû÷èñëÿþòñÿ àðãóìåíòû. Òåëî ìàêðîñà âû÷èñëÿåòñÿ ñ àðãóìåíòàìè â òîì âèäå, êàê îíè çàïèñàíû.
Âòîðîå îòëè÷èå ñîñòîèò â òîì, ÷òî èíòåðïðåòàöèÿ ôóíêöèé, îïðåäåëåííûõ êàê ìàêðî, ïðîèçâîäèòñÿ â äâà ýòàïà. Íà ïåðâîì, íàçûâàåìîì ìàêðîðàñøèðåíèåì, ïðîèñõîäèò ôîðìèðîâàíèå ëÿìáäà-îïðåäåëåíèÿ ôóíêöèè â çàâèñèìîñòè îò òåêóùåãî êîíòåêñòà, íà âòîðîì îñóùåñòâëÿåòñÿ èíòåðïðåòàöèÿ ñîçäàííîãî ëÿìáäà-âûðàæåíèÿ.
Ìàêðîñû îòëè÷àþòñÿ îò ôóíêöèé è â îòíîøåíèè êîíòåêñòà âû÷èñëåíèé. Âî âðåìÿ ðàñøèðåíèÿ ìàêðîñà äîñòóïíû ñèíòàêñè÷åñêèå ñâÿçè èç êîíòåêñòà îïðåäåëåíÿ. Âû÷èñëåíèå æå ïîëó÷åííîé â ðåçóëüòàòå ðàñøèðåíèÿ ôîðìû ïðîèçâîäèòñÿ âíå êîíòåêñòà ìàêðîâûçîâà, è ïîýòîìó ñòàòè÷åñêèå ñâÿçè èç ìàêðîñà íå äåéñòâóþò. Èñïîëüçîâàíèå ìàêðîôóíêöèé îáëåã÷àåò ïîñòðîåíèå ÿçûêà ñ ëèñïîïîäîáíîé ñòðóêòóðîé, èìåþùåãî ñâîé ñèíòàêñèñ, áîëåå óäîáíûé äëÿ ïîëüçîâàòåëÿ. ×ðåçìåðíîå èñïîëüçîâàíèå ìàêðîñðåäñòâ çàòðóäíÿåò ÷òåíèå è ïîíèìàíèå ïðîãðàìì.
Ñîâðåìåííûå äèàëåêòû ÿçûêà Ëèñï, êàê ïðàâèëî, èìåþò ðàçâèòûå ñðåäñòâà óïðàâëåíèÿ ââîäîì-âûâîäîì. Îñíîâó ýòèõ ñðåäñòâ ñîñòàâëÿþò òðè îñíîâíûå ôóíêöèè READ, RATOM è PRINT. Ïåðâûå äâå ïîçâîëÿþò îñóùåñòâëÿòü îïåðàöèé ââîäà S-âûðàæåíèé (READ) è àòîìîâ (RATOM), ïîñëåäíÿÿ âûïîëíÿåò âûâîä S-âûðàæåíèé.
Ëèñïîâñêàÿ ôóíêöèÿ ÷òåíèÿ READ îáðàáàòûâàåò âûðàæåíèå öåëèêîì. Âûçîâ ôóíêöèè îñóùåñòâëÿåòñÿ â âèäå
Ôóíêöèÿ íå ïîêàçûâàåò, ÷òî îíà æäåò ââîäà âûðàæåíèÿ. Îíà ëèøü ÷èòàåò âûðàæåíèå è âîçâðàùàåò â êà÷åñòâå çíà÷åíèÿ ñàìî ýòî âûðàæåíèå, ïîñëå ÷åãî âû÷èñëåíèÿ ïðîäîëæàþòñÿ.
Äëÿ âûâîäà âûðàæåíèé èñïîëüçóþò ôóíêöèþ PRINT. Ýòî ôóíêöèÿ ñ îäíèì àðãóìåíòîì, êîòîðàÿ ñíà÷àëà âû÷èñëÿåò çíà÷åíèå àðãóìåíòà, à çàòåì âûâîäèò ýòî çíà÷åíèå. Ôóíêöèÿ PRINT ïåðåä âûâîäîì àðãóìåíòà ïåðåõîäèò íà íîâóþ ñòðîêó, à ïîñëå íåãî âûâîäèò ïðîáåë. Òàêèì îáðàçîì, çíà÷åíèå âûâîäèòñÿ âñåãäà íà íîâóþ ñòðîêó. Áîëåå ïîäðîáíî ýòè è äðóãèå ôóíêöèè ðàññìîòðèì â ëàáîðàòîðíûõ ðàáîòàõ.
Áàçîâûé íàáîð ôóíêöèé îáû÷íî íàðÿäó ñ óêàçàííûìè ôóíêöèÿìè âêëþ÷àåò ðàçëè÷íûå èõ ìîäèôèêàöèè è äîïîëíèòåëüíûå ôóíêöèè, ïîçâîëÿþùèå ïðè ïðîãðàììèðîâàíèè ëåãêî ïîëó÷èòü íåêîòîðûå äîïîëíèòåëüíûå ýôôåêòû (àâòîìàòè÷åñêîå äîïîëíåíèå ïå÷àòíîé ñòðîêè ñ èçîáðàæåíèåì S-âûðàæåíèÿ ñïåöèàëüíûìè ñèìâîëàìè ïåðåâîäà êàðåòêè íà íà÷àëî ñëåäóþùåé ñòðîêè, áëîêèðîâêà ñïåöèàëüíûõ ìåòàñèìâîëîâ ïðè âûâîäå ëèòåðàëüíûõ àòîìîâ, â ïå÷àòíûõ èìåíàõ êîòîðûõ ïðèñóòñòâóþò íåïå÷àòíûå ñèìâîëû è ò. ä.). êðîìå òîãî, ïðàêòè÷åñêè êàæäûé äèàëåêò ñîäåðæèò íàáîð ôóíêöèé óïðàâëåíèÿ âõîäíûìè è âûõîäíûìè ïîòîêàìè äëÿ ñâÿçè ñ âíåøíèìè óñòðîéñòâàìè ÝÂÌ. Îäíàêî óêàçàííûå ôóíêöèè ÿâëÿþòñÿ îäíîé èç íàèáîëåå ìàøèííî-çàâèñèìûõ ñîñòàâëÿþùèõ Ëèñï-ñèñòåì, ïîñêîëüêó ïî íåîáõîäèìîñòè ó÷èòûâàþò ñïåöèôèêó ñðåäû îïåðàöèîííîé ñèñòåìû.
2.3 Çíàíèÿ â ÈÈ.
2.3.1 Òðåáîâàíèÿ ê çíàíèÿì.
Çíàíèÿ äîëæíû îòâå÷àòü ñëåäóþùèì òðåáîâàíèÿì:
Äîëæíû áûòü ÿâíûìè è äîñòóïíûìè. Ýòî ãëàâíîå îòëè÷èå çíàíèé îò äðóãèõ ïðîãðàììíûõ ïðîäóêòîâ.
Èñïîëüçîâàòü âûñîêîêà÷åñòâåííûé îïûò ñïåöèàëèñòîâ, ò, å, çíàíèÿ äîëæíû îòðàæàòü óðîâåíü íàèáîëåå êâàëèôèöèðîâàííûõ ñïåöèàëèñòîâ â äàííîé îáëàñòè.
Îáëàäàòü ãèáêîñòüþ, ò. å. ñèñòåìà ìîæåò íàðàùèâàòüñÿ ïîñòåïåííî â ñîîòâåòñòâèè ñ íóæäàìè áèçíåñà èëè çàêàç÷èêà.
Èìåòü ñèñòåìó îáúÿñíåíèé. Èíòåðåñóåò íå òîëüêî îòâåò, íî è êàê ìàøèíà ê íåìó ïðèøëà.
Îáëàäàòü âîçìîæíîñòüþ ïðîãíîçèðîâàíèÿ. Ñèñòåìà äîëæíà íå òîëüêî äàâàòü îòâåòû íà êîíêðåòíî ïîñòàâëåííûå âîïðîñû, íî è ïîêàçûâàòü êàê îíè èçìåíÿþòñÿ â íîâîé ñèòóàöèè.
Ïàìÿòü äîëæíà áûòü èíñòóöèîíàëüíîé, ò. å. ñïåöèàëèñòû óõîäÿò, èõ îïûò îñòàåòñÿ. Áàçà çíàíèé ñòàíîâèòñÿ ïîñòîÿííî îáíîâëÿþùèìñÿ ñïðàâî÷íèêîì íàèëó÷øèõ ñòðàòåãèé è ìåòîäîâ.
2.3.2 Îñíîâíûå òèïû çíàíèé.
Îïðåäåëåíèå çíàíèÿ êàê ïîíÿòèÿ - òðóäíàÿ ïðîáëåìà. Â îáëàñòè ÈÈ íàèáîëåå âàæíûå òèïû çíàíèé êëàññèôèöèðóþòñÿ ñëåäóþùèì îáðàçîì:
Îáúåêòû è èõ ñâîéñòâà.
Îáúåêòû - ýòî ñóùåñòâóþùèå â ïðèêëàäíîé îáëàñòè óíèâåðñàëüíûå ïîíÿòèÿ è èõ ïðåäñòàâèòåëè: æèâûå ñóùåñòâà, ïðåäìåòû èëè ìàòåðèàëû èëè àáñòðàêòíûå ïîíÿòèÿ.
Ñîáûòèÿ.
Ñîáûòèÿ îïèñûâàþò ó÷àñòèå îáúåêòîâ â äåÿòåëüíîñòè è ñèòóàöèÿõ. Ñîáûòèÿ õàðàêòåðèçóþò, íàïðèìåð, âðåìÿ, ìåñòî è ïðè÷èííî-ñëåäñòâåííûå îòíîøåíèÿ.
Äåéñòâèÿ.
Îáû÷íî èíòåëëåêòóàëüíàÿ äåÿòåëüíîñòü ïðåäïîëàãàåò òàêæå ñïîñîáíîñòü ñîâåðøàòü äåéñòâèÿ, ò. å. ïðîöåäóðíûå çíàíèÿ î òîì, êàêèì îáðàçîì ÷òî-òî äåëàåòñÿ, íàïðèìåð êàêèì îáðàçîì èç ñòàðûõ äàííûõ íà îñíîâå ïðàâèë âûâîäÿòñÿ íîâûå.
Ìåòàçíàíèÿ.
Ìåòàçíàíèÿ - ýòî çíàíèÿ î çíàíèÿõ è èõ èñïîëüçîâàíèè, íàïðèìåð ñïîñîáíîñòü âûáðàòü ìåòîä ðåøåíèÿ äëÿ ïðîáëåì ðàçíûõ òèïîâ.
Ïðåäñòàâëåíèå çíàíèé - ýòî îñíîâíàÿ îáëàñòü èññëåäîâàíèé ïî ÈÈ. Îñîáåííîñòè ïðåäñòàâëåíèÿ çíàíèé è ìåõàíèçì ëîãè÷åñêîãî âûâîäà îïðåäåëÿþò äâà îñíîâíûõ ýëåìåíòà ÝÑ - ÁÇ è ìàøèíó ëîãè÷åñêîãî âûâîäà. Ëþáàÿ ðàáîòàþùàÿ ñî çíàíèÿìè ïðîãðàììà äîëæíà êàêèì-òî îáðàçîì îòîáðàæàòü çíàíèÿ èç ñâîåé îáëàñòè ïðèìåíåíèÿ. Îáû÷íî äëÿ ýòîãî íå äîñòàòî÷íî ïðèìèòèâíûõ ñòðóêòóð äàííûõ, èñïîëüçóåìûõ â òðàäèöèîííîé îáðàáîòêå äàííûõ, òàêèõ êàê ÷èñëà, ìàññèâû, çàïèñè è äð., è ìåòîäîâ ðàáîòû ñ íèìè.  ÈÈ èñïîëüçóþòñÿ ñèìâîëüíûå ÿçûêè ïðåäñòàâëåíèÿ çíàíèé è ôîðìàëèçìû, ñòîÿùèå íà áîëåå âûñîêîì ïîíÿòèéíîì óðîâíå.
Ðàññìîòðèì âàæíåéøèå èç îáùèõ ìåòîäîâ è ôîðìàëèçìîâ, ðàçðàáîòàííûõ äëÿ ïðåäñòàâëåíèÿ è îáðàáîòêè çíàíèé:
Ëîãèêà.  ïðîãðàììàõ ÈÈ îñîáåííî ÷àñòî èñïîëüçóþòñÿ ðàçëè÷íûå ôîðìû ëîãèêè ïðåäèêàòîâ ïåðâîãî ïîðÿäêà. Îñíîâíîå ïðåèìóùåñòâî áàçèðóþùèõñÿ íà ëîãèêå ôîðìàëèçìîâ ñîñòîèò â ðîì, ÷òî îáû÷íî ñ èõ ïîìîùüþ ïðîùå îáåñïå÷èòü êîððåêòíîñòü ñòðóêòóð è ðåøåíèé ñèñòåìû, ÷åì ñ ïîìîùüþ äðóãèõ ñïîñîáîâ ïðåäñòàâëåíèÿ.
2. Ïðîäóêöèîííûå ñèñòåìû
Íàèáîëåå ðàñïðîñòðàíåííûì è ïðîñòûì äëÿ ïîíèìàíèÿ ÿâëÿåòñÿ ïðåäñòàâëåíèå çíàíèé ïðè ïîìîùè ïðàâèë ïðîäóêöèè âèäà «ÅÑËÈ <óñëîâèå>, ÒÎ <ñëåäñòâèå>». Òàêèå ñèñòåìû íàçûâàþò ïðîäóêöèîííûìè. Ýòè ïðàâèëà ïîõîæè íà óñëîâíûå îïåðàòîðû IF-THEN ÿçûêîâ ïðîãðàììèðîâàíèÿ, îäíàêî ñîâåðøåííî ïî äðóãîìó èíòåðïðåòèðóþòñÿ.
×åðåç ïðàâèëà ìîæíî îïðåäåëèòü, êàê ïðîãðàììà äîëæíà ðåàãèðîâàòü íà èçìåíåíèå äàííûõ. Ïðè ýòîì íå íóæíî çàðàíåå çíàòü áëîê-ñõåìó óïðàâëåíèÿ îáðàáîòêîé äàííûõ.  îáû÷íîé ïðîãðàììå ñõåìà ïåðåäà÷è óïðàâëåíèÿ è èñïîëüçîâàíèÿ äàííûõ ïðåäîïðåäåëåíèÿ ñàìîé ïðîãðàììîé. Âåòâëåíèå â òàêèõ ïðîãðàììàõ âîçìîæíî òîëüêî â çàðàíåå âûáðàííûõ òî÷êàõ. Äëÿ çàäà÷, õîä ðåøåíèÿ êîòîðûõ óïðàâëÿåòñÿ ñàìèìè äàííûìè, ãäå âåòâëåíèå ñêîðåå íîðìà, ÷åì èñêëþ÷åíèå, ýòîò ñïîñîá ìàëîýôôåêòèâåí.
 ñîñòàâ ïðîäóêöèîííûõ ñèñòåì âõîäÿò: áàçà çíàíèé (èñïîëüçóþò òåðìèí: «áàçà ïðàâèë»); ðàáî÷àÿ ïàìÿòü èëè áàçà äàííûõ; ìàøèíà âûâîäà (èñïîëüçóþò òåðìèí: «óïðàâëÿþùàÿ ñòðóêòóðà»). Áàçà ïðàâèë ñîäåðæèò ïðàâèëà ïðîäóêöèé. Ðàáî÷àÿ ïàìÿòü îòîáðàæàåò òåêóùåå ñîñòîÿíèå ïðîöåññà êîíñóëüòàöèè. Ñîäåðæèò òåêóùèå çíà÷åíèÿ ïåðåìåííûõ è ñîñòîÿíèå ìàøèíû âûâîäà. Ìàøèíà âûâîäà ÿâëÿþùàÿñÿ, ïî ñóòè, èíòåðïðåòàòîðîì ïðàâèë îïðåäåëÿåò ïîñëåäîâàòåëüíîñòü àêòèâèçàöèè ïðàâèë, âûïîëíÿåò èõ, ÷àñòè÷íî çàïîëíÿåò ðàáî÷óþ ïàìÿòü ïî ñîáñòâåííèé èíèöèàòèâå, è ÷àñòè÷íî ïî èíñòðóêöèÿì èç áàçû ïðàâèë. Ðàáîòà èíòåðïðåòàòîðà ïðàâèë ñîñòîèò èç öèêëè÷åñêè ïîâòîðÿþùèõñÿ ýòàïîâ. Ñíà÷àëà îïðåäåëÿåòñÿ, êàêèå ïðàâèëà ìîãóò âûïîëíÿòüñÿ â äàííûé ìîìåíò, äëÿ ÷åãî îòäåëüíûå ÷àñòè ïðàâèë ñðàâíèâàþòñÿ ñ èíôîðìàöèåé õðàíèìîé â ðàáî÷åé ïàìÿòè. Çàòåì îïðåäåëÿåòñÿ, êàêîå ïðàâèëî ñëåäóåò âûïîëíÿòü ïåðâûì. Êðèòåðèåì ìîæåò áûòü ïðèîðèòåò, ñêîðîñòü âûïîëíåíèÿ ïðàâèëà è íåêîòîðûå äðóãèå âåùè. Çàòåì ïðàâèëî èñïîëíÿåòñÿ, ïîä ÷åì ïîäðàçóìåâàåòñÿ èçìåíåíèå ðàáî÷åé îáëàñòè, âíóòðåííèõ ïåðåìåííûõ ìàøèíû âûâîäà è îêðóæåíèÿ.
Ñóùåñòâóåò äâà îñíîâíûõ ìåòîäà ïðîñìîòðà è âûïîëíåíèÿ ïðàâèë. Ýòî ïðÿìîé è îáðàòíûé âûâîäû.
Ïðÿìîé âûâîä, óïðàâëÿåìûé ïîñûëêàìè ïðàâèë, ïîõîæ íà âûïîëíåíèå çàöèêëåííîé ïðîãðàììû, íà àëãîðèòìè÷åñêîì ÿçûêå, ïðåäñòàâëÿþùåé ñîáîé íàáîð óñëîâíûõ îïåðàòîðîâ. Ïðè ïðÿìîì âûâîäå âûïîëíÿþòñÿ òîëüêî òå ïðàâèëà, ïîñûëêè êîòîðûõ ïðèíèìàþò èñòèííîå çíà÷åíèå. Ïðîöåññ ïîèñêà è âûïîëíåíèÿ ïðàâèë ïðîäîëæàåòñÿ äî òåõ ïîð, ïîêà íå áóäåò äîñòèãíóòà öåëü êîíñóëüòàöèè èëè íå áóäóò èñ÷åðïàíû âñå ïðàâèëà è íè â îäíîì ïîñûëêà íå îêàæåòñÿ èñòèííîé.
Ïðè îáðàòíîì âûâîäå, óïðàâëÿåìîì ñëåäñòâèÿìè èëè öåëÿìè ïðàâèë (èñïîëüçóåòñÿ äëÿ ñîçäàíèÿ ÝÑ äèàãíîñòèêè è èíòåðïðåòàöèè), ïðîèñõîäèò äâèæåíèå îò ñëåäñòâèé ê ïîñûëêàì. Ìàøèíà âûâîäà âûáèðàåò î÷åðåäíóþ íåèçâåñòíóþ ïåðåìåííóþ è ïûòàåòñÿ ïðèñâîèòü åé êàêîå-òî çíà÷åíèå. Äëÿ ýòîãî îíà ïðîñìàòðèâàåò âñå ïðàâèëà, â THEN ïîëå êîòîðûõ ïðèñóòñòâóåò ýòà ïåðåìåííàÿ è ïðîâåðÿåò ïîñûëêó ïðàâèëà. Åñëè â ïîñûëêå ïðàâèëà ïðèñóòñòâóþò íå îïðåäåëåííûå ïåðåìåííûå, òî àíàëîãè÷íûì ñïîñîáîì ìàøèíà âûâîäà ïûòàåòñÿ íàéòè èõ. Åñëè ïðàâèëî ñ èñêîìîé ïåðåìåííîé íå âûïîëíÿåòñÿ, òî èùóòñÿ äðóãèå ïðàâèëà, ñîäåðæàùèå â THEN ïîëå ýòó ïåðåìåííóþ.
Âîçìîæåí òàê æå ñìåøàííûé âûâîä.
3. Ñåìàíòè÷åñêèå ñåòè.  ñåìàíòè÷åñêîé ñåòè ïîíÿòèÿ è êëàññû, à òàêæå îòíîøåíèÿ è ñâÿçè ìåæäó íèìè ïðåäñòàâëåíû â âèäå ïîèìåíîâàííîãî ãðàôà. Êàæäûé óçåë ñîäåðæèò ññûëêó íà îäèí èëè íåñêîëüêî äðóãèõ óçëîâ. Ññûëêà ïðåäñòàâëÿåò ñîáîé òàê æå ïîíÿòèå, óñòàíàâëèâàþùåå âçàèìîñâÿçü ìåæäó óçëàìè. Ïðåäïîëàãàåòñÿ, ÷òî ïîíÿòèé-ññûëîê ìåíüøå ÷åì óçëîâ ñåòè, è ñ ïîìîùüþ ýòîãî îãðàíè÷åííîãî êðóãà ïîíÿòèé ìîæíî îïðåäåëèòü êàæäûé óçåë ñåòè ÷åðåç óçëû íèæíåãî óðîâíÿ, ñîäåðæàùèå îáîáùåííûå ïîíÿòèÿ.
Ïðåèìóùåñòâà òàêîãî ôîðìàëèçìà çàêëþ÷àþòñÿ â åãî íàãëÿäíîñòè è íåïîñðåäñòâåííîé ñâÿçàííîñòè ïîíÿòèé ÷åðåç ñåòü, êîòîðàÿ ïîçâîëÿåò áûñòðî íàõîäèòü ñâÿçè ïîíÿòèé è íà ýòîé îñíîâå óïðàâëÿòü ðåøåíèÿìè.
4. Ôðåéìû. Ýòî ÷àñòíûé ñëó÷àé ñåìàíòè÷åñêèõ ñåòåé. Ýòî ìåòîä ïðåäñòàâëåíèÿ çíàíèé, êîòîðûé ñâÿçûâàåò ñâîéñòâà ñ óçëàìè , ïðåäñòàâëÿþùèìè ïîíÿòèÿ è îáúåêòû. Ñâîéñòâà îïèñûâàþòñÿ àòðèáóòàìè (íàçûâàåìûìè ñëîòàìè) è èõ çíà÷åíèÿìè. Èñïîëüçîâàíèå ôðåéìîâ ñ èõ àòðèáóòàìè è âçàèìîñâÿçÿìè ïîçâîëÿåò õðàíèòü çíàíèÿ î ïðåäìåòíîé îáëàñòè â ñòðóêòóðèðîâàííîì âèäå, ïðåäñòàâëÿòü â ÁÇ àáñòðàêöèè è àíàëîãèè.
Ñ îïåðàöèÿìè ïðèñâàèâàíèÿ çíà÷åíèé ôðåéìàì è äðóãèìè îïåðàöèÿìè ìîæíî ñî÷åòàòü ñëîæíûå ïîáî÷íûå äåéñòâèÿ è âçàèìîâëèÿíèÿ.
Èñïîëüçóþòñÿ è äðóãèå ñâÿçàííûå ñ êîíêðåòíûì ïðèìåíåíèåì ñïîñîáû ïðåäñòàâëåíèÿ, íî îíè ìåíåå ðàñïðîñòðàíåíû è, êàê ïðàâèëî, íå ãîäÿòñÿ äëÿ èñïîëüçîâàíèÿ â îáùåì ñëó÷àå.
Íå âñåãäà ìîæíî îäíîçíà÷íî ñêàçàòü, êàêîé ôîðìàëèçì ïðåäñòàâëåíèÿ èñïîëüçîâàí â ñèñòåìå.  ðàìêàõ îäíîé è òîé æå ñèñòåìû äëÿ ïðåäñòàâëåíèÿ ðàçëè÷íûõ âèäîâ çíàíèé ìîãóò áûòü èñïîëüçîâàíû ðàçëè÷íûå ôîðìàëèçì.
Ââåäåíèå.
 ïîñëåäíåå âðåìÿ îñîáûé èíòåðåñ ïðèîáðåëà òåõíîëîãèÿ èñêóññòâåííîãî èíòåëëåêòà (ÈÈ). Âû÷èñëèòåëüíûå óñòðîéñòâà, îáëàäàþùèå â òîé èëè èíîé ñòåïåíè «èíòåëëåêòóàëüíûìè ñïîñîáíîñòÿìè, ñòàëè âñòðàèâàòü äàæå â áûòîâûå ïðèáîðû.
Ñ ðàçâèòèåì ÈÈ ïîÿâèëîñü áîëüøîå êîëè÷åñòâî ñïåöèàëèçèðîâàííûõ ÿçûêîâ ïðîãðàììèðîâàíèÿ: Ëèñï, Ïðîëîã, Ëîãî, Êîíèâåð è äðóãèå. Îíè ïîñòîÿííî ðàçâèâàëèñü, îêàçûâàëè âçàèìíîå âëèÿíèå äðóã íà äðóãà, ìíîãèå, íå äîëãî ïðîñóùåñòâîâàâ, èñ÷åçàëè, íî ïîðîæäàëè èäåè, êîòîðûå äàâàëè íîâûé òîë÷îê ê ìîùíîìó ÿçûêîòâîð÷åñòâó â ñâîåé îáëàñòè.
Âåäóùåå ìåñòî ñðåäè ÿçûêîâ ÈÈ çàíèìàåò Ëèñï, à òî÷íåå, ìíîæåñòâî åãî äèàëåêòîâ. Äëèòåëüíîå âðåìÿ íå ñóùåñòâîâàëî ñòàíäàðòà ýòîãî ÿçûêà. Íî òàêîå ðàçíîîáðàçèå íå äîñòàâëÿëî íåïðèÿòíîñòåé, ïîêà ÿçûê èñïîëüçîâàëñÿ ëèøü â èññëåäîâàíèÿõ. Äàæå íàïðîòèâ, èäåè Ëèñïà òàêèì îáðàçîì ìîãëè ïîñòîÿííî ðàçâèâàòüñÿ è ïîýòîìó â ÿçûê âîøëè íîâûå, îêàçàâøèåñÿ ïîëåçíûìè ñâîéñòâà, â òîì ÷èñëå è èç äðóãèõ ÿçûêîâ. Îäíàêî íåäîñòàòêè, âîçíèêàþùèå èç-çà íåñîâìåñòèìîñòè ìåæäó äèàëåêòàìè ñòàíîâèëèñü âñå áîëåå ñóùåñòâåííûìè ïî ìåðå ðîñòà ÷èñëà ïðàêòè÷åñêèõ ïðèëîæåíèé Ëèñïà.
 êîíå÷íîì ñ÷åòå ñòàíäàðò ÿçûêà áûë ðàçðàáîòàí. Èì ñòàë Common Lisp. Ýòîò äèàëåêò ñîäåðæèò âàæíåéøèå ÷åðòû ñîâðåìåííûõ Ëèñï-ñèñòåì: ðàçíîîáðàçíûå òèïû äàííûõ, âîçìîæíîñòè îïðåäåëåíèÿ òèïîâ, óïðàâëÿþùèå ñòðóêòóðû, ìàêðîñû ñ ïîìîùüþ êîòîðûõ ëåãêî îïðåäåëÿþòñÿ íîâûå ñèíòàêñè÷åñêèå ôîðìû, ôóíêöèîíàëû, çàìûêàíèÿ, ïîñëåäîâàòåëüíîñòè, à òàêæå ñèíòàêñè÷åñêèé èíòåðïðåòàòîð è òðàíñëÿòîð. Ìîæíî ñêàçàòü, ÷òî Common Lisp ñîäåðæèò ïî÷òè âñå, ÷òî íà ñåãîäíÿøíèé äåíü ìîãóò äàòü äðóãèå èçâåñòíûå ÿçûêè ïðîãðàììèðîâàíèÿ, è êðîìå òîãî, îí ïðåäóñìàòðèâàåò ñðåäñòâà äëÿ ðàñøèðåíèÿ.
Îñîáåííîñòÿì ÿçûêà Ëèñï è ïîñâÿùåíà äàííàÿ äèïëîìíàÿ ðàáîòà, öåëüþ êîòîðîé ÿâëÿåòñÿ ðàçðàáîòêà ëàáîðàòîðíûõ ðàáîò ïî êóðñó «Ñèñòåìû èñêóññòâåííîãî èíòåëëåêòà» äëÿ ñòóäåíòîâ ñïåöèàëüíîñòè «Êîìïüþòåðíûå è èíòåëëåêòóàëüíûå ñèñòåìû è ñåòè», à òàêæå ðàñøèðåíèå Ëèñï-áèáëèîòåê äëÿ èíòåãðèðîâàííîé ñðåäû dlisp.
 ïåðâîé ÷àñòè äèïëîìíîé ðàáîòû ïðîâåäåí àíàëèç ÿçûêîâ ïðîãðàììèðîâàíèÿ èñêóññòâåííîãî èíòåëëåêòà. Îñîáîå ìåñòî óäåëåíî àíàëèçó äèàëåêòîâ ÿçûêà Ëèñï.  êîíöå ðàçäåëà ïîäâîäÿòñÿ èòîãè àíàëèçà è îáîñíîâûâàåòñÿ âûáîð êîíêðåòíîãî äèàëåêòà Ëèñïà è âûðàáàòûâàåòñÿ ïîñòàíîâêà çàäà÷è.
Âòîðàÿ ÷àñòü äèïëîìíîé ðàáîòû ïîñâÿùåíà êîíêðåòíî ÿçûêó Ëèñï. Çäåñü ðàññìàòðèâàþòñÿ îáùèå îñîáåííîñòè è ïîíÿòèÿ ÿçûêà, ïðèñóùèå âñåì äèàëåêòàì Ëèñïà.
Òðåòüÿ ÷àñòü ñîäåðæèò êîìïëåêñ ëàáîðàòîðíûõ ðàáîò, âêëþ÷àþùèé â ñåáÿ òåêñòû ëàáîðàòîðíûõ ðàáîò, çàäàíèÿ è êîíòðîëüíûå âîïðîñû, ïîçâîëÿþùèå îöåíèòü óðîâåíü çíàíèé ñòóäåíòà ïî êàæäîé òåìå, à òàêæå ïðèìåðû âûïîëíåíèÿ íåêîòîðûõ çàäàíèé.
 ÷åòâåðòûé ðàçäåëå äèïëîìíîé ðàáîòû çàòðàãèâàþòñÿ âîïðîñû òåõíèêè áåçîïàñíîñòè, à òî÷íåå, âîïðîñû èíæåíåðíîé ïñèõîëîãèè, ïðèìåíèòåëüíî ê îòðàáîòêå ïðîãðàìì.
 çàêëþ÷åíèè ðàáîòû ïîäâîäÿòñÿ èòîãè ïðîäåëàííîé ðàáîòû.
1.5 Ïîñòàíîâêà çàäà÷è.
 ðåçóëüòàòå ðàññìîòðåíèÿ ñîâðåìåííûõ ïðîãðàììíûõ ñðåäñòâ ÑÈÈ ìîæíî ñäåëàòü âûâîä, ÷òî âàæíóþ ðîëü â ýòîé îáëàñòè èãðàåò ÿçûê ïðîãðàììèðîâàíèÿ Ëèñï. Ïîýòîìó öåëåñîîáðàçíî ñòóäåíòàì ñïåöèàëüíîñòè «Êîìïüþòåðíûå è èíòåëëåêòóàëüíûå ñèñòåìû è ñåòè» â ðàìêàõ êóðñà «Ñèñòåìû èñêóññòâåííîãî èíòåëëåêòà» îñâîèòü ýòîò ÿçûê ïðîãðàììèðîâàíèÿ.
Íà îñíîâàíèè ïðîâåäåííîãî àíàëèçà ñóùåñòâóþùèõ äèàëåêòîâ ÿçûêà Ëèñï äëÿ åãî èçó÷åíèÿ â êóðñå ëàáîðàòîðíûõ ðàáîò áûë âûáðàí MuLisp.
Öåëü äàííîé äèïëîìíîé ðàáîòû ìîæíî ñôîðìóëèðîâàòü ñëåäóþùèì îáðàçîì:
Îçíàêîìèòüñÿ ñ îñíîâàìè ïðîãðàììèðîâàíèÿ íà ÿçûêå Ëèñï.
Èçó÷èòü îñîáåííîñòè ñðåäû MuLisp è dlisp.
Ðàçðàáîòàòü êîìïëåêñ ëàáîðàòîðíûõ ðàáîò ïî, ïîçâîëÿþùèõ îñâîèòü îñíîâíûå ñðåäñòâà ÿçûêà MuLisp:
áàçîâûå ôóíêöèè ÿçûêà;
ñðåäñòâà ÿçûêà äëÿ ðàáîòû ñ ÷èñëàìè;
ôóíêöèè îïðåäåëÿåìûå ïîëüçîâàòåëåì;
îðãàíèçàöèÿ âû÷èñëåíèé;
ðåêóðñèÿ â Ëèñïå;
ôóíêöèîíàëû è ìàêðîñû;
òèïû äàííûõ èñïîëüçóåìûõ â MuLisp.
Ðàñøèðèòü áèáëèîòåêó ôóíêöèé èíòåãðèðîâàííîé ñðåäû dlisp.
Ðàçðàáîòàòü çàäàíèÿ è êîíòðîëüíûå âîïðîñû ê ëàáîðàòîðíûì ðàáîòàì.
Çàêëþ÷åíèå.
 ðåçóëüòàòå âûïîëíåíèÿ äèïëîìíîé ðàáîòû áûëî ïðîäåëàíî ñëåäóþùåå:
Ïðîâåäåí àíàëèç ÿçûêîâ ïðîãðàììèðîâàíèÿ ÈÈ, à òàêæå äèàëåêòîâ è ñèñòåì Ëèñïà.
 êà÷åñòâå òåîðåòè÷åñêèõ ñâåäåíèé ðàññìîòðåíû îñíîâíûå îñîáåííîñòè è âîçìîæíîñòè ÿçûêà Ëèñï.
Ðàçðàáîòàí êîìïëåêñ ëàáîðàòîðíûõ ðàáîò ïî èçó÷åíèþ ÿçûêà MuLisp äëÿ ñòóäåíòîâ ñïåöèàëüíîñòè «Êîìïüþòåðíûå è èíòåëëåêòóàëüíûå ñèñòåìû è ñåòè», èìåþùèõ ñëåäóþùèå òåìû:
Ëàáîðàòîðíàÿ ðàáîòà ¹1.
Òåìà: Îçíàêîìèòåëüíàÿ ðàáîòà â ñðåäå MuLisp. Áàçîâûå ôóíêöèè Ëèñïà. Ñèìâîëû, ñâîéñòâà ñèìâîëîâ. Ñðåäñòâà ÿçûêà äëÿ ðàáîòû ñ ÷èñëàìè.
Öåëü: Îñâîèòü ñðåäó MuLisp. Èçó÷èòü áàçîâûå ôóíêöèè Ëèñïà, ñèìâîëû è èõ ñâîéñòâà, à òàêæå ñðåäñòâà äëÿ ðàáîòû ñ ÷èñëàìè.
Ëàáîðàòîðíàÿ ðàáîòà ¹2.
Òåìà: Îïðåäåëåíèå ôóíêöèé. Ôóíêöèè ââîäà-âûâîäà. Âû÷èñëåíèÿ, èçìåíÿþùèå ñòðóêòóðó.
Öåëü: Ïîëó÷èòü íàâûêè â íàïèñàíèè ôóíêöèé íà Ëèñïå. Èçó÷èòü ôóíêöèè ââîäà- âûâîäà.
Ëàáîðàòîðíàÿ ðàáîòà ¹3.
Òåìà: Îðãàíèçàöèÿ âû÷èñëåíèé â Ëèñïà.
Öåëü: Èçó÷èòü îñíîâíûå ôóíêöèè è èõ îñîáåííîñòè äëÿ îðãàíèçàöèè âû÷èñëåíèé â Ëèñïå.
Ëàáîðàòîðíàÿ ðàáîòà ¹4.
Òåìà: Ðåêóðñèÿ â Ëèñïå. Ôóíêöèîíàëû è ìàêðîñû.
Öåëü: Èçó÷èòü îñíîâû ïðîãðàììèðîâàíèÿ ñ ïðèìåíåíèåì ðåêóðñèè. Íàó÷èòñÿ ðàáîòàòü ñ ôóíêöèîíàëàìè è ìàêðîñàìè.
Ëàáîðàòîðíàÿ ðàáîòà ¹5.
Òåìà: Òèïû äàííûõ, èñïîëüçóåìûå â MuLisp. Òî÷å÷íîå ïðåäñòàâëåíèå ñïèñêîâ. Ïðåäñòàâëåíèå çíàíèé.
Öåëü: Èçó÷èòü îñíîâíûå òèïû äàííûõ MuLisp. Ðàçîáðàòüñÿ ñ òî÷å÷íîé íîòàöèåé ñïèñêîâ.
Ëàáîðàòîðíàÿ ðàáîòà ¹6.
Òåìà: Èçó÷åíèå ó÷åáíîé âåðñèè èíòåãðèðîâàííîé ñðåäû dlisp. Ðàñøèðåíèå áèáëèîòåêè ôóíêöèé dlisp.
Öåëü: Îçíàêîìèòüñÿ ñ ó÷åáíîé âåðñèåé èíòåãðèðîâàííîé ñðåäû dlisp. Èçó÷èòü åå âîçìîæíîñòè è îñîáåííîñòè. Ðàñøèðèòü áèáëèîòåêó ôóíêöèé dlisp.
Ðàçðàáîòàíû çàäàíèÿ, òðåáóþùèå èíäèâèäóàëüíîé ðàáîòû ñòóäåíòà è êîíòðîëüíûå âîïðîñû, ïîçâîëÿþùèå îöåíèòü óðîâåíü çíàíèé ñòóäåíòà ïî êàæäîé òåìå.
×àñòü ëàáîðàòîðíûõ ðàáîò áûëà âûïîëíåíà ñòóäåíòàìè 5-ãî êóðñà ñïåöèàëüíîñòè «Êîìïüþòåðíûå è èíòåëëåêòóàëüíûå ñèñòåìû è ñåòè», ïîñëå ÷åãî áûëè ïðîðàáîòàíû (èçó÷åíû è èñïðàâëåíû) íåäîñòàòêè, à òàê æå ðàñøèðåí êðóã âîïðîñîâ, ðàñêðûâàåìûõ â ëàáîðàòîðíûõ ðàáîòàõ.
Ëàáà ïî èíôîðìàòèêå
Ëàáà ïî èíôîðìàòèêå
Ëàáàðàòîðíàÿ ðàáîòà ¹4
Ëàáàðàòîðíàÿ ðàáîòà ¹8
Ëàáîðàòîðíàÿ ¹6 âàðèàíò ¹13 ïî èíôîðìàòèêå, âûïîëíåííàÿ ñ èñïîëüçîâàíèåì ïîäïðîãðàìì-ïðîöåäóð è ïîäïðîãðàìì-ôóíêöèé
Ëàáîðàòîðíàÿ ðàáîòà ¹ 16
Ëàáîðàòîðíàÿ ðàáîòà ¹1 ïî Delphi
Ëàáîðàòîðíàÿ ðàáîòà ¹11
Ëàáîðàòîðíàÿ ðàáîòà ¹12
Ëàáîðàòîðíàÿ ðàáîòà ¹5
Copyright (c) 2024 Stud-Baza.ru Ðåôåðàòû, êîíòðîëüíûå, êóðñîâûå, äèïëîìíûå ðàáîòû.