Evident, perceptivitatea oamenilor și a unui dispozitiv electronic ca un calculator este diferită. Oamenii pot înțelege orice prin limbile naturale, dar un calculator nu o face. Computerul are nevoie de un traducător pentru a converti limbile scrise în forma citită de om la formularul care poate fi citit de calculator.
Compilatorul și interpretul sunt tipurile de traducători de limbi străine. Ce este traducătorul de limbi străine? Această întrebare ar putea apărea în mintea ta.
Un translator de limbă este un software care traduce programele dintr-un limbaj sursă care se află într-o formă care poate fi citită de om într-un program echivalent într-un limbaj de obiect. Limba sursă este, în general, un limbaj de programare la nivel înalt, iar limba obiectului este de obicei limba mașinii unui computer real.
Diagramă de comparație
Bazele de comparație | Compilator | Interpret |
---|---|---|
Intrare | Este nevoie de un întreg program la un moment dat. | Este nevoie de o singură linie de cod sau de instrucțiuni la un moment dat. |
producție | El generează un obiect intermediar. | Nu produce nici un obiect intermediar. |
Mecanism de lucru | Compilația se face înainte de execuție. | Compilarea și execuția au loc simultan. |
Viteză | Comparativ mai rapid | Mai lent |
Memorie | Cerința de memorie se datorează mai mult creării unui cod obiect. | Este nevoie de mai puțină memorie, deoarece nu creează un obiect intermediar. |
Erori | Afișați toate erorile după compilare, toate în același timp. | Afișează eroarea fiecărei linii unul câte unul. |
Eroare detectata | Dificil | Mai ușor comparativ |
Limbi de programare relevante | C, C ++, C #, Scala, tipcript utilizează compilatorul. | Java, PHP, Perl, Python, Ruby utilizează un interpret. |
Definiția compiler
Un compilator este un program care citește un program scris în limbajul de nivel înalt și îl convertește în mașină sau în limbaj de nivel scăzut și raportează erorile prezente în program. Se convertește întregul cod sursă într-o singură etapă sau se pot efectua mai multe treceri pentru a face acest lucru, dar în cele din urmă, utilizatorul primește codul compilat care este gata să execute.
Compilatorul funcționează pe faze; diferite etape pot fi grupate în două părți care sunt:
- Faza de analiză a compilatorului este denumită și capătul frontal în care programul este împărțit în componente constitutive fundamentale și verifică gramatica, semantica și sintaxa codului după care se generează un cod intermediar. Faza de analiză include analizor lexical, analizor semantic și analizor de sintaxă.
- Faza de sinteză a compilatorului este, de asemenea, cunoscută ca sfârșitul din spate în care codul intermediar este optimizat și se generează codul țintă. Faza sintezei include optimizarea codului și generatorul de coduri.
Fazele compilatorului
Acum, să înțelegem în detaliu modul de lucru al fiecărei etape.
- Analizator lexical : acesta scanează codul ca un flux de caractere, grupează secvența de caractere în lexeme și scoate o secvență de jetoane cu referire la limbajul de programare.
- Analizor de sintaxă : În această fază, jetoanele generate în etapa anterioară sunt verificate în funcție de gramatica limbajului de programare, indiferent dacă expresiile sunt corecte din punct de vedere sintactic sau nu. Ea face parcele pentru a face acest lucru.
- Analizor semantic : Verifică dacă expresiile și instrucțiunile generate în faza anterioară respectă regulile limbajului de programare sau nu și creează parabolă adnotată.
- Generator de cod intermediar : generează un cod intermediar echivalent al codului sursă. Există multe reprezentări ale codului intermediar, dar TAC (codul de adresă trei) este cel mai utilizat.
- Optimizatorul de coduri : Îmbunătățește cerințele de timp și spațiu ale programului. În acest scop, se elimină codul redundant prezent în program.
- Generator de coduri : Aceasta este faza finală a compilatorului în care se generează codul țintă pentru o anumită mașină. Efectuează operații cum ar fi gestionarea memoriei, Înregistrarea asignării și optimizarea specifică a mașinii.
Tabela de simboluri este oarecum o structură de date care gestionează identificatorii împreună cu tipul relevant de date pe care le stochează. Managerul de erori detectează, raportează, corectează erorile întâmpinate între diferitele faze ale unui compilator.
Definiția interpreter
Interpretul este o alternativă pentru implementarea unui limbaj de programare și face același lucru ca un compilator. Interpretul efectuează lexing, parsarea și verificarea tipului similar unui compilator. Dar interpretul procesează arborele sintaxei direct pentru a accesa expresii și a executa o instrucțiune mai degrabă decât a genera un cod din arborele sintaxei.
Un interpret poate necesita procesarea aceluiași arbore de sintaxă mai mult de o dată, acesta fiind motivul pentru care interpretarea este relativ mai lentă decât executarea programului compilat.
Compilația și interpretarea probabil combinate pentru a implementa un limbaj de programare. În care un compilator generează un cod de nivel intermediar, atunci codul este interpretat mai degrabă decât compilat în codul mașinii.
Angajarea unui interpret este avantajoasă în timpul dezvoltării programului, cea mai importantă parte fiind aceea de a putea testa rapid o modificare a programului, mai degrabă decât să deruleze eficient programul.
Diferențe cheie între compilator și interpret
Să analizăm diferențele majore dintre compilator și interpret.
- Compilatorul ia un program ca întreg și îl traduce, dar interpretul traduce o declarație de program prin instrucțiune.
- Codul intermediar sau codul țintă sunt generate în cazul unui compilator. În ceea ce privește interpretul nu creează cod intermediar.
- Un compilator este relativ mai rapid decât interpretul, deoarece compilatorul preia întregul program în același timp, în timp ce interpreții compilează fiecare linie de cod după cealaltă.
- Compilatorul necesită mai multă memorie decât interpretul din cauza generării codului obiect.
- Compilatorul prezintă simultan toate erorile și este dificil să se detecteze erorile de eroare de afișare a interpretorului de contrast ale fiecărei instrucțiuni unul câte unul și este mai ușor să se detecteze erori.
- În compilator, când apare o eroare în program, se oprește traducerea și după eliminarea erorii întregul program este tradus din nou. Dimpotrivă, atunci când se produce o eroare în interpret, se împiedică traducerea acesteia și după eliminarea erorii, traducerea se reia.
- Într-un compilator, procesul necesită doi pași în care, în primul rând, codul sursă este tradus în programul țintă, apoi executat. În timp ce în interpret Este un proces cu un pas în care codul sursă este compilat și executat în același timp.
- Compilatorul este utilizat în limbi de programare precum C, C ++, C #, Scala etc. Pe de altă parte interpretul este folosit în limbi precum Java, PHP, Ruby, Python etc.
Concluzie
Compilatorul și interpretul ambele sunt destinate să facă aceeași lucrare, dar diferă în procedura de operare, Compilatorul ia codul sursă într-un mod agregat, în timp ce Interpretorul ia părțile constitutive ale codului sursă, adică declarația prin declarație.
Deși atât compilatorul, cât și interpretul au anumite avantaje și dezavantaje, cum ar fi limbile interpretate sunt considerate ca fiind cross-platform, adică codul este portabil. De asemenea, nu este nevoie să compilați instrucțiuni anterioare, spre deosebire de compilatoare, care economisesc timp. Limbile compilate sunt mai rapide în ceea ce privește procesul de compilare.