La compilazione nativa e' roba di decenni fa per le applicazioni generiche.
Una compilazione JIT in diversi casi può' essere più' efficiente, oltre a rendere possibile l'esecuzione dello stesso codice su diverse architetture senza necessita' di ricompilare.
E inoltre la migliore ottimizzazione che si può' fare e' quella algoritmica, scrivere in un linguaggio compilato nel 2011 solo "perché si hanno prestazioni migliori" e' una cagata pazzesca.
Non per niente da java, a python, a C#, F#, LLVM tutti stanno andando in quella direzione con JIT compiler e ottimizzazioni dinamiche.
Oh, può anche essere che sia meglio nelle applicazioni generiche.
Di certo io so solo che se un linguaggio è usato per costruire le infrastrutture su cui quelle applicazioni generiche girano (dal SO alle varie VM/interpreti) non si può bloccarne l'evoluzione. E' meglio per tutti se evolve (anche dal punto di vista sintattico), perchè così si possono creare VM ed interpreti migliori, più semplici da capire per chi deve fare manutenzione.
Indi per cui ben vengano tali innovazioni, che rendono il c++ un linguaggio più moderno.
E plz, non mettermi LLVM insieme ad altri linguaggi interpretati/JITati/ecc. E' una cosa diversa.
*
Anche perché guarda cosa si deve inventare l'ibm per
Using Java code to program real-time systemsvisto che
Cita:
Standard Java applications running on a general-purpose JVM on a general-purpose operating system can only hope to meet soft RT requirements at the level of hundreds of milliseconds. Several fundamental aspects of the language are responsible: thread management, class loading, Just-in-time (JIT) compiler activity, and garbage collection (GC). Some of these issues can be mitigated by application designers, but only with significant work.
e infatti alla fine deve ricorrere alla compilazione
Cita:
For harder RT environments, WebSphere Real Time introduces AOT compilation for application programs. Java class files stored in JAR files can be precompiled through a simple command line into Java eXEcutable (JXE) files. By specifying these JXE files, rather than the original JAR files, on the application classpath, the application can be invoked so that the AOT-compiled code is executed -- rather than bytecodes being interpreted or native code being compiled by a JIT compiler. In the first WebSphere Real Time release, using AOT code means that no JIT compiler is present, which has two primary advantages: lower memory consumption and no dynamic performance impact from either the JIT compilation thread or the sampling thread that identifies frequently executing code.
però ad oggi i RT kernel usati sono in C.
Comunque senza andare a fare inutili guerre "viva C++", "abbasso Java" o viceversa, ci sono diversi mondi informatici in cui servono entrambi i linguaggi: i videogiochi si fanno in C++, un JDownloader in Java, etc.
Per esempio ora sto lavorando con librerie "automatic speech recognition" e "text-to-speech" e, ovviamente, sono in C.