Pentru a vă înregistra, vă rugăm să trimiteți un email către administratorul site-ului.
Pune o întrebare

3.7k intrebari

6.8k raspunsuri

15.5k comentarii

2.5k utilizatori

2 plusuri 0 minusuri
3.8k vizualizari
Citesc un curs de programare in Java. Se vorbeste despre interpretare vs. compilare, despre bytecode vs. limbaj masina (machine language).

Poate cineva sa explice aceste notiuni si diferentele dintre ele?
Senior (8.1k puncte) in categoria Tehnologia Informatiei

1 Raspuns

1 plus 0 minusuri
interpretul este un program care executa instructiuni scrise intr-un limbaj de programare.

compilatorul este un program care "traduce" instructiuni scrise in limbaj de nivel inalt intr-un limbaj de programare.

orice limbaj poate fi executat de catre interpret sau compilator, dar anumite limbaje se asociaza mai mult unei parti decat celeilalte.

deasemena exista interpreti care contin anumite parti compilate. Aceasta parte de cod intermediu care se cheama bytecode. Se foloseste deoarece in anumite cazuri este mai eficient de executat decat daca ar face-o direct din codul sursa.

 principalul dezavantaj al unui interpret in fata unui compilator este ca in general se executa mai lent decat daca acelasi program ar fi fost compilat. Asta din cauza ca interpretul trebuie sa analizeze fiecare linie de cod in program, la fiecare executare (analiza in timp real). Deasemenea, accesul la variabile este mai lent intr-un interpret deoarece "maparea" (mapping)  identificatorilor pentru inmagazinarea localizatorilor se face in repetate randuri in timp real.
Novice (327 puncte)
0 0
Deci sa inteleg ca bytecode e totuna cu codul masina? Ca din ce am citit eu in cursul de care vorbeam, nu este asa.
De pilda, in java, dupa compilare (sau cum s-o numi operatia executata cu utilitarul javac) rezulta un fisier class, de care in curs se spune ca este bytecode...
Care e diferenta dintre acest bytecode si codul masina generat prin compilarea cu, sa zicem, gcc? E vreuna?
...