Creo que eres básicamente correcto. Un tiempo de ejecución de idioma es ya un sistema totalmente flexible basado en datos. Toma un dato (el programa) y lo utiliza para determinar cómo debe actuar sobre otros datos. Incluso podría tener un esquema multiusuario para almacenar el código para que otros programas lo reutilicen (desde una ruta de inclusión hasta una gestión de instalación adecuada).
Un "lenguaje de scripting", en términos generales, es un tiempo de ejecución de idioma en el que esta entrada de código es legible para el usuario. Un compilador coloca un paso adicional entre el usuario y el tiempo de ejecución. Los idiomas de "broma" como Malbolge y APL no tienen que ser legibles por humanos en ninguna forma. Pero todo es lo mismo en un nivel, y de todos modos, legible para los humanos no significa que todos los usuarios potenciales tengan las habilidades para leerlo o escribirlo, o se puede esperar que lo desarrollen.
Hay buenas razones por las que normalmente no se 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 en C ++ para generar, pero no usaría un navegador web que expusiera un editor de programas en 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 de negocios, entonces no necesariamente quiero hacerlo utilizando un lenguaje de especificación de Turing-complete, y incluso si lo hice , probablemente no se pueda distinguir de "hard- Codificación "esos mismos parámetros de negocio en cualquier otro lenguaje de programación. 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, aún necesita habilidades de programación para cualquier tarea que no sea trivial y no anticipada por alguien que tiene tiene habilidades de programación que prepararon un subsistema especializado ("aplicación") para que lo configure ( "usar").
Entonces, si estás a punto de embarcarte en un sistema basado en datos al 100%, que puede hacer cualquier cosa con los datos correctos, tienes dos preguntas que hacerte:
- ¿Estamos en el negocio de inventar lenguajes de programación o deberíamos estarlo?
- ¿Nuestro nuevo lenguaje de programación será mejor (para nuestros propósitos) que los que ya tenemos y lo apoyaremos y desarrollaremos según sea necesario?
A veces las respuestas son sí, y usted escribe un lenguaje específico de dominio de algún tipo. O incluso un lenguaje de programación de propósito general si es 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, prueba y error, terminas con algo. Si tiene suerte, es solo un poco inferior al lenguaje de programación en el que lo escribió, y no es más fácil de usar.
Algunos idiomas 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ás, es hacer que la programación general de las aplicaciones sea más sencilla. En cualquier momento, es probable que haya varias personas / organizaciones en el mundo con el potencial para hacerlo, pero su jefe / empresa debe 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 aún así contratar a un programador "real" donde sea necesario para el rendimiento o para acceder a una funcionalidad particular del motor o la plataforma. Los scripts de Lua resultantes son "datos" en lo que respecta al motor. No es necesario que todos incluyan gran parte de lo que se denomina "lógica" en lugar de datos de configuración, y con frecuencia definen prácticamente toda la trama y el entorno, pero no todo el juego. Esto no es 100% controlado por datos y ciertamente no es 100% libre de errores, pero es un compromiso práctico interesante.