Extras din curs
Locul limbajului LISP
Autorii AutoCAD-ului au gasit cu cale sa asocieze acest limbaj cu sistemul de proiectare asistata propus de ei, deoarece au analizat multimea de limbaje si au constatat ca se potriveste cel mai bine necesitatilor unui astfel de sistem. Ceea ce se doreste de la limbaj într-un astfel de caz este sa permita crearea si manipularea omogena a unor entitati eterogene. Dorim sa tratam unitar atât numere, cât si siruri de caractere, entitati geometrice sau multimi formate cu acestea. Usor ajungi la concluzia ca toate pot fi cuprinse în LISTE, asupra carora doresti sa faci diverse PRELUCRARI (deci LIST PROCESSING …).
Daca adaugam la asta usurinta de implementare a limbajului LISP, recunoscuta de toata lumea, constati ca, într-adevar, este un limbaj potrivit pentru proiectarea asistata.
Dezavantajul major este ca e un limbaj putin cunoscut de publicul larg. Se cunoaste, eventual, BASIC, FORTRAN, PASCAL, COBOL, chiar si C, dar LISP mai putin. Abia versiunea 11 a AutoCAD-ului asociaza limbajul C (pe lânga AutoLISP) cu sistemul de proiectare asistata.
Ce înseamna “interpretor”?
Spunem ca ansamblul actiunilor exprimate prin cuvinte din vocabularul limbajului, asupra carora se aplica regulile gramaticale proprii, se numeste “program”. Un program este deci o însiruire de linii de text.
Ce este o linie de program?
O linie de program este un sir de cuvinte separate prin spatii (blancuri) si încheiate cu un semn special (invizibil), numit “terminator de linie”. Practic, linia se încheie apasând tasta “Enter”. Efectul vizibil este ca s-a trecut la linia urmatoare. Daca acceptam denumirile consacrate pentru acest terminator, ca ”ENTER”, sau “RETURN”, sau ”CARRIAGE RETURN” (adica “întoarcerea carului” de tiparire ) si-l notam <CR> , atunci liniile de program pot arata astfel:
În multe limbaje (PASCAL, C, LISP) nu mai conteaza unde se termina o linie. Sigur ca liniile trebuie sa se încheie la sfîrsituri de cuvinte, adica separatorul “blanc” poate fi oricând înlocuit cu <CR>. Programatorul hotaraste unde s-o faca, legat numai de instinctele de lizibilitate (“citibilitate”) ale programului. De retinut ca nu conteaza daca se scrie cu litera mare sau mica (cu mici exceptii).
Programele astfel scrise trebuie apoi traduse în limba masinii. Traducerea poate fi facuta printr-un “compilator” sau un “interpretor”. Compilatorul traduce întregul program, ca ansamblu, într-un ansamblu de coduri pe care le întelege calculatorul. Interpretorul traduce liniile pe rând, pe masura ce i se fac cunoscute.
În mod tipic limbaje ca PASCAL, FORTRAN, C sunt implementate prin compilatoare, iar BASIC prin interpretor. Ei bine, AutoLISP este implementat printr-un interpretor.
Asta ne permite sa introducem programul de la tastatura, linie cu linie, observând direct efectele si eventualele erori.
Daca totusi, programul este scris separat, acesta poate fi “încarcat” în AutoCAD ca ansamblu (folosind functia “load”), dar tratamentul va fi acelasi: citind liniile succesiv, interpretorul îsi întrerupe activitatea atunci cînd întâlneste o eroare, dând evident informatii despre aceasta (“mesaj de eroare”). Un compilator care ar face acelasi lucru, ar continua sa traduca si celelale linii, informând asupra erorilor abia în final, cu referire la fiecare linie eronata. Si, ca sa extindem explicatia, dupa ce a trecut o data prin program, sesizând erorile locale, compilatorul trece a doua oara, sesizând erorile globale. Mai exact, în prima faza compilatorul observa care cuvinte sau “fraze” sunt rau scrise iar în faza a doua stabileste daca trimiterile dintr-o parte în alta a programului sunt corecte. Astfel de trimiteri se fac pe baza unor instructiuni de genul “go to” catre locatii marcate prin etichete (labels). Un interpretor nu are o a doua faza, ba AutoLISP nici nu foloseste trimiteri si etichete, ca sa fie clar. În AutoLISP nu exista instructiuni GO TO, totul curge simplu, de sus în jos…
Filosofia limbajului AutoLISP
LISP înseamna procesare de lista. O lista este un sir de “cuvinte” separate prin spatii (sau <CR>-uri) si incluse între paranteze rotunde.
O lista poate arata astfel:
Preview document
Conținut arhivă zip
- AutoLisp
- AutoLISP 1 Valcea.doc
- AutoLISP 2 Valcea.doc
- AutoLISP 2+ Valcea.doc
- AutoLISP Acad14 Valcea.doc