Tipuri de traducători

Limba procesoarelor (codul mașinii) este de obicei la un nivel scăzut. Există platforme care folosesc limbajul de nivel înalt ca limbă de mașină (de exemplu, iAPX-432), dar sunt o excepție de la regulă datorită complexității și costului ridicat. Un traducător care convertește programele într-un limbaj al mașinii care este primit și executat direct de procesor se numește compilator.







Avantajul compilatorului: programul este compilat o singură dată și nu sunt necesare conversii suplimentare pentru fiecare execuție. În consecință, nu este necesar niciun compilator pe mașina țintă pentru care este compilat programul. Dezavantaj: o etapă separată de compilare încetinește scrierea și depanarea și face dificilă executarea programelor mici, necomplicate sau unice.

O altă metodă de implementare este atunci când programul este executat cu ajutorul interpretului în general fără traducere. Interpretul simulează programabil mașina, ciclul executării eșantionului funcționează cu comenzi în limbile de nivel înalt, mai degrabă decât cu instrucțiunile mașinii. Astfel de modelare software creează o mașină virtuală care implementează limba. Această abordare se numește interpretare pură. O interpretare pură este de obicei aplicată limbilor cu o structură simplă (de exemplu, un submarin sau un Lisp). Interpretul de linie de comandă procesează comenzi în script-uri UNIX sau în fișiere batch (.bat) în MS-DOS, de regulă, în modul de interpretare pură.

Avantajul unui interpret pur: absența acțiunilor intermediare de traducere simplifică implementarea interpretului și îl face mai convenabil de utilizat, inclusiv în modul interactiv. Dezavantaj - interpretul trebuie să fie disponibil pe mașina țintă, unde programul ar trebui executat.







Există compromisuri între compilarea și interpretarea pură a exemplelor de realizare a limbajele de programare, interpretul înainte de a executa programul acesta se traduce într-un limbaj intermediar (de exemplu, codul de octet sau p-cod), mai convenabil pentru interpretarea (de exemplu, vorbim despre shell-ul cu integrat traducător) . Această metodă se numește o implementare mixtă. Perl este un exemplu de implementare mixtă a unei limbi. Această abordare combină avantajele ambelor compilatorului și interpretul (de mare viteză de execuție și ușurința în utilizare) și dezavantajele (pentru programele de difuzare și de stocare, resurse suplimentare sunt necesare într-un limbaj intermediar, ar trebui să fie prevăzut un interpret pentru executarea programului de pe mașina țintă). De asemenea, la fel ca în cazul unui compilator, punerea în aplicare mixt impune ca înainte de executarea codului sursă nu conține erori (lexicale, sintactice și semantice).

Broadcast și interpretare - două procese diferite: programe de difuzare este traducerea dintr-o limbă în alta, iar interpretarea este responsabilă pentru executarea programelor. Cu toate acestea, din moment ce scopul emisiunii, de regulă, este de a pregăti un program de a interpreta, atunci aceste procese sunt de obicei luate în considerare împreună. De exemplu, limbaje de programare sunt adesea caracterizate ca „compilate“ sau „interpretat“, în oricare dintre acestea folosind predominantă de compilare sau interpretare limbii. Și aproape toate limbajele de programare de nivel scăzut și a treia generație, cum ar fi de asamblare, C sau Modula-2, sunt compilate, și un limbaj de nivel înalt, cum ar fi Python sau SQL, - interpretat.

Pe de altă parte, există întrepătrunderea proceselor de traducere și interpretare: interpreții pot fi compilate (inclusiv compilarea dinamică), și un traducător poate fi necesară o interpretare pentru constructe de programare meta (cum ar fi macro-uri în limbaj de asamblare, compilare condiționată în C sau șabloane C ++).







Trimiteți-le prietenilor: