MacLisp

MACLISP (și Maclisp ) este un dialect al limbajului de programare Lisp , dezvoltat la laboratorul de inteligență artificială MIT , care la acea vreme (sfârșitul anilor 60 ) se numea Project MAC (de unde provenea de fapt prefixul din numele limbajului, există nicio legătură cu computerele Macintosh de la Apple aici; același prefix în nume și din același motiv are, de exemplu, sistemul de algebră computerizată Macsyma )

Deși limbajul este foarte notabil, în special pentru influențarea multor lisps ulterioare, cum ar fi Zeta Lisp și Common Lisp , și fiind folosit pentru primele implementări ale Macsyma , SHRDLU și Multics Emacs , nu este foarte folosit nicăieri astăzi.

Creare

Începând cu începutul anilor 1960, MIT a lansat proiectul MAC, care a cercetat utilizarea computerelor în modul interactiv și a dezvoltat limbaje de programare și sisteme de operare adecvate pentru astfel de activități. MacLisp (denumit în continuare Maclisp) a fost dezvoltat ca parte a acestui proiect, bazat pe sistemul Lisp 1.5. În 1964, a fost creată prima implementare MacLisp pentru PDP-6, în 1968 pentru PDP-10, iar acesta din urmă a lucrat atât sub controlul sistemului de operare ITS, dezvoltat în laboratorul de inteligență artificială MIT, cât și sub TOPS- 10 / 20 OS - sistemul de operare standard pentru PDP-10/20 din DEC. A fost creată și o implementare pentru computerul GE-600 care rulează sistemul de operare Multics .

Caracteristici

Maclisp a fost un sistem extrem de puternic pentru vremea lui. Apariția sa a reflectat toată varietatea de sarcini care au fost rezolvate în proiectul MAC și în general în cercetările privind inteligența artificială la MIT. Pe lângă sarcinile tradiționale de procesare a caracterelor, McLisp a fost folosit pentru dezvoltare într-o mare varietate de domenii. Astfel, munca în domeniul roboticii și al procesării vorbirii și a imaginilor a necesitat o eficiență pur computațională ridicată din partea sistemului și, de asemenea, a condus la implementarea unei game largi de tipuri de date matematice, inclusiv vectori, matrice și câmpuri de biți. Sistemul includea tipuri și operații aritmetice cu o precizie nelimitată (bazate pe algoritmi dezvoltați de D. Knuth ), care în unele cazuri fac posibilă simplificarea semnificativă a soluționării unor probleme matematice, deși în detrimentul unor costuri de calcul semnificative. A fost implementată o bibliotecă puternică de funcții matematice.

În ceea ce privește contribuția la dezvoltarea limbajului în sine, se remarcă macrocomenzile de citire și tabelele de lectură apărute în MacLisp, care au făcut posibilă „terminarea” limbajului, extinzându-l în direcția corectă cu noi structuri. Facilități de tratare a excepțiilor și procesare paralelă au fost, de asemenea, incluse în limbaj.

Maclisp a fost primul sistem Lisp pentru care a fost implementat un compilator extrem de eficient (înainte de aceasta, sistemele Lisp nu se puteau lăuda cu performanțe de calcul ridicate și, parțial, din acest motiv, Lisp a fost tratat ca „un limbaj pentru oameni de știință, nu pentru industrie”). Mai mult, eficiența traducerii a fost atinsă prin utilizarea unor metode specifice Lisp: programul sursă a fost tradus într-o formă intermediară orientată pe mașină, care arăta ca liste Lisp (așa-numitul LAP - List Assembly Program). Codul mașinii în această formă a fost supus optimizării prin transformări formale, în urma cărora programul obiect rezultat pentru sarcini de calcul s-a dovedit a fi, de regulă, mai eficient decât un program Fortran similar compilat de cei mai buni compilatori Fortran pentru aceeasi platforma.

Funcționarea sistemului

Sistemul MAC Lisp a fost exploatat și dezvoltat până în anii 1980, având un impact semnificativ asupra implementărilor Lisp apărute în anii 1960-1980, inclusiv devenind una dintre sursele pentru proiectarea standardului Common Lisp . Funcționarea sistemului a încetat practic în anii 1980, odată cu încetarea utilizării calculatoarelor PDP-10/20 pe care se baza inițial. Multe au supraviețuit sistemului dezvoltat pe Maclisp în cadrul proiectului MAC , sistemul de calcul simbolic Macsyma și editorul de text pe ecran Emacs .

Macsyma și Emacs

Din punct de vedere istoric, cele mai cunoscute rezultate ale proiectului MAC sunt sistemul de calcul simbolic Macsyma și editorul de text pe ecran Emacs . Macsyma este un puternic sistem de calcul simbolic, de fapt, un pionier în acest domeniu al sistemelor informatice, dezvoltarea sa a fost realizată la MIT din 1968 până în 1982. Sistemul a fost scris în întregime în MacLisp și a fost probabil cel mai mare program cunoscut pe scară largă din lume, scris în întregime în Lisp. Portarea Macsyma pe alte platforme hardware și software a fost motivul care a provocat apariția mai multor dialecte din Lisp. După 1982, s-a încercat comercializarea dezvoltării, dar până în 1999 dezvoltarea sistemului a fost întreruptă și până în prezent nu este utilizat. Există o furcă realizată din ultima versiune gratuită în 1982, continuă să fie dezvoltată sub numele Maxima și este disponibilă sub GNU GPL, versiunile moderne sunt compilate cu Common Lisp .

Emacs este un editor de text pe ecran complet care a făcut parte din mediul de dezvoltare MacLisp, dar a fost folosit și separat, adesea în scopuri care nu aveau nimic de-a face cu programarea. O caracteristică distinctivă a Emacs este capacitatea de a programa comportamentul editorului folosind scripturi în limbajul intern Emacs Lisp . Nucleul editorului este un interpret Emacs Lisp și un set de servicii dependente de sistem, iar partea principală este scrisă în Emacs Lisp însuși. Nucleul lui Emacs a fost scris inițial în Maclisp; ulterior, când a fost portat pe microcalculatoare, a fost rescris în C , deoarece la acel moment nu existau implementări eficiente ale Lisp pentru PC. De-a lungul anilor, editorul a achiziționat multe suplimente scrise în Emacs Lisp care și-au extins funcționalitatea într-o măsură uriașă, ceea ce a devenit o glumă: „Emacs este un sistem de operare grozav căruia îi lipsește doar un editor de text decent”.

Link -uri

http://maclisp.info/ - Pagina MacLisp a lui Kent Pitman .