Rammi.cz

Rammi.cz náhodný obrázek

Druhy kompilace

Listopad 23rd, 2004 · Zatím nejsou komentáře · Programování

Džendys se mě ptal:
Interpreter – je to treba Java Virtual Machine?
a připojil nějakou definici – nevím kde ji vzal
interpreter s „interpretr“, překladač vyššího programovacího jazyka, pracující při běhu programu s jednotlivými programovými řádky, resp. příkazy. Programový řádek je vždy nejdříve přečten, potom převeden do strojového kódu procesoru a teprve potom proveden. Logicky z toho vyplývá podstatně pomalejší běh programu oproti kompilátoru ( viz heslo compiler), předností však může být někdy rychlá tvorba jednodušších programů, rychlejší ladění a rychlejší interakce mezi programátorem a laděným programem.
Napsal jsem trošku obšírnější odpověď doufám že to vyřeší případné další nejasnosti. No a když už jsem si s tím dal tu práci tak to tady uveřejním.
Všechno je pouze obrazně ve skutečnosti je to složitější, vím o tom, ale pro vysvětlení principiálních rozdílů to snad takhle stačí. 🙂

takže má odpověď:

Ne
Interpreter je neco jako simultanni prekladac, pouziva se pri line-by-line kompilaci napriklad ve vsech odrudach Basicu (krome VB.net tam se používá JIT) a ve vsech scriptech (asp, php, vbs, js, atd.) a jeste v nekterych dalsich jazycich… tzn ze vezme radek, zkompiluje ho a zkompilovanou cast spusti.
takze treba po spusteni smycky

for 1 = 1 to 3
‚do nothing
next

se provede na pocitaci toto:
opakuj 3×
{
1)se zkompiluje prvni radek
2)provede se prvni radek
3)zkompiluje se druhy radek
4)provede se druhy radek
5)zkompiluje se treti radek
6)provede se treti radek
}

pri kompilaci predem jako je to napr v Cecku se provede pro ten samy priklad toto:

vyvojar to cele zkompiluje, po kompilaci uz se radky nerozlisuji takze u klienta:
opakuj3×
{
do nothing
}

ve VB je taky „kompilace“ ale to se tak jenom jmenuje kdyz to prezenu tak cela kompilace ve VB jenom zmeni priponu 😉

v Jave to funguje jinak, tam se to prelozi do strojoveho kodu, ale pro Java virtual machine, JVM je emulator, ktery umi zpracovavat strojovy kod pro JVM.
Funkci JVM si muzes predstavit jako emulator ZX spectrum na PC. Program je urcen pro jiny pocitac, ale bezi i na pc diky emulatoru.
takze kdyz napises program v jave, je to jako bys ho napsal pro ZX spectrum v nejakem kompilovatelnem jazyku a pak ho spustil pod emulatorem na PC 😉

no a v .NET je JIT (just in time compilation) to znamena pro stejny priklad toto:

při prvním spuštění
{
1) zkompiluj prvni radek
2) zkompiluj druhy radek
3) zkompiluj treti radek
4) uloz do cache
}
opakuj 3×
{
to co mas v cache
}

ufff – priste jednodussi otazky 😉

na doplnění češtiny nemám sílu, tak si ji zkuste domyslet 🙂
komentáře jsou jako vždy vítány


Jak bude reklama vypadat?
-
Kup si reklamu navždy pod tímto článkem jen za 140 Kč
Zobrazit formulář pro nákup

Tagy:

Napiš první komentář! ↓

Zatím tu není žádný komentář... Odstartuj to vyplněním formuláře níže.

Co si myslíš ty?

Copyright Abago Holding s.r.o.,
všechna práva vyhrazena.
Navštivte také další projekty: Služby:  Digi Reality - Realitní vyhledávač | Ušetřím.cz - Vyhledávač cen | Inzerce Dýně.cz - Inzerce zdarma | Moderní svět - Nejen o technologiích
Zábava: PeckaSMS.cz - vyhrajte super ceny | 101her.cz - Online hry zdarma |
TOPlist