O mașină Lisp este o mașină de calcul de uz general a cărei arhitectură este optimizată pentru execuția eficientă a programelor Lisp .
Echivalent cu o mașină Turing (abstractă) (și cu un computer personal convențional ) după criteriul reductibilității polinomiale .
Deși mașinile Lisp nu au fost niciodată utilizate pe scară largă (aproximativ 7.000 în întreaga lume în 1988), multe dintre ideile și tehnologiile software care sunt comune astăzi au fost dezvoltate pentru prima dată folosind mașini Lisp, cum ar fi cele utilizate în centrul de cercetare Xerox PARC :
Mașinile Lisp au oferit o oportunitate largă de dezvoltare experimentală în informatică . Pe baza dezvoltării unor astfel de mașini, a fost creată o nouă generație de stații de lucru inginerești .
În 1973, programatorii de laborator MIT AI Richard Greenblatt și Thomas Knight au început să lucreze la ceea ce va deveni Proiectul MIT Lisp Machine. Inițial a fost un hardware de computer adaptat pentru a efectua unele dintre operațiunile de bază ale Lisp pe o arhitectură de etichete pe 24 de biți. Era greoi să procesezi programele Lisp în mod programatic, deoarece variabilele Lisp sunt tastate în timpul execuției, nu în timpul compilării, iar din cauza verificărilor și a ramificării, simpla adăugare a două variabile ar putea dura până la cinci minute pe computerele normale. Mașina a efectuat și colectarea de gunoi secvențială (numită „ Arena ”) . La testarea în mașinile Lisp, s-au folosit și metode mai tradiționale în paralel - dacă testele simultane au eșuat, atunci rezultatul a fost resetat și recalculat; în multe cazuri a însemnat accelerare. Această aproximare a fost folosită și în testarea limitelor matricei și în alte operațiuni de gestionare a memoriei (nu neapărat colectarea gunoiului sau legată de matrice).
Verificarea tipului a fost ulterior îmbunătățită și automatizată atunci când dimensiunea tradițională a cuvântului de 32 de biți a fost crescută la 36 de biți pe mașinile Symbolics 3600 Lisp și chiar la 40 de biți sau mai mult (de obicei, biții suplimentari au fost utilizați pentru codurile de corectare a erorilor). Primul bloc de biți suplimentari a stocat tipul de date (care a făcut ca arhitectura să fie etichetată), iar restul au fost folosiți pentru codificarea CDR (atunci când elementele obișnuite dintr-o listă conectată au fost comprimate la aproximativ jumătate), simplificând colectarea gunoiului cu un ordin de mărime. O îmbunătățire suplimentară au fost două instrucțiuni care au suportat funcțiile Lisp într-un mod special, reducând costul apelării funcțiilor la 20 de cicluri (în unele implementări ale Symbolics).
Prima mașină, numită după operatorul de construcții de listă din Lisp, a fost CONS . Este adesea numită incorect „mașina lui Knight”, posibil din cauza disertației lui Knight despre ea. Versiunea sa îmbunătățită - CADR - se bazează pe aproximativ aceeași arhitectură. Aproximativ 25 de prototipuri CADR au fost vândute pentru aproximativ 50 000 de dolari . A devenit popular printre dezvoltatorii entuziaști și multe programe populare au fost portate rapid la el (de exemplu, Emacs în 1975 ). La Conferința de Inteligență Artificială a MIT din 1978 , a fost atât de bine primit încât DARPA și-a finanțat dezvoltarea.
La un anumit moment al creșterii exponențiale a puterii de calcul ( legea lui Moore ), suportul hardware pentru calculul lambda nu mai avea sens economic pentru computerele de consum, iar producătorii de mașini Lisp au părăsit piața.
Lisp | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Caracteristici |
| ||||||||||||||
Implementări |
| ||||||||||||||
Hardware |
| ||||||||||||||
Comunitate |
| ||||||||||||||
|