Idézet: cx.core - Dátum: 2005. aug. 3., szerda - 22:02
Meg sem próbáltalak megítélni, csak arra szerettem volna rámutatni, hogy a JVM == interpreter meglátás eléggé idejétmúlt a mai világban.
Idézet
Én ezt így kategórikusan nem merném kijelenteni. Ha elég mérnökévet beleölsz abba a fordítóba...
Idézet
C esetén tökéletesen igazad van. Egyszer lefordítod, az onnantól olyan amilyen. Java esetén viszont egy virtuális CPU nyelvéről beszélünk (a JVM byte code egyfajta idealizált assemblynek is tekinthető, amire a javac tegyük fel, hogy optimálisan fordít). A Java byte code és az adott hardver közötti minél optimálisabb kódkonverzió nem egyszerűen az adott processzorcsalád sajátosságait tudja figyelembe venni: hanem akár magát a konkrét gépet, amin fut. Hány szálnyi végrehajtóegység, mekkora cache méretek, milyen utasításkészlet (annak milyen kiterjesztéseivel: nem véletlenül írtam azt az SSE-t odafent). Konkrétan: vegyünk egy több szálon futó algoritmust thread local változókkal, többszálú végrehajtást támogató core-ral rendelkező gépen. Ki fogja ügyesebben optimalizálni az eredeti kódot? A C fordító, ami x éve egy akkori SMP gépre optimalizálta a pthread-es C kódot, vagy egy teoretikus JVM ami az adott hardver sajátosságainak megfelelően optimalizál?
Ha azt nézed csak, hogy egy adott feladatot a jelenlegi hardverek segítségével hogyan lehet minél optimálisabban, gyorsabban megoldani: valószinűleg nem a java, c# és társai lesznek a barátaid (de ebben az esetben úgyis valamilyen beágyazott rendszeren dolgozol). Ha fontos, hogy az adott kifejlesztett alkalmazás az idő és a technológia változásával minimális továbbfejlesztéssel legyen piacra dobható, eladható és karbantartható... akkor nem igazán van más választás. A C az én szememben a legportábilisabb assembly nyelv, amit tervezni lehetett a 70-es években. A Java byte code pedig a 90-es évek elejének legjobb próbálkozása egy hardverfüggetlen assembly kód megteremtésére. Az, hogy azt egy adott JVM manifesztáció interpretálja, JIT-teli, a kettő keverékét használja, vagy átfordítja majd valami egészen más megközelítésű dologra teljesen hidegen hagy. A lényeg, hogy az algoritmus, amit leírtam a nyelven elfusson 1, 5, 10 év múlva is egy akkori számítógépen - nem a legoptimálisabban, hanem eléggé optimálisan. Persze lehet, hogy ez naivitás...

Súgó
A téma zárva.












