Rozdíly mezi překladači a tlumočníky

Před Jáva a C # programovací jazyky se objevily, počítačové programy byly pouze sestaven nebo interpretováno. Jazyky jako assembler, C, C ++, Fortran, Pascal byly téměř vždy kompilovány do strojového kódu. Jazyky jako Basic, VbScript a JavaScript byly obvykle interpretovány.

Jaký je tedy rozdíl mezi kompilovaným programem a interpretovaným programem?

Kompilace

Chcete-li napsat program, postupujte takto:

  1. Upravte program
  2. Zkompilujte program do souborů strojového kódu.
  3. Propojte soubory strojového kódu do spustitelného programu (také známého jako exe).
  4. Ladit nebo spouštět program

U některých jazyků, jako je Turbo Pascal a Delphi, jsou kroky 2 a 3 kombinovány.

Soubory strojového kódu jsou samostatné moduly strojového kódu, které vyžadují sestavení finálního programu. Důvodem samostatných souborů strojového kódu je účinnost; kompilátory musí pouze překompilovat zdrojový kód které se změnily. Soubory strojového kódu z nezměněných modulů jsou znovu použity. Toto se nazývá vytváření aplikace. Pokud si přejete překompilovat a znovu sestavit veškerý zdrojový kód, pak se nazývá Build.

instagram viewer

Propojení je technicky komplikovaný proces, ve kterém jsou všechna volání funkcí mezi různými moduly spojena dohromady, alokována je paměťová místa proměnné a veškerý kód je uložen v paměti a poté zapsán na disk jako kompletní program. Toto je často pomalejší krok než kompilace, protože všechny soubory strojového kódu musí být načteny do paměti a propojeny dohromady.

Tlumočení

Kroky pro spuštění programu přes tlumočníka jsou

  1. Upravte program
  2. Ladit nebo spouštět program

Toto je mnohem rychlejší proces a pomáhá začínajícím programátorům upravovat a testovat jejich kód rychleji než pomocí kompilátoru. Nevýhodou je, že interpretované programy běží mnohem pomaleji než kompilované programy. Až 5-10krát pomalejší, protože každý řádek kódu musí být znovu přečten a poté znovu zpracován.

Zadejte Java a C #

Oba tyto jazyky jsou částečně kompilovány. Generují přechodný kód, který je optimalizován pro interpretaci. Tento zprostředkující jazyk je nezávislý na hardwaru, na kterém je umístěn, a usnadňuje tak přenos programy zapsané do jiných procesorů, pokud pro ně byl napsán tlumočník Hardware.

Při kompilaci Java vytvoří bajtkód, který je za běhu interpretován pomocí Java Virtual Machine (JVM). Mnoho JVM používá kompilátor Just-In-Time, který převádí bajtkód na nativní strojový kód a potom tento kód spouští, aby se zvýšila rychlost interpretace. Zdrojový kód Java je ve skutečnosti kompilován ve dvoustupňovém procesu.

C # je kompilován do Common Intermediate Language (CIL, který byl dříve známý jako Microsoft Intermediate Language MSIL). Toto je spuštěno Common Language Runtime (CLR), část .NET framework prostředí, které poskytuje podpůrné služby, jako je sběr odpadu a kompilace Just-In-Time.

Jak Java, tak C # používají techniky zrychlení, takže efektivní rychlost je téměř stejně rychlá jako čistý kompilovaný jazyk. Pokud aplikace tráví spoustu času vstupem a výstupem, jako je čtení diskových souborů nebo běh databáze dotazy, pak je rozdíl rychlosti sotva patrný.

Co to pro mě znamená?

Pokud nemáte velmi konkrétní potřebu rychlosti a musíte zvýšit rychlost snímků o několik snímků za sekundu, můžete na rychlost zapomenout. Kterýkoli z C, C ++ nebo C # bude poskytovat dostatečnou rychlost pro hry, kompilátory a operační systémy.