Innan programmeringsspråket Java och C # dök upp kompilerades eller tolkades bara datorprogram. Språk som Assembly Language, C, C ++, Fortran, Pascal sammanställdes nästan alltid till maskinkod. Språk som Basic, VbScript och JavaScript tolkades vanligtvis.
Så vad är skillnaden mellan ett sammanställt program och ett tolkat program?
Så här skriver du ett program:
Med vissa språk som Turbo Pascal kombineras Delphi steg 2 och 3.
Maskodkodfiler är fristående moduler av maskinkod som kräver att de kopplas ihop för att bygga det slutliga programmet. Anledningen till att ha separata maskinkodfiler är effektivitet; kompilatorer behöver bara kompilera om källkoden som har ändrats. Maskinkodfilerna från de oförändrade modulerna återanvänds. Detta är känt som att göra applikationen. Om du vill kompilera om och bygga om all källkod kallas det Build.
Länkning är en tekniskt komplicerad process där alla funktionssamtal mellan olika moduler är kopplade ihop, minnesplatser tilldelas för variabler och all kod läggs ut i minnet, sedan skrivs till disken som ett komplett program. Detta är ofta ett långsammare steg än att sammanställa eftersom alla maskinkodfiler måste läsas i minnet och kopplas samman.
Stegen för att köra ett program via en tolk är
Detta är en mycket snabbare process och det hjälper nybörjare att redigera och testa deras kod snabbare än att använda en kompilator. Nackdelen är att tolkade program går mycket långsammare än sammanställda program. Så mycket som 5-10 gånger långsammare som varje kodrad måste läsas om och sedan behandlas på nytt.
Båda dessa språk är halvkompilerade. De genererar en mellanliggande kod som är optimerad för tolkning. Detta mellanspråk är oberoende av den underliggande hårdvaran och det gör det enklare att porta program skrivna i antingen till andra processorer, så länge en tolk har skrivits för den hårdvaran.
Java producerar, när den sammanställs, bytekod som tolkas under körning av en Java Virtual Machine (JVM). Många JVM: er använder en Just-In-Time-kompilator som konverterar bytekod till inbyggd maskinkod och sedan kör den koden för att öka tolkningshastigheten. I själva verket kompileras Java-källkoden i en tvåstegsprocess.
C # sammanställs till Common Intermediate Language (CIL, som tidigare var känt som Microsoft Intermediate Language MSIL. Detta drivs av Common Language Runtime (CLR), som är en del av .NET-ramverket, en miljö som tillhandahåller supporttjänster som skräpsamling och Just -Sammanställning i tid.
Både Java och C # använder speedup-tekniker så den effektiva hastigheten är nästan lika snabb som ett rent sammanställt språk. Om applikationen lägger ner mycket tid på att göra inmatning och utdata som att läsa diskfiler eller köra databasfrågor märks hastigt skillnaden.
Om du inte har ett mycket specifikt behov av hastighet och måste öka bildhastigheten med ett par bilder per sekund, kan du glömma hastigheten. Någon av C, C ++ eller C # ger tillräcklig hastighet för spel, kompilatorer och operativsystem.