Non c'è (a mia conoscenza) nessuna cosa come una "lingua" interpretata o una "lingua" compilata.
Lingue specificare la sintassi e il significato di parole chiave del codice, costrutti di flusso e varie altre cose, ma io sono a conoscenza di alcun linguaggio che specifica se sia o non deve essere compilato o interpretato nella specifica lingua.
Ora, se la domanda è quando usi un compilatore linguistico o un interprete di lingua, si tratta in realtà dei pro / contro del compilatore rispetto all'interprete e allo scopo del progetto.
Ad esempio, è possibile utilizzare il compilatore JRuby per una più facile integrazione con le librerie java anziché con l'interprete rubino MRI. Probabilmente ci sono anche ragioni per usare l'interprete rubino di MRI su JRuby, però non ho familiarità con la lingua e non posso parlarne.
Vantaggi offerti dagli interpreti:
- Nessuna compilazione significa che il tempo di modifica del codice per testare l'app può essere ridotto
- Non c'è bisogno di generare binari per architetture multiple perché l'interprete gestirà l'architettura astrazione (anche se si possono è necessario preoccuparsi ancora circa della movimentazione formati interi correttamente, non solo la distribuzione binaria script)
Vantaggi offerti dai compilatori:
- Il codice nativo compilato non ha il sovraccarico di un interprete ed è quindi solitamente più efficiente in termini di tempo e spazio
- L'interoperabilità di solito è migliore, l'unico modo per l'interoperabilità in-proc con gli script è tramite un interprete piuttosto che una FFI standard
- Capacità di supportare le architetture per le quali l'interprete non è stato compilato (come i sistemi incorporati)
Tuttavia, nel 90% dei casi punterei su qualcosa di più simile a questo: voglio scrivere questo software in blub perché lo conosco bene e dovrebbe fare un buon lavoro. Userò l'interprete blub (o compilatore) perché è il metodo canonico generalmente accettato per scrivere software in blub.
Quindi TL; DR è fondamentalmente, a confronto, caso per caso, degli interpreti rispetto ai compilatori per il tuo caso d'uso specifico.
Inoltre, FFI: Foreign Function Interface, in altre parole interfaccia per l'interoperabilità con altre lingue. Maggiori informazioni su wikipedia