En primer lugar, los lenguajes de scripting NO ESTÁN compilados . Esa es una gran parte de lo que generalmente los define como lenguajes de secuencias de comandos. A menudo, en cambio, son "interpretados". Lo que esto significa esencialmente es que hay otro idioma (uno que se compila, la mayoría de las veces) que lee en el texto, en tiempo real, y realiza operaciones, línea por línea.
La diferencia entre este y otros lenguajes es que los lenguajes de secuencias de comandos tienden a ser más simples (comúnmente conocidos como "nivel superior"). Sin embargo, también tienden a ser un poco más lentos, ya que los compiladores tienden a optimizar muchos de los problemas que vienen con el "elemento humano" de la codificación, y el binario resultante tiende a ser más pequeño y más rápido de leer para la máquina. Además, hay menos sobrecarga de otro programa que necesita ejecutarse para leer el código que se ejecuta, con programas compilados.
Ahora, podría estar pensando: "Bueno, entiendo que es un poco más fácil, pero ¿por qué alguien renunciaría a todo ese rendimiento por un poco más de facilidad de uso?"
No estaría solo en este supuesto, sin embargo, el nivel de facilidad que tiende a obtener con los lenguajes de scripting, dependiendo de lo que esté haciendo con ellos, puede valer la pena el sacrificio en el rendimiento.
Básicamente: para los casos en que la velocidad de desarrollo es más importante que la velocidad del programa que se ejecuta, utilice un lenguaje de script. Hay MUCHAS situaciones como esta en el desarrollo del juego. Especialmente cuando se trata de cosas triviales como el manejo de eventos de alto nivel.
Editar: La razón por la que lua tiende a ser bastante popular en el desarrollo de juegos es porque es posiblemente uno de los lenguajes de script más rápidos (si no el más rápido) disponibles públicamente en la tierra. Sin embargo, con esta velocidad extra, ha sacrificado parte de su conveniencia. Dicho esto, todavía podría decirse que es más conveniente que trabajar directamente con C o C ++.
Edición importante: tras una investigación más profunda, descubrí que hay mucha más controversia sobre la definición de un lenguaje de scripting (ver la dicotomía de Ousterhout ). La crítica principal de definir un lenguaje como un "lenguaje de script" es que no es significativo para la sintaxis ni la semántica del lenguaje que se interpreta o compila.
Si bien los lenguajes que generalmente se consideran "lenguajes de secuencias de comandos" generalmente se interpretan tradicionalmente, en lugar de compilarse, la definición larga y corta de "lenguajes de secuencias de comandos" depende realmente de una combinación de cómo las personas los ven y cómo los definieron sus creadores.
En términos generales, un idioma podría considerarse fácilmente un lenguaje de secuencias de comandos (suponiendo que esté de acuerdo con la dicotomía de Ousterhout) si cumple con los siguientes criterios (según el artículo vinculado anteriormente):
- Se escriben dinámicamente
- Tienen poca o ninguna provisión para estructuras de datos complejas
- Los programas en ellos (scripts) se interpretan
Además, a menudo se acepta que un lenguaje es un lenguaje de secuencias de comandos si está diseñado para interactuar y funcionar junto con otro lenguaje de programación (generalmente uno que no se considera un lenguaje de secuencias de comandos).