Názor ke článku Kudy dál v kompilovaných jazycích? od VViki - [108] Myslím, že v otázce bytecódu se mýlíte. Velké...

  • 4. 12. 2007 19:15

    VViki (neregistrovaný)

    [108] Myslím, že v otázce bytecódu se mýlíte.
    Velké množství dnešních kompilátorů pracuje interně s určitým bytekódem, který nemá přímou vazbu na výsledný strojový kód. První fáze kompilace (front end) vytvoří interní bytekód ze zdrojového kódu, druhá část (back end) generuje z bytekódu strojový kód zvolené platformy.
    Java pouze při "kompilaci" před distribucí vynechává druhou fázi a provádí ji až za běhu dynamicky.
    A protože dynamická kompilace může optimalizovat kód na konkrétní procesor (statická kompilace se většinou omezuje na skupinu procesorů; pro šťouraly zdůrazňuji slovo většinou :-) ), je výsledek velmi rychlý; přesněji řečeno, má potenciál být velmi rychlý.
    Samozřejmě ovšem dramaticky záleží na tom, kolik kódu je potřeba kompilovat a kolikrát se daný kód prochází. U algoritmů, které jsou na zkompilování krátké, ale procesor je prochází mnohonásobně může být výsledek teoreticky rychlejší než v C...

    Aplikace psané v Javě nejsou pomalé z důvodu, že by bytekód byl špatně zvolený... Příčiny jsou podle mě jinde a jsou (jak to vidím já) zhruba 3:

    - Java musí provádět spoustu kontrol, které si programátor může dovolit v C vynechat, když ví co dělá
    - lidé, co píšou v Javě jsou většinou hodně vzdálení HW.... většinou nemají tušení jak procesory fungují, jak efektivně pracovat s pamětí a cache...
    - protože to je jazyk "in" a ne příliš komplikovaný, spoustu Javovských aplikací dělají zmínění lepiči :-)