Un lenguaje de scripting o script es un lenguaje de programación que se usa principalmente para escribir scripts, es decir, programas cortos que automatizan tareas repetitivas o secuencias de pasos que de otro modo haría una persona. Los scripts simplifican tareas, aumentan la fiabilidad y reducen errores humanos. Aunque suelen ser más sencillos y rápidos de aprender que otros lenguajes, muchos lenguajes de scripting actuales son muy potentes y permiten construir aplicaciones complejas.

Cómo y dónde se ejecutan

Los scripts pueden ejecutarse de varias maneras:

  • Dentro de otro programa, por ejemplo en un navegador web (con JavaScript) o en aplicaciones como Microsoft Excel (con VBA).
  • Desde un shell en una interfaz de línea de comandos, donde hacen llamadas al sistema operativo (SO) para manipular archivos, procesos y servicios. Este tipo de shell suele ser interactivo: el usuario escribe comandos y el shell responde.
  • En servidores y mainframes para tareas programadas y gestión de sistemas, así como en servidores web para manejar peticiones y automatizar procesos de despliegue y mantenimiento.

Características comunes

  • Interpretados o seminterpretados: tradicionalmente se ejecutan por un intérprete en tiempo de ejecución, sin paso de compilación obligatorio.
  • Alta productividad: bibliotecas y sintaxis concisa permiten escribir soluciones rápidas.
  • Integración fácil con otros programas y sistemas operativos para usar funcionalidades ya existentes.
  • Portabilidad: muchos scripts se ejecutan en distintos sistemas con pocos cambios.

Definición y controversias

No existe una definición absoluta de "lenguaje de scripting". Algunos opinan que debe estar ligado a un uso específico (automatización, shell, extensiones de aplicaciones). Otros adoptan una definición más amplia e incluyen a los lenguajes de programación de propósito general que son interpretados y no necesariamente compilados. El término "propósito general" indica que un lenguaje puede utilizarse para muchas tareas diferentes. Por ejemplo, algunos lenguajes tradicionales de propósito general (como Java) han dado lugar a variantes y entornos en los que se crean scripts (por ejemplo, ciertos usos de JavaScript). En la práctica no hay una regla estricta que clasifique un lenguaje como de scripting o no.

Ejemplos y usos habituales

  • Automatización de tareas administrativas: copias de seguridad, limpieza de logs, despliegues.
  • Administración de sistemas: scripts en shell (Bash, PowerShell) para gestionar usuarios, servicios y redes.
  • Desarrollo web: JavaScript en navegadores y en servidores (Node.js) para interactividad y lógica de servidor.
  • Procesamiento de datos y texto: transformación de ficheros, generación de informes, ETL.
  • Testing y automatización de pruebas: scripts para ejecutar suites de pruebas, simulaciones y pruebas de integración.
  • Extensión de aplicaciones: macros en hojas de cálculo, scripts que amplían editores y entornos CAD o de diseño.

Lenguajes típicos de scripting

  • Bash / sh (shell scripting)
  • PowerShell
  • Python
  • JavaScript
  • Perl
  • Ruby
  • VBScript / VBA
  • Lua (usado frecuentemente como lenguaje embebido)

Ventajas y limitaciones

  • Ventajas: desarrollo rápido, fácil de probar y modificar, excelente para automatización y tareas ensambladas, gran ecosistema de librerías.
  • Limitaciones: en general menor rendimiento que programas compilados, posibles problemas de seguridad si no se validan entradas, y en algunos entornos requisitos de gestión y empaquetado para producción.

Buenas prácticas y seguridad

  • Validar y sanear entradas externas antes de pasarlas al script (especialmente en shells).
  • Controlar permisos de archivos y evitar ejecutar scripts con privilegios innecesarios.
  • Usar control de versiones y pruebas automatizadas para scripts críticos.
  • Documentar dependencias y requisitos del entorno (versiones de intérprete, librerías).

¿Cuándo elegir un lenguaje de scripting?

Considera un lenguaje de scripting cuando necesites prototipar rápido, automatizar tareas repetitivas, integrar herramientas diferentes o crear pequeñas utilidades que no justifiquen un desarrollo complejo. Para aplicaciones con requisitos estrictos de rendimiento o con arquitecturas a gran escala puede ser más apropiado un lenguaje compilado o una solución mixta (componentes críticos en código compilado y orquestación en scripts).

En resumen, un lenguaje de scripting es una herramienta flexible y práctica para automatizar, integrar y extender sistemas. Su definición puede variar según el contexto, pero su valor principal reside en facilitar tareas repetitivas y acelerar el desarrollo.