Que eu saiba, até agora, eu pensei que o C # é e sempre foi uma linguagem compilada. Recentemente, comecei a estudar o Unity3d e notei que eles fornecem C # como uma opção para criar scripts e interagir com objetos de jogos por meio de sua API (juntamente com JavaScript e algumas outras alternativas).
Como isso é feito? O C # está realmente sendo executado ou isso é uma abstração que está sendo convertida para uma linguagem de script diferente, oculta? Parece-me que existe algum tipo de interpretação para esta funcionalidade.
Respostas:
Unity está usando Mono nos bastidores. Toda vez que você altera os scripts C # / UnityScript, ele recompila o código quase instantaneamente.
Se você procurar no diretório de dados de um Unity Player independente, poderá ver que ele compilou todos os scripts no Assembly-CSharp.dll ou similar.
Então, sim, o C # está sendo compilado.
fonte
Primeiro, as linguagens de script não são necessariamente linguagens interpretadas. Algumas linguagens de script como Lua e Python podem ser compiladas ou interpretadas por JIT.
E, quanto à própria pergunta: porque o C # é uma linguagem de script, mas a Microsoft faz um bom trabalho para que não pareça.
O C # tem tudo o que uma linguagem de script precisa: digitação dinâmica, compilação JIT em vez de compilação estática, é executada em uma máquina virtual ...
fonte