Questa è solo una meraviglia che ho avuto durante la lettura di linguaggi interpretati e compilati.
Ruby è senza dubbio un linguaggio interpretato in quanto il codice sorgente viene elaborato da un interprete nel punto di esecuzione.
Al contrario, C è un linguaggio compilato, in quanto è necessario compilare il codice sorgente prima in base alla macchina e quindi eseguirlo. Questo risultato è un'esecuzione molto più rapida.
Ora arrivo a Python :
- Un codice python ( somefile.py ) quando importato crea un file ( somefile.pyc ) nella stessa directory. Supponiamo che l'importazione avvenga in una shell python o in un modulo django. Dopo l'importazione cambio un po 'il codice ed eseguo di nuovo le funzioni importate per scoprire che è ancora in esecuzione il vecchio codice. Ciò suggerisce che i file * .pyc sono file python compilati simili all'eseguibile creato dopo la compilazione di un file C, sebbene non sia possibile eseguire direttamente il file * .pyc.
- Quando il file python (somefile.py) viene eseguito direttamente (./somefile.py o python somefile.py) non viene creato alcun file .pyc e il codice viene eseguito come indica un comportamento interpretato.
Questi suggeriscono che un codice python viene compilato ogni volta che viene importato in un nuovo processo per creare un file .pyc mentre viene interpretato quando viene eseguito direttamente.
Quindi quale tipo di linguaggio dovrei considerare come? Interpretato o compilato? E come si confronta la sua efficienza con le lingue interpretate e compilate?
Secondo la pagina Interpreted Languages di wiki, è elencata come una lingua compilata su Virtual Machine Code, che cos'è significato da quello?