La mia situazione specifica, quando utilizzo un linguaggio di script interpretato in una grande applicazione:
C'è un dispositivo esterno che svolge diverse funzioni. Misure, controllo, letture. È piuttosto "stupido" e richiede un controllo preciso, passo dopo passo, compresi molti stati di attesa e processi decisionali ad hoc sul lato del meccanismo di controllo.
Sono necessarie varie funzionalità del dispositivo 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 fatto con macchine a stati finiti.
Chiunque abbia scritto una macchina a stati finiti sa che l'implementazione di uno stato di attesa è effettivamente almeno due, spesso tre o quattro stati interni della macchina. L'implementazione di venti stati di attesa per varie funzioni (e attendere le loro risposte e reagire di conseguenza) del dispositivo esterno sarebbe un'esperienza molto, molto frustrante.
Quindi, invece ci sono stati di "eseguire una funzione no-wait", "eseguire una funzione di blocco", "eseguire una funzione di ramificazione / condizionale / saltare" 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, l'uso di un linguaggio di scripting interpretato interno può ridurre enormemente la complessità dell'esecuzione di compiti abbondanti negli stati di attesa (funzioni di blocco).