lug-bg: functional programming - SECD
- Subject: lug-bg: functional programming - SECD
- From: g_georgiev.sz@xxxxxx (G. Georgiev (Skeleta))
- Date: Thu, 25 Jul 2002 09:00:52 +0300
Çäðàâåéòå LUG-BG,
Òîâà ïèñìî å ðåêëàìà çà ìîÿ íîâ ïàêåò çà Linux,
íàðå÷åí 'SECD Mania'.
Áîÿí Êðîñíîâ ìè îñèãóðè õîñòèíã íà àäðåñ:
http://skelet.ludost.net
Åäèí ïî-áàâåí mirror e http://skelet.hit.bg/SECD
Ïàêåòúò å íåùî êàòî íàäñòðîéêà íà ôóíäàìåíòàëíàòà êíèãà:
"Functional Programming: Application and Implementation",
Peter Henderson, 1980, Prentice Hall
 Áúëãàðèÿ å ðàçïðîñòðàíåí ðóñêèÿ ïðåâîä îò 1983ã.
SECD å âèðòóàëåí ïðîöåñîð çà ðàáîòà ñúñ ñïèñúöè, èçîáðåòåí
ïðåç 1964ã. Êðúñòåí å íà èìåíàòà íà 4-òå ñè ðåãèñòúðà S E C è D.
Âñúùíîñò ðåãèñòúðà D å èçëèøåí (óäîáåí å ïðè çàïîçíàâàíå ñ
ìàøèíàòà, íî ôóíêöèèòå ìó ìîãàò äà ñå ïîåìàò îò S).
SECD ïðîöåñîðà ñå ïîëçâà çà èçïúëíåíèå íà ÷èñòî ôóíêöèîíàëíè
ïðîãðàìè (ðàçáèðà ñå òðÿáâà äà èìàòå êîìïèëàòîð çà LISP èëè
äðóã ôóíêöèîíàëåí åçèê). Ïðåç 1975 ñå îêàçàëî, ÷å ñåìàíòèêàòà ìó
ñúîòâåòñòâà íà äåôèíèðàíàòà ïðåç 1941 èç÷èñëèìîñò, íàðå÷åíà
lambda calculus.
Ïàêåòà ïðåäëàãà ñåðèÿ îò âàðèàíòè íà SECD àðõèòåêòóðà, çàåäíî
ñúñ ñúîòâåòíèÿ LISP êîìïèëàòîð (íàïèñàí íà LISP) è èçïúëíèìèÿ
êîä íà êîìïèëàòîðà (òåêñòîâ ôàéë ñ èíñòðóêöèè çà SECD). Ïî-
íàïðåäíàëèòå âàðèàíòè ñúäúðæàò è ïðèìåðíè ïðîãðàìè.
SECD å ìîæå áè íàé-êðàñèâàòà è åëåãàíòíà êîìïþòúðíà êîíñòðóêöèÿ
èçìèñëÿíà íÿêîãà.
Âêëþ÷âàíåòî íà ôóíäàìåíòàëíè ïîíÿòèÿ â SECD ìîäåëà å ó÷óäâàùî
êðàòêî è åôåêòèâíî. Íàïðèìåð ïîñëåäíàòà ìàøèíêà îò ñåãàøíàòà âåðñèÿ
íà ïàêåòà ìè âêëþ÷âà:
- 33K ñîðñîâå íà Pascal, îïèñâàùè SECD-àðõèòåêòóðàòà.
- 10Ê òåêñò íà êîìïèëàòîðà íà LISP.
- 13K êîä íà êîìïèëàòîðà.
Òåçè íåùà îñèãóðÿâàò ñëåäíèòå ñâîéñòâà íà äåôèíèðàíèÿ LISP:
- Tail Recursion (ñïåñòÿâàíå íà èçëèøíèòå call èíñòðóêöèè)
- Lazy evaluations (ðàáîòà ñ áåçêðàéíè ñòðóêòóðè, äåôèíèðàíå
íà ôóíêöèè îò òèïà íà OR/AND íà ïîòðåáèòåëñêî íèâî).
- èçïîëçâàíå íà ñòàòè÷íè áèáëèîòåêè
- ìíîãîçàäà÷íîñò è âðåìåäåëåíå
- ìåõàíèçúì çà ïðåäàâàíå íà ñúîáùåíèÿ ìåæäó ïðîöåñèòå
Îñâåí òóé ñàìàòà SECD ìàøèíà èìà ñëåäíèòå ñâîéñòâà:
- Reference Count è Mark/Release ñúáèðà÷è íà áîêëóêà
(åäèíèÿ äîïúëâà äðóãèÿ)
- Îïòèìèçàöèè çà ìèíèìèçèðàíå íà cons-îâåòå
(íåùî êàòî ïðîöåñîðåí êåø)
- Ìíåìîíè÷íî ïðåäñòàâÿíå íà êîäà, òàêà ÷å êîìïèëèðàíàòà
ïðîãðàìà ìîæå äà ñå ÷åòå óäîáíî.
Ðàçáèðà ñå, ìíîãî íåùà ëèïñâàò â ìîèòå ìàøèíêè, íî òîçè
ïàêåò å ïî-ñêîðî äóõîâíà ÷åêèÿ, à íå ðåàëíî ïðèëîæèìà
ïðîãðàìà.
 ìîìåíòà ðàáîòÿ íàä ðåàëèçàöèÿòà íà àñèíõðîííè âõîäíî/
èçõîäíè îïåðàöèè.
Ïàêåòà å ïîäõîäÿù çà òåçè, êîèòî ñå èíòåðåñóâàò îò
ôóíêöèîíàëíî ïðîãðàìèðàíå è çà âñè÷êè, êîèòî èñêàò äà
äîñòèãíàò äúëáèíèòå íà êîìïþòúðíèòå íàóêè.
Àêî ðàçïîëàãàòå ñ êíèãàòà íà Õåíäåðñúí, íå ñå íóæäàåòå
îò äîïúëíèòåëíà äîêóìåíòàöèÿ. Àêî îáà÷å ÿ íÿìàòå, ìîæå
áè ùå ñå íàëîæè äà ñå íàïðàâè íÿêàêâî ïî-ñåðèîçíî âúâåäåíèå
â òåìàòà.
Ùå ñúì ìíîãî áëàãîäàðåí çà âñåêè îòçèâ, êðèòèêà èëè
ïîìîù !
--
Skelet
------ http://skelet.hit.bg/
============================================================================
A mail-list of Linux Users Group - Bulgaria (bulgarian linuxers).
http://www.linux-bulgaria.org - Hosted by Internet Group Ltd. - Stara Zagora
To unsubscribe: http://www.linux-bulgaria.org/public/mail_list.html
============================================================================
|