Que yo sepa, hasta ahora, he pensado que C # es y siempre ha sido un lenguaje compilado. Recientemente comencé a estudiar Unity3d y noté que ofrecen C # como una opción para crear secuencias de comandos e interactuar con los objetos del juego a través de su API (junto con JavaScript y un par de otras alternativas).
¿Cómo se hace esto? ¿C # se está ejecutando realmente o se trata de una abstracción que se está convirtiendo en un lenguaje de scripting diferente? Me parece que hay algún tipo de interpretación para esta funcionalidad.
Respuestas:
Unity está usando Mono detrás de escena. Cada vez que realiza un cambio en sus scripts de C # / UnityScript, vuelve a compilar el código casi al instante.
Si busca en el directorio de datos de un reproductor de unidad independiente, puede ver que ha compilado todos los scripts en Assembly-CSharp.dll, o similar.
Entonces sí, se está compilando el C #.
fuente
Primero, los lenguajes de script no son necesariamente lenguajes interpretados. Algunos lenguajes de secuencias de comandos, como Lua y Python, pueden compilarse o interpretarse JIT.
Y, en cuanto a la pregunta en sí: porque C # es un lenguaje de script, pero Microsoft hace un buen trabajo para que no se vea como tal.
C # tiene todo lo que un lenguaje de script necesita: escritura dinámica, compilación JIT en lugar de compilación estática, se ejecuta en una máquina virtual ...
fuente