En realidad, muchos escriben código C que se compila. Los que conozco: GHC Haskell, Genie & Vala, Gambit / Chicken / Bigloo Scheme, ECL (Common Lisp) y Facebook tienen HipHop que convierte PHP a C ++. Incluso Perl tiene un compilador que puede crear código C (también muy grande). Pero este es el lenguaje nativo de C para no bytear código y luego para C.
Pero se compilan en C / C ++ como una forma de crear un binario ejecutable nativo, lo que lo hace más rápido (ya no se interpreta) o se ejecuta en una VM. De aquí viene el aumento de velocidad. No es cierto que C y C ++ sean siempre la forma más rápida para cada implementación, pero generalmente es cierto que un programador de C experimentado que conoce muy bien el hardware nativo puede escribir C de tal manera que se aproxime al ensamblaje. Por eso se creó C en primer lugar. C ++ es un animal diferente donde el programador tiene mucho menos control sobre la salida final, pero nuevamente un programador experimentado puede escribir código extremadamente eficiente que el optimizador mejora aún más.
El código de bytes es simplemente lenguaje ensamblador para una “computadora de software”, conocida como máquina virtual. Esta es una capa de código que ejecuta instrucciones similares a ensamblajes y realiza las operaciones de esas instrucciones utilizando el sistema operativo nativo (o hardware nativo directamente). Esto permite que un fragmento de código (como un programa Java) se ejecute en cualquier hardware. Puede pensar en ellos como un emulador para otra computadora (principalmente uno que nunca ha sido diseñado como hardware) en otra computadora.
- Ejecuto un modelo de regresión de Cox con dos variables y luego agrego otra variable a este modelo. Cuando agrego la tercera variable, la dirección de los coeficientes cambia. ¿Cómo puedo interpretar esto?
- Cómo resolver este problema matemático discreto
- ¿Cuál es el nivel de matemáticas de un estudiante de doctorado en ciencias de la computación?
- ¿Cuál es la conexión entre la teoría de conjuntos avanzada y la informática teórica?
- ¿Cuál es la función más compleja que has visto que, lógicamente, no debería funcionar, pero sí lo hace?
La conversión a C primero, luego al código de bytes realmente no logra nada. Ese sería un compilador de C que escribe código de bytes en lugar de instrucciones nativas de la CPU. CLang para LLVM, en cierto modo, primero hace una especie de código de bytes, pero no directamente, pero este es un caso especial diseñado para permitir que LLVM se programe en C. Tiene mucho más sentido convertir el código de bytes en C para convertir en un ejecutable nativo, y si puede hacerlo, generalmente es tan fácil hacer que el compilador convierta el código de bytes en ensamblado nativo, como lo hace un compilador justo a tiempo para Java para navegadores o Limbo para Inferno.