Penso che tu sia sostanzialmente corretto. Un runtime linguistico è già un sistema basato su dati completamente flessibile. Prende un pezzo di dati (il programma) e lo usa per determinare come dovrebbe agire su altri dati. Potrebbe anche avere uno schema multiutente per archiviare il codice per il riutilizzo da altri programmi (che vanno da un percorso di inclusione alla corretta gestione dell'installazione).
Un "linguaggio di scripting", approssimativamente parlando, è un runtime linguistico in cui questo input di codice è leggibile dall'uomo. Un compilatore posiziona un ulteriore passaggio tra l'utente e il runtime. Le lingue "scherzose" come Malbolge e APL non devono essere leggibili dall'uomo in nessuna forma. Ma è la stessa cosa a un livello, e comunque leggibile dall'uomo non significa che tutti i potenziali utenti abbiano le competenze per leggerlo o scriverlo, o ci si può aspettare che li sviluppino.
Vi sono buoni motivi per cui normalmente non si espone un runtime linguistico direttamente agli utenti finali. Il principale è che rimuovere la flessibilità aumenta la praticità.
Se voglio digitare un post SO, voglio solo digitarlo. Sono perfettamente in grado di scrivere invece un programma C ++ per produrlo, ma non userei un browser web che esponesse un editor di programmi C ++ invece di una normale casella di testo. Le persone che non conoscono il C ++ non solo non usano il browser, ma non potrebbero.
Se voglio configurare determinati parametri di business, non voglio necessariamente farlo usando un linguaggio di specifica completo di Turing, e anche se lo facessi probabilmente non è distinguibile dal "hard-coding" di quegli stessi parametri di business in qualsiasi altra programmazione linguaggio. Devi ancora considerare se ciò che stai scrivendo significa ciò che vuoi che significhi. Devi ancora verificare che le modifiche siano corrette. Che è, è ancora necessario competenze di programmazione per qualsiasi attività che non sono banali e non previsto da qualcuno che non ha competenze di programmazione che hanno preparato una speciale sotto-sistema ( "applicazione") per la configurazione ( "uso").
Quindi, se stai per intraprendere un sistema basato sui dati al 100%, che può fare qualsiasi cosa, dati i dati giusti, hai due domande da porsi:
- Siamo nel business di inventare linguaggi di programmazione o dovremmo esserlo?
- Il nostro nuovo linguaggio di programmazione sarà migliore (per i nostri scopi) di quelli che già abbiamo e lo sosterremo e lo svilupperemo di cui ha bisogno?
A volte le risposte sono sì e scrivi una lingua specifica del dominio di qualche tipo. O anche un vero linguaggio di programmazione generico se sei Sun / Microsoft / Stroustrup / van Rossum / molti altri. A volte le risposte sono no e si ottiene l'effetto "piattaforma interna" - dopo molti sforzi, prove ed errori si finisce con qualcosa. Se sei fortunato è solo leggermente inferiore al linguaggio di programmazione in cui lo hai scritto e non è più facile da usare.
Alcune lingue sono più difficili o più facili da usare rispetto ad altre, in particolare se sono specializzate in uno scopo come R, alcuni utenti le troveranno molto più facili. Quello che probabilmente non farai è rendere la programmazione di applicazioni generali sostanzialmente più semplice. In qualsiasi momento ci sono probabilmente diverse persone / organizzazioni al mondo con il potenziale per farlo, ma il tuo capo / azienda deve considerare onestamente se ciò include o meno.
C'è un trucco spesso usato per i giochi, che è quello di esporre i binding di Lua al motore di gioco. Ciò consente ai progettisti di programmare in un linguaggio relativamente semplice, ma di coinvolgere comunque un programmatore "reale" ove necessario per le prestazioni o per accedere a particolari funzionalità del motore o della piattaforma. Gli script Lua risultanti sono "dati" per quanto riguarda il motore. Non tutti devono includere gran parte di ciò che chiamereste "logica" invece di configurare i dati, e spesso definiscono praticamente tutta la trama e l'ambiente, ma non l'intero gameplay. Questo non è basato sui dati al 100% e certamente non è privo di errori al 100%, ma è un compromesso pratico interessante.