Existem quaisquer linguagens de programação gerenciados que compilar para código de máquina?

StackOverflow https://stackoverflow.com/questions/1213043

  •  06-07-2019
  •  | 
  •  

Pergunta

idiomas gerenciados sendo os que a limpeza de memória alça para você.

Editar Eu não estou falando sobre a coleta de lixo. Eu estava interessado em saber sobre línguas que free() memória automaticamente para mim, e ainda compilam baixo para código de máquina.

Foi útil?

Solução

Você parece estar confuso "gestão" e "coleta de lixo", enquanto línguas, muitas vezes administrados (por exemplo C # e Java) têm automatizado de coleta de lixo, "administrado" na verdade se refere ao fato de que há uma "máquina virtual", que executa seu código (ver http://en.wikipedia.org/wiki/Managed_code ).

Assim, por exemplo, o CLR (Common Language Runtime) é a máquina virtual execução de código .Net, eo JVM (Java Virtual Machine) é o código Java Virtual Machine execução.

Você pode, de facto, coleta de lixo para as línguas não gerenciados (por exemplo C ++ ), e línguas vice-versa conseguiram sem coleta de lixo (EDIT: Eu estava olhando para alguns, mas eu não consigo encontrar qualquer a menos que Objective C contagem, eu não estou certo de que faz uma enorme quantidade de sentido criar uma linguagem gerenciada sem coleta de lixo de qualquer maneira)

Ambos Java e C # pode na verdade ser compilado diretamente em código de máquina, de modo que eles sejam executados diretamente, e não usando uma máquina virtual - para o código .Net isso é feito usando NGEN (na verdade, o CLR compila .Net montagens na máquina código como você executá-lo, o chamado "Just in time" compilação)

EDIT: como uma atualização para a atualização da sua pergunta, há na verdade uma série de alternativas para a coleta de lixo em um espectro entre o extremo de gerenciamento completo manual de memória e coleta de lixo, e uma monte de línguas que compilam a máquina de incorporar um código variando as formas de gerenciamento de memória que não exigem que você memória explicitamente livre.

Posso perguntar - é este uma pergunta "por interesse", ou você está tentando selecionar um idioma para um projeto - Se o último, então por que você está tão interessado em ter seu langauge compilar para baixo para código de máquina? Certamente, no caso de .Net ter seu código JIT ofertas compilou uma série de vantagens de desempenho (na maioria dos casos), também NGENing seu código não remove a dependência do framework .Net.

Outras dicas

lotes:

LISP (e variantes), Erlang, C # (sob Mono), Haskell, Java (com GCJ)

Claro que há. Java, por exemplo. (GCJ)

No entanto, o termo conseguiu si implica que você tem que levar algum tempo de execução ao redor.

Um pouco mais, no sentido mais amplo de "administrado" significa seguro (via tempo de execução verificação de tipo ou análise estática exaustiva) e / ou lixo coletado:

  • OCaml
  • D
  • Ada
  • Prolog
  • Limpo
  • Eiffel

Analógico para a resposta do Efraims, qualquer programa .NET irá compilar para código de máquina, bem como, geralmente em 2 etapas (JIT), mas existe uma ferramenta NGEN para pré-compilar o MSIL a nativo.

Há uma escolha semi-GC:. GLIB

Gilb contagem de referência usar para gerenciar a vida útil do objeto. Quando a contagem refrence meet 0, um objeto é limpo.

É muito, muito mais do que inconvienient .NET ou Java ou Python, mas quando você tem que usar C, é melhor do que nada.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top