Ce este compilatorul?
Un compilator este un program de computer care transformă codul scris într-un limbaj de programare la nivel înalt în codul mașinii. Este un program care traduce codul care poate fi citit de om într-un limbaj pe care un procesor de computer îl înțelege (binar 1 și 0 biți). Calculatorul procesează codul mașinii pentru a efectua sarcinile corespunzătoare.
Un compilator ar trebui să respecte regula de sintaxă a acelui limbaj de programare în care este scris. Cu toate acestea, compilatorul este doar un program și nu poate remedia erorile găsite în acel program. Deci, dacă greșești, trebuie să faci modificări în sintaxa programului tău. În caz contrar, nu se va compila.
Ce este Interpretul?
Un interpret este un program de calculator, care acoperă fiecare instrucțiune de program la nivel înalt în codul mașinii. Aceasta include codul sursă, codul precompilat și scripturile. Atât compilatorul, cât și interpreții fac aceeași treabă, care este convertirea limbajului de programare de nivel superior în codul mașinii. Cu toate acestea, un compilator va converti codul în codul mașinii (va crea un exe) înainte de a rula programul. Interpretii convertesc codul în codul mașinii atunci când programul este rulat.
DIFERENȚA CHEIE
- Compilatorul transformă codul scris într-un limbaj de programare la nivel înalt în codul mașinii, imediat, înainte de rularea programului, în timp ce un interpret interpretează fiecare instrucțiune de program la nivel înalt, una câte una, în codul mașinii, în timpul rulării programului.
- Codul compilat rulează mai repede în timp ce codul interpretat rulează mai lent.
- Compilatorul afișează toate erorile după compilare, pe de altă parte, Interpretul afișează erorile fiecărei linii unul câte unul.
- Compilatorul se bazează pe modelul de legare-încărcare a traducerii, în timp ce Interpretul se bazează pe metoda de interpretare.
- Compilatorul ia un întreg program, în timp ce Interpretul ia o singură linie de cod.
Diferența dintre compilator și interpret
Baza diferenței | Compilator | Interpret |
---|---|---|
Pași de programare |
|
|
Avantaj | Codul programului este deja tradus în codul mașinii. Astfel, timpul de executare a codului este mai mic. | Interpretii sunt mai ușor de utilizat, în special pentru începători. |
Dezavantaj | Nu puteți schimba programul fără a reveni la codul sursă. | Programele interpretate pot rula pe computere care au interpretul corespunzător. |
Codul mașinii | Stocați limbajul aparatului ca cod al aparatului pe disc | Nu se salvează deloc codul mașinii. |
Timpul pentru alergat | Codul compilat rulează mai repede | Codul interpretat rulează mai lent |
Model | Se bazează pe modelul de traducere-încărcare lingvistică. | Se bazează pe metoda de interpretare. |
Generarea programului | Generează programul de ieșire (sub formă de exe) care poate fi rulat independent de programul original. | Nu generați programul de ieșire. Deci, ei evaluează programul sursă de fiecare dată în timpul execuției. |
Execuţie | Executarea programului este separată de compilare. A funcționat numai după compilarea întregului program de ieșire. | Executarea programului face parte din procesul de interpretare, deci este realizat linie cu linie. |
Cerință de memorie | Programul țintă se execută independent și nu necesită compilatorul din memorie. | Interpretul există în memorie în timpul interpretării. |
Cel mai potrivit pentru | Delimitat la aparatul țintă specific și nu poate fi portat. C și C ++ sunt cele mai populare limbaje de programare care utilizează modelul de compilare. | Pentru medii web, unde timpul de încărcare este important. Datorită faptului că se face o analiză exhaustivă, compilările necesită timp relativ mai mare pentru a compila chiar și coduri mici, care nu pot fi rulate de mai multe ori. În astfel de cazuri, interpreții sunt mai buni. |
Optimizarea codului | Compilatorul vede întregul cod în avans. Prin urmare, realizează o mulțime de optimizări care fac ca codul să ruleze mai repede | Interpretii văd cod linie cu linie și, prin urmare, optimizările nu sunt la fel de robuste ca și compilatoarele |
Tastare dinamică | Difficil de implementat, deoarece compilatoarele nu pot prezice ce se întâmplă la rândul său. | Limbajele interpretate acceptă tastarea dinamică |
Utilizare | Este cel mai potrivit pentru mediul de producție | Este cel mai potrivit pentru program și mediu de dezvoltare. |
Eroare la executare | Compilatorul afișează toate erorile și avertizarea la momentul compilării. Prin urmare, nu puteți rula programul fără remedierea erorilor | Interpretul citește o singură afirmație și arată eroarea, dacă există. Trebuie să corectați eroarea pentru a interpreta următoarea linie. |
Intrare | Este nevoie de un program întreg | Este nevoie de o singură linie de cod. |
Ieșire | Furnizorii generează cod machnie intermediar. | Interpretul nu generează niciodată un cod machnie intermediar. |
Erori | Afișați toate erorile după compilare, toate în același timp. | Afișează una câte una toate erorile fiecărei linii. |
Limbaje de programare aferente | C, C ++, C #, Scala, Java folosesc toate complier. | PHP, Perl, Ruby folosește un interpret. |
Rolul compilatorului
- Furnizorii citesc codul sursă, scoate cod executabil
- Traduce software-ul scris într-un limbaj de nivel superior în instrucțiuni pe care computerul le poate înțelege. Convertește textul pe care un programator îl scrie într-un format pe care CPU îl poate înțelege.
- Procesul de compilare este relativ complicat. Petrece mult timp analizând și procesând programul.
- Rezultatul executabil este o formă de cod binar specific mașinii.
Rolul interpretului
- Interpretul convertește codul sursă linie cu linie în timpul RUN Time.
- Interpretul traduce complet un program scris într-un limbaj la nivel înalt în limbaj la nivel de mașină.
- Interpretul permite evaluarea și modificarea programului în timp ce acesta se execută.
- Relativ mai puțin timp petrecut pentru analiza și procesarea programului
- Executarea programului este relativ lentă în comparație cu compilatorul
LIMBI DE NIVEL ÎNALT
Limbile de nivel înalt, cum ar fi C, C ++, JAVA etc., sunt foarte aproape de engleză. Face procesul de programare ușor. Cu toate acestea, acesta trebuie tradus în limbajul mașinii înainte de executare. Acest proces de traducere este realizat fie de un compilator, fie de un interpret. Cunoscut și sub numele de cod sursă.
CODUL MAȘINII
Limbajele mașinii sunt foarte apropiate de hardware. Fiecare computer are limbajul său de mașină. Programele de limbaj mașină sunt formate din serii de modele binare. (De exemplu, 110110) Reprezintă operațiile simple care ar trebui să fie efectuate de computer. Programele de limbaj automat sunt executabile astfel încât să poată fi rulate direct.
CODUL OBIECTULUI
La compilarea codului sursă, codul mașinii generat pentru diferite procesoare precum Intel, AMD, un ARM este diferit. tPentru a face codul portabil, codul sursă este mai întâi convertit în cod obiect. Este un cod intermediar (similar cu codul mașinii) pe care niciun procesor nu îl va înțelege. În timpul rulării, codul obiectului este convertit în codul mașinii de pe platforma de bază.
Java este compilat și interpretat.
Pentru a exploata avantajele relative ale compilatoarelor sunt interpreți, unele limbaje de programare precum Java sunt compilate și interpretate. Codul Java în sine este compilat în Object Code. În timpul rulării, JVM interpretează codul obiectului în codul mașinii computerului țintă.