¿Qué son los lenguajes de scripting?

Los lenguajes de scripting son una popular familia de lenguajes de programación que se pueden utilizar para satisfacer rápidamente las exigencias más comunes. Los lenguajes de scripting antiguos se utilizaban más bien para aplicaciones muy concretas o como lenguajes pegamento, es decir, para pegar sistemas ya existentes. Con la aparición de la World Wide Web, se establecieron una serie de lenguajes de scripting para la utilización en servidores web. Puesto que los lenguajes de scripting simplifican el procesamiento de texto, son perfectos para la creación dinámica de páginas HTML.

Hoy en día, los lenguajes de scripting suponen, según el índice TIOBE, aproximadamente un tercio de los lenguajes de programación más utilizados en todo el mundo. JavaScript es prácticamente el único lenguaje de scripting que se ejecuta en el navegador en el lado del cliente, pero también los lenguajes del lado del servidor PHP, Python, Ruby y Perl son lenguajes de scripting.

¿En qué se diferencian los lenguajes de scripting y de programación?

Para comprender qué caracteriza a los lenguajes de scripting, resulta de gran ayuda conocer sus diferencias respecto a los lenguajes de programación convencionales, como C, C++ y Java. En estos lenguajes, el programador escribe un texto fuente que, en un paso posterior, se convierte en código binario. Se utilizan, por tanto, dos archivos: el archivo del texto fuente —en el que el programador trabaja— y un archivo binario que se genera a partir de él y que se ejecuta directamente en el ordenador. Como traductor entre los dos archivos se utiliza un programa especial, el denominado compilador.

La transformación del texto fuente en código binario se denomina compilación. Durante la compilación, se comprueba la plausibilidad del texto fuente: ¿Están todas las variables utilizadas realmente definidas? ¿Se adecúan los tipos de argumentos de función a las definiciones de función? ¿Ha olvidado el programador algún carácter? Esta comprobación se lleva a cabo con cada una de las compilaciones para el texto al completo y puede necesitar tiempo. El código binario resultante de la compilación está muy optimizado para trabajar muy rápido y con el menor número de errores posibles durante la ejecución. Los lenguajes compilados son, por lo tanto, particularmente útiles para tareas de alta intensidad de procesamiento y sistemas de mayor magnitud.

La ejecución de un programa escrito en lenguaje de scripting, en cambio, no conlleva compilación, es decir, no se genera ningún archivo binario a partir del texto fuente escrito por el programador. Como consecuencia, los programas escritos en lenguajes de scripting son generalmente menos eficientes en la ejecución. Sin embargo, esta merma en la eficiencia no es puramente una desventaja, sino una elección consciente: los lenguajes de scripting reducen la carga para el programador y aumentan la que recae en el procesador. Los lenguajes de scripting son especialmente adecuados para programas pequeños y medianos.

La idea de facilitar el trabajo del programador es el hilo conductor de la arquitectura de muchos lenguajes de scripting. De esta forma, se evita la gestión de almacenamiento manual, un método particularmente eficiente, pero propenso a errores. Además, en la mayoría de lenguajes de scripting no es necesario indicar el tipo de la variable y, puesto que estos programas no se compilan, tampoco hay necesidad de una función main. Con los lenguajes de scripting se puede programar software de manera más directa y con menos texto fuente. Si se comparan los siguientes ejemplos, se ve que ambos programas ofrecen el mismo resultado:

// Ejemplo "Hola mundo" en Java
class HolaMundo {
    static public void main( String args[] ) {
        System.out.println( "¡Hola, mundo!" );
    }
}
# Ejemplo "Hola, mundo" en Python
print "¡Hola, mundo!"

Características de los lenguajes de scripting

Como se ha mencionado al principio, los programas de lenguaje de scripting no necesitan ser transformados a código binario por un compilador antes de ser ejecutados. En lugar del compilador, se utiliza un programa denominado intérprete. Para entenderlo mejor, hay que imaginarse que un intérprete lee el texto fuente de arriba a abajo y, a medida que lo hace, genera y ejecuta código binario.

Si los conceptos código fuente, código binario e intérprete te resultan poco familiares, podemos recurrir al siguiente ejemplo: imagínate el texto fuente como una partitura musical para una orquesta. En este ejemplo, el código binario se corresponde con una grabación realizada de la pieza musical, almacenada en un CD. La pieza musical en el CD se puede reproducir en cualquier reproductor compatible, pero ya no se puede modificar. El programa intérprete se corresponde con la orquesta, que interpreta la pieza musical en vivo.

Cómo programar con lenguajes de scripting de manera interactiva por REPL

En muchos lenguajes de scripting es posible ejecutar el intérprete de manera interactiva. Esto se denomina modo REPL, del inglés read-eval-print-loop, que se puede entender como ciclo de lectura, ejecución y muestra. El programador transmite el texto fuente al intérprete, que lo lee y ejecuta. El intérprete muestra a continuación el resultado y espera a la siguiente introducción de datos para repetir el ciclo.

Si se produce algún fallo en el modo REPL, el programador puede visualizar los contenidos de las variables para localizarlo. Además, también es posible sobrescribir el valor de una variable y probar parte del texto fuente con el nuevo valor. De esta forma, se consigue componer un programa a partir de pequeñas piezas ya probadas. El desarrollo y la resolución de errores se realizan de una sola vez. Esto permite escribir un programa operativo con rapidez de manera especialmente sencilla.

Definir estructuras de datos complejas en lenguajes de scripting a modo de literales

El objetivo de los lenguajes de scripting es facilitar el trabajo de los programadores. Estos lenguajes ofrecen para ello una serie de herramientas, entre las que se cuentan estructuras de datos completas como secuencias de caracteres, listas, campos y objetos. Estos se pueden escribir en lenguaje de scripting en forma de los denominados literales. Así es posible proyectar estructuras de datos complejas directamente, en lugar de construirlas por medio de varios comandos. El programador puede expresar las estructuras de datos necesarias con más facilidad, lo cual le ahorra trabajo.

// Ejemplo para un literal de objeto en JavaScript
client = {
    'nombre': "Juan",
    'apellido': "Martínez",
    'edad': 40,
    'activo': true,
    'direcciones': {
        'privado': {},
        'empresa': {},
    },
}
# Ejemplo para la generación en HTML mediante literal de plantilla en JavaScript
page_title = '¿Qué son los lenguajes de scripting?'
h1 = '<h1>${page_title}</h1>'
# return "<h1>¿Qué son los lenguajes de scripting?</h1>"

Tipificación dinámica en lenguajes de scripting

En los ejemplos de código anteriores quizá te ha llamado la atención que no hay ningún tipo como String, int o bool. Sin embargo, el programa requiere informaciones de tipo para su ejecución. Entonces, ¿de dónde se obtienen?

Los lenguajes de scripting se suelen basar en la tipificación dinámica: puesto que el tipo de una variable no es fijo, sino que puede variar dependiendo del contexto, el intérprete deduce el tipo a partir del contexto. Un ejemplo:

# Ejemplo para tipificación dinámica en Python
# un nombre, representado como lista de nombre, apellido
name = ['Juan', 'Martínez']
# el tipo de la variable "name" es "list"
type(name)
# a continuación solo necesitamos los nombres
name = name[0]
# el tipo de la variable "name" ahora es "str"
type(name)

Aplicación de lenguajes de scripting

Los lenguajes de scripting se categorizan en función del uso y el lugar de utilización. Algunos se utilizan en la línea de comandos para agrupar sucesiones de órdenes y conseguir así la automatización. A este tipo de lenguajes pertenecen Bash y PowerShell.

VBA y AppleScript realizan una función similar. Con estos lenguajes es posible automatizar procesos a nivel de aplicación.

En el servidor web se utilizan PHP, Perl, Ruby, Python y JavaScript para conseguir aplicaciones web y sitios web dinámicos. JavaScript continúa siendo el único lenguaje de scripting para navegadores web. En principio solo estaba previsto para la programación de elementos interactivos, pero hoy en día se escriben aplicaciones web enteras en JavaScript.

Los lenguajes de scripting también se utilizan en los ámbitos de la estadística y la ciencia, en los que se recurre sobre todo a R y a Python.

¿Le ha resultado útil este artículo?
Page top