Creo que básicamente tienes razón. Un lenguaje en tiempo de ejecución ya es un sistema totalmente flexible basado en datos. Toma una pieza de datos (el programa) y la usa para determinar cómo debe actuar sobre otros datos. Incluso podría tener un esquema multiusuario para almacenar código para que otros programas lo reutilicen (desde una ruta de inclusión hasta una administración de instalación adecuada).
Un "lenguaje de secuencias de comandos", en términos generales, es un tiempo de ejecución del lenguaje en el que esta entrada de código es legible para los humanos. Un compilador coloca un paso adicional entre el usuario y el tiempo de ejecución. No es necesario que los lenguajes de "broma" como Malbolge y APL sean legibles por humanos de ninguna forma. Pero todo es lo mismo en un nivel, y de todos modos legible por humanos no significa que todos los usuarios potenciales tengan las habilidades para leerlo o escribirlo, o se puede esperar que lo desarrollen.
Existen buenas razones por las que normalmente no expone un tiempo de ejecución de idioma directamente a los usuarios finales. La principal es que eliminar la flexibilidad aumenta la comodidad.
Si quiero escribir una publicación SO, solo quiero escribirla. Soy perfectamente capaz de escribir un programa C ++ para generarlo, pero no usaría un navegador web que expusiera un editor de programas C ++ en lugar de un cuadro de texto normal. Las personas que no conocen C ++ no solo no usarían el navegador, sino que no podrían.
Si quiero configurar ciertos parámetros comerciales, no necesariamente quiero hacerlo usando un lenguaje de especificación completo de Turing, e incluso si lo hiciera, probablemente no sea distinguible de "codificar" esos mismos parámetros comerciales en ninguna otra programación idioma. Aún debe considerar si lo que está escribiendo significa lo que quiere que signifique. Aún necesita probar que los cambios son correctos. Es decir, que aún necesita conocimientos de programación para la realización de tareas que no son triviales y no previsto por alguien que no tiene conocimientos de programación que han preparado un subsistema especializado ( "aplicación") que se le configure ( "uso").
Entonces, si está a punto de embarcarse en un sistema 100% basado en datos, que puede hacer cualquier cosa con los datos correctos, tiene dos preguntas que hacerse:
- ¿Estamos en el negocio de inventar lenguajes de programación, o deberíamos estarlo?
- ¿Será nuestro nuevo lenguaje de programación mejor (para nuestros propósitos) que los que ya tenemos y lo apoyaremos y lo desarrollaremos según sea necesario?
A veces las respuestas son afirmativas y usted escribe un lenguaje específico de dominio de algún tipo. O incluso un lenguaje de programación real de uso general si eres Sun / Microsoft / Stroustrup / van Rossum / muchos otros. A veces las respuestas son no y tienes el efecto de "plataforma interna": después de mucho esfuerzo y prueba y error, terminas con algo. Si tienes suerte, es solo ligeramente inferior al lenguaje de programación en el que lo escribiste, y no es más fácil de usar.
Algunos lenguajes son más difíciles o más fáciles de usar que otros, en particular si están especializados para un propósito como R, entonces algunos usuarios los encontrarán mucho más fáciles. Lo que probablemente no hará es hacer que la programación de aplicaciones generales sea fundamentalmente más fácil. En cualquier momento, probablemente haya varias personas / organizaciones en el mundo con el potencial para hacerlo, pero su jefe / compañía tiene que considerar honestamente si eso lo incluye a usted o no.
Hay un truco que se usa a menudo para los juegos, que es exponer los enlaces de Lua al motor del juego. Esto permite a los diseñadores programar en un lenguaje relativamente fácil, pero aun así contratar a un programador "real" cuando sea necesario para el rendimiento o para acceder a una funcionalidad particular del motor o la plataforma. Las secuencias de comandos Lua resultantes son "datos" en lo que respecta al motor. No todos necesitan incluir gran parte de lo que llamarías "lógica" en lugar de datos de configuración, y a menudo definen casi toda la trama y el entorno, pero no todo el juego. Esto no está 100% basado en datos y ciertamente no está 100% libre de errores, pero es un compromiso práctico interesante.