Como o Unity usa o C # como uma linguagem de script?

8

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.

Brandon Clapp
fonte
2
O que são linguagens de script?
Jcora # 19/13
idiomas en.wikipedia.org/wiki/Category:Scripting_languages interpretados no tempo de execução, em vez do tempo de compilação.
precisa
2
Mas o JavaScript é compilado antes de ser executado 99% do tempo, e algumas implementações em Python também. C (++) pode ser interpretado. Eu acho que a terminologia é falha, pois você não está falando de uma propriedade da linguagem, mas da maneira como a usa. Mas parece que não é realmente importante para a questão ...
jcora
"compilado" ou "com script" não é propriedade da linguagem de programação. Ao implementar a especificação de idioma, você pode decidir se deseja "compilar" ou "interpretar".
Ivan Kuckir
11
Dito isto, o que sempre interpretei como uma "linguagem de script" é a base dessa definição. Talvez o vocabulário deva ter sido "interpretado", mas eu sempre os vi um na mesma. webopedia.com/TERM/S/scripting_language.html
Brandon Clapp

Respostas:

15

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.

Simon Moles
fonte
Ah, eu vejo o .dll agora no diretório de dados. Isso esclarece as coisas.
precisa
5
+1 para realmente responder a pergunta e não transformá-lo em um jogo-queda de braço semântica pomposo
HumanCatfood
11
@BrandonClapp se esta resposta resolveu sua pergunta, marque-a como correta.
31513 petervaz
11
Desculpe por reviver isso, mas como o Unity lida com o carregamento e descarregamento da DLL compilada no editor? Ou devo começar uma nova pergunta?
Jeff Jeff
-4

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 ...

UBSophung
fonte