Forskelle mellem kompilatorer og tolke

Før Java og C # programmeringssprog dukkede op, computerprogrammer var kun kompileret eller fortolket. Sprog som Assembly Language, C, C ++, Fortran, Pascal blev næsten altid samlet til maskinkode. Sprog som Basic, VbScript og JavaScript blev normalt fortolket.

Så hvad er forskellen mellem et samlet program og et fortolket program?

kompilering

Sådan skriver du et program tager disse trin:

  1. Rediger programmet
  2. Kompiler programmet i Maskinkodefiler.
  3. Knyt maskinens kodefiler til et kørbart program (også kendt som en exe).
  4. Debug eller kør programmet

Med nogle sprog som Turbo Pascal og Delphi kombineres trin 2 og 3.

Maskinkodefiler er selvstændige moduler af maskinkode, der kræver sammenkobling for at opbygge det endelige program. Årsagen til at have separate maskinkodefiler er effektivitet; kompilatorer skal kun rekompilere kildekode der har ændret sig. Maskinkodefilerne fra de uændrede moduler genbruges. Dette er kendt som at fremstille applikationen. Hvis du ønsker at kompilere og genopbygge al kildekode, kaldes det en Build.

instagram viewer

Linking er en teknisk kompliceret proces, hvor alle funktionsopkald mellem forskellige moduler er koblet sammen, hvor hukommelsesplaceringer tildeles variabler og al koden er lagt i hukommelsen og derefter skrevet til disken som et komplet program. Dette er ofte et langsommere trin end kompilering, da alle maskinkodefiler skal læses i hukommelsen og kobles sammen.

Tolkning

Trinene til at køre et program via en tolk er

  1. Rediger programmet
  2. Debug eller kør programmet

Dette er en langt hurtigere proces, og det hjælper nybegynderprogrammører med at redigere og teste deres kode hurtigere end at bruge en compiler. Ulempen er, at fortolkede programmer kører meget langsommere end kompilerede programmer. Så meget som 5-10 gange langsommere som hver kodelinje skal læses igen og derefter behandles igen.

Indtast Java og C #

Begge disse sprog er halvkompilerede. De genererer en mellemkode, der er optimeret til fortolkning. Dette mellemsprog er uafhængigt af den underliggende hardware, og det gør det lettere at port programmer skrevet i enten til andre processorer, så længe der er skrevet en tolk til det hardware.

Java producerer, når den er samlet, bytecode, der fortolkes ved kørsel af en Java Virtual Machine (JVM). Mange JVM'er bruger en Just-In-Time-compiler, der konverterer bytecode til indbygget maskinkode og derefter kører den kode for at øge tolkningshastigheden. Java-kildekoden kompileres faktisk i en to-trins proces.

C # er samlet til Common Intermediate Language (CIL, der tidligere blev kendt som Microsoft Intermediate Language MSIL). Dette køres af Common Language Runtime (CLR), som er en del af .NET-rammen, et miljø, der leverer supporttjenester, såsom affaldsopsamling og Just-In-Time-kompilering.

Både Java og C # anvender speedup-teknikker, så den effektive hastighed er næsten lige så hurtig som et rent kompileret sprog. Hvis applikationen bruger en masse tid på input og output som at læse diskfiler eller køre database forespørgsler, så er hastighedsforskellen næppe mærkbar.

Hvad betyder det for mig?

Medmindre du har et meget specifikt behov for hastighed og skal øge billedfrekvensen med et par billeder i sekundet, kan du glemme hastigheden. Enhver af C, C ++ eller C # vil give tilstrækkelig hastighed til spil, compilere og operativsystemer.

instagram story viewer