Esta é apenas uma pergunta que eu tive ao ler sobre linguagens interpretadas e compiladas.
Ruby é sem dúvida uma linguagem interpretada, pois o código fonte é processado por um intérprete no ponto de execução.
Pelo contrário, C é uma linguagem compilada, pois é necessário compilar o código-fonte primeiro de acordo com a máquina e depois executar. Isso resulta em uma execução muito mais rápida.
Agora chegando ao Python :
- Um código python ( somefile.py ) quando importado cria um arquivo ( somefile.pyc ) no mesmo diretório. Digamos que a importação é feita em um shell python ou módulo django. Após a importação, altero um pouco o código e executo as funções importadas novamente para descobrir que ele ainda está executando o código antigo. Isso sugere que os arquivos * .pyc são arquivos python compilados semelhantes aos executáveis criados após a compilação de um arquivo C, embora eu não possa executar o arquivo * .pyc diretamente.
- Quando o arquivo python (somefile.py) é executado diretamente (./somefile.py ou python somefile.py), nenhum arquivo .pyc é criado e o código é executado como indica um comportamento interpretado.
Isso sugere que um código python é compilado toda vez que é importado em um novo processo para criar um .pyc enquanto é interpretado quando executado diretamente.
Então, que tipo de idioma devo considerar? Interpretado ou compilado? E como sua eficiência se compara às linguagens interpretadas e compiladas?
De acordo com a página Idiomas Interpretados do wiki , ela é listada como um idioma compilado no Código de Máquina Virtual, o que se entende por isso?
RUN
. Era como se você tivesse um compilador que executasse a etapa lexing e, em seguida, emitisse um fluxo de tokens que precisariam ser reparados novamente toda vez que o programa fosse executado. Não é como a compilação moderna de javac
códigos de bytes, como feita por, digamos , que abrange lexing, análise e otimização.