Per quanto ne so, non esiste una "lingua" interpretata o una "lingua" compilata.
Le lingue specificano la sintassi e il significato delle parole chiave del codice, dei costrutti di flusso e di varie altre cose, ma non sono a conoscenza di alcuna lingua che specifichi se deve essere compilato o interpretato o meno nelle specifiche della lingua.
Ora, se la tua domanda è quando usi un compilatore di lingue rispetto a un interprete di lingue, si riduce davvero ai 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 invece dell'interprete ruby MRI. Probabilmente ci sono anche ragioni per usare l'interprete ruby di risonanza magnetica su JRuby, ma non ho familiarità con la lingua e non posso parlarne.
Benefici stimati degli interpreti:
- Nessuna compilazione significa che il tempo dalla modifica del codice al test dell'app può essere ridotto
- Non c'è bisogno di generare binari per architetture multiple perché l'interprete gestirà l'architettura astrazione (anche se si potrebbe essere necessario ancora preoccuparsi della movimentazione intero dimensioni in modo corretto, non solo la distribuzione binaria script)
Benefici stimati dei compilatori:
- Il codice nativo compilato non ha il sovraccarico di un interprete ed è quindi generalmente più efficiente in termini di tempo e spazio
- L'interoperabilità è generalmente migliore, l'unico modo per l'interoperabilità in-proc con gli script è tramite un interprete anziché un FFI standard
- Capacità di supportare architetture per le quali l'interprete non è stato compilato (come i sistemi integrati)
Tuttavia, scommetterei nel 90% dei casi che va 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 un 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. Altre letture su Wikipedia