Inainte de Java și limbaje de programare C # au apărut, programele de calculator au fost numai compilat sau interpretat. Limbi precum Assembly Language, C, C ++, Fortran, Pascal au fost întotdeauna compilate în codul mașinii. Limbi precum Basic, VbScript și JavaScript au fost de obicei interpretate.
Deci, care este diferența dintre un program compilat și unul interpretat?
compilarea
Pentru a scrie un program faceți acești pași:
- Editează programul
- Compilați programul în fișiere cu cod de mașină.
- Conectați fișierele de cod ale mașinii într-un program rulabil (cunoscut și ca exe).
- Debug sau executați programul
Cu unele limbi precum Turbo Pascal și Delphi, etapele 2 și 3 sunt combinate.
Fișierele de cod ale mașinilor sunt module autonome ale codului mașinii care necesită conectarea pentru a construi programul final. Motivul pentru a avea fișiere cu cod de mașină separat este eficiența; compilatoarele trebuie doar să recompileze cod sursa care s-au schimbat. Fișierele codului mașinii din modulele neschimbate sunt reutilizate. Aceasta este cunoscută ca realizarea cererii. Dacă doriți să recompilați și să reconstruiți tot codul sursă, atunci acesta este cunoscut sub numele de Build.
Legarea este un proces complicat din punct de vedere tehnic în care toate convorbirile funcționale între diferite module sunt agregate între ele, unde sunt alocate locațiile de memorie variabile și tot codul este stabilit în memorie, apoi este scris pe disc ca un program complet. Acesta este adesea un pas mai lent decât compilarea, deoarece toate fișierele codului mașinii trebuie citite în memorie și legate între ele.
Interpretarea
Pașii pentru a rula un program prin intermediul unui interpret sunt
- Editează programul
- Debug sau executați programul
Acesta este un proces mult mai rapid și ajută programatorii începători să editeze și să testeze codul mai repede decât să folosească un compilator. Dezavantajul este că programele interpretate rulează mult mai lent decât programele compilate. Până la 5-10 ori mai lent decât fiecare linie de cod trebuie re-citită, apoi re-procesată.
Introduceți Java și C #
Ambele limbi sunt semi-compilate. Acestea generează un cod intermediar care este optimizat pentru interpretare. Acest limbaj intermediar este independent de hardware-ul de bază și face mai ușor portul programe scrise în oricare alt procesator, atât timp cât un interpret a fost scris pentru asta hardware.
Java, atunci când este compilat, produce un bytecode care este interpretat la runtime de o mașină virtuală Java (JVM). Multe JVM folosesc un compilator Just-In-Time care convertește bytecode în codul mașinii native și apoi execută acel cod pentru a crește viteza de interpretare. De fapt, codul sursă Java este compilat într-un proces în două etape.
C # este compilat în Common Intermediate Language (CIL), care a fost cunoscut anterior ca Microsoft Intermediate Language MSIL. Aceasta este administrată de Common Language Runtime (CLR), parte a cadrului .NET, un mediu care oferă servicii de asistență precum colectarea gunoiului și compilarea Just-In-Time.
Atât Java cât și C # folosesc tehnici de rapidizare, astfel încât viteza eficientă este aproape la fel de rapidă ca un limbaj pur compilat. Dacă aplicația petrece mult timp pentru a intra și a ieși, cum ar fi citirea fișierelor de disc sau rularea Bază de date interogări, atunci diferența de viteză este abia observabilă.
Ce înseamnă asta pentru mine?
Cu excepția cazului în care aveți o nevoie foarte specifică de viteză și trebuie să creșteți rata cadrelor cu câteva cadre pe secundă, puteți uita de viteză. Oricare dintre C, C ++ sau C # va oferi o viteză suficientă pentru jocuri, compilatoare și sisteme de operare.