La mia situazione specifica, quando uso un linguaggio di scripting interpretato in un'applicazione principale:
C'è un dispositivo esterno che svolge diverse funzioni. Misure, controllo, letture. È abbastanza "stupido" e richiede un controllo preciso, passo dopo passo, inclusi molti stati di attesa e decisioni ad-hoc sul lato del meccanismo di controllo.
Diverse funzionalità del dispositivo sono richieste in vari punti dell'applicazione principale, in momenti diversi, spesso su richiesta. L'app principale non consente gli stati di attesa in quanto tali, tutto deve essere eseguito con macchine a stati finiti.
Ora chiunque abbia scritto una macchina a stati finiti sa che implementare uno stato di attesa è effettivamente almeno due, spesso tre o quattro stati interni della macchina. Implementare venti wait-state per varie funzioni (e attendere le loro risposte e reagire di conseguenza) del dispositivo esterno sarebbe un'esperienza molto, molto frustrante.
Quindi, ci sono stati di "eseguire una funzione no-wait", "eseguire una funzione di blocco", "eseguire una funzione branching / condizionale / jump" nella macchina a stati finiti, forse sei stati in totale. E ci sono script di controllo che vengono programmati per l'esecuzione, quindi eseguiti dall'interprete che controlla il dispositivo esterno, e i loro risultati posizionati dove sono richiesti.
Riassumendo, l'applicazione: in un RTOS, utilizzando un linguaggio di scripting interpretato internamente può ridurre enormemente la complessità delle attività di esecuzione abbondanti negli stati di attesa (funzioni di blocco).