Înainte de apariția limbajelor de programare Java și C #, programele de computer au fost compilate sau interpretate doar. 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?
Pentru a scrie un program faceți acești pași:
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 codul sursă 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 apelurile funcționale între diferite module sunt aglomerate, locațiile de memorie sunt alocate pentru 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.
Pașii pentru a rula un program prin intermediul unui interpret sunt
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ă.
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 de programe scrise fie în alte procesoare, cât timp a fost scris un interpret pentru acel 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. Acesta este condus de Common Language Runtime (CLR)), parte a cadrului .NET, un mediu care oferă servicii de asistență precum colectarea gunoiului și Just -Compilare în timp.
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 realizând intrare și ieșire, cum ar fi citirea fișierelor de disc sau rularea interogărilor de baze de date, atunci diferența de viteză este abia observabilă..
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.