Lenguaje de script

Lenguaje de programación diseñado para scripts.
GDScript en Godot 3.4

En informática, un script es un conjunto de instrucciones relativamente breve y simple que normalmente automatiza un proceso que de otro modo sería manual. El acto de escribir un script se denomina scripting . El lenguaje de scripting o lenguaje de script describe un lenguaje de programación que se utiliza para crear scripts. [1]

Originalmente, la creación de scripts se limitaba a automatizar el shell de un sistema operativo y los lenguajes eran relativamente simples. Hoy en día, la creación de scripts es más generalizada y algunos lenguajes incluyen características modernas que permiten utilizarlos para el desarrollo de aplicaciones , además de para la creación de scripts.

Descripción general

Un lenguaje de programación puede ser un lenguaje de uso general o un lenguaje específico de dominio para un entorno particular. Cuando está integrado en una aplicación, puede denominarse lenguaje de extensión .

A veces se hace referencia a un lenguaje de script como un lenguaje de programación de muy alto nivel si opera en un alto nivel de abstracción, o como un lenguaje de control , particularmente para lenguajes de control de trabajos en mainframes.

El término lenguaje de scripting se utiliza a veces en un sentido más amplio, para referirse a los lenguajes de programación dinámicos de alto nivel en general. Algunos son lenguajes estrictamente interpretados , mientras que otros utilizan una forma de compilación. En este contexto, el término script se refiere a un programa pequeño en un lenguaje de este tipo; normalmente, contenido en un solo archivo, y no más grande que unos pocos miles de líneas de código.

El alcance de los lenguajes de programación varía de pequeño a grande, y de un lenguaje altamente específico de un dominio a lenguajes de programación de propósito general . Un lenguaje puede comenzar siendo pequeño y altamente específico de un dominio y luego evolucionar hasta convertirse en un lenguaje portátil y de propósito general; por el contrario, un lenguaje de propósito general puede desarrollar posteriormente dialectos especiales de dominio específico.

Idiomas notables

  • AWK , para procesamiento de texto, generalmente disponible en sistemas operativos tipo Unix
  • Groovy , scripting orientado a objetos similar a Java
  • JavaScript (más tarde: ECMAScript ), originalmente limitado a ejecutarse en un navegador web para modificar dinámicamente una página web; luego mejorado hasta convertirse en un lenguaje de programación de propósito general y ampliamente portable.
  • Lisp , familia de lenguajes de propósito general y de extensión para aplicaciones que incluyen Emacs Lisp para Emacs
  • Lua , lenguaje de extensión utilizado por muchas aplicaciones
  • Perl , [2] lenguaje de procesamiento de texto que luego se convirtió en un lenguaje de propósito general; también se utiliza como lenguaje de extensión para varias aplicaciones.
  • Python , lenguaje de uso general y de extensión
  • Rexx , lenguaje de propósito general que se ejecuta en muchas plataformas; también se utiliza como lenguaje de extensión
  • Ruby , lenguaje multiparadigma y de propósito general
  • sed , para procesamiento de texto; disponible en la mayoría de los sistemas operativos tipo Unix y adaptado a otros sistemas operativos
  • Tcl , [3] para entornos tipo Unix, popular en la década de 1990; se puede utilizar junto con Tk para desarrollar aplicaciones GUI
  • TrainzScript, lenguaje de extensión personalizado para simuladores ferroviarios de Trainz
  • Wesnoth admite scripts aportados por los usuarios

Características

El guión es una caracterización subjetiva que generalmente incluye los siguientes atributos:

Interpretado

Por lo general, los scripts no se compilan , al menos no en su sentido habitual. Generalmente, se interpretan directamente desde el código fuente o desde el bytecode o se ejecutan como nativos después de la compilación just-in-time . [4]

Corto y sencillo

Un script es generalmente relativamente corto y simple. Como no hay límite de tamaño o complejidad, el script es subjetivo. Unas pocas líneas de código sin ramificaciones probablemente se consideran un script. Una base de código de múltiples archivos, que realiza una interfaz de usuario o hardware sofisticada o algoritmos complicados o multiprogramación probablemente no se considere un script.

Automatiza

Un script generalmente automatiza una tarea que de otro modo sería realizada por una persona de forma más manual.

Lenguaje limitado

Un lenguaje que está pensado principalmente para la creación de scripts generalmente tiene capacidades limitadas en comparación con un lenguaje de uso general. Un lenguaje de scripts puede carecer de la funcionalidad necesaria para escribir aplicaciones complejas.

Comienza desde arriba

Normalmente, un script comienza a ejecutarse en la primera línea de código, mientras que una aplicación normalmente comienza en un punto especial del código llamado punto de entrada .

Por ejemplo, Java no es como un script, ya que una aplicación comienza en la función nombrada main, que no tiene por qué estar al principio del código. El código siguiente comienza en main, luego invoca printHelloWorld, que imprime "Hola mundo".

clase pública HolaMundo { public static void printHolaMundo () { System.out.println ( " HolaMundo " ) ; } public static void main ( String [] args ) { printHolaMundo ( ); } }                  

Por el contrario, el siguiente código Python imprime "Hola mundo" sin la mainfunción u otra sintaxis, como una definición de clase, requerida por Java.

imprimir ( "Hola mundo" )

Usuario único

Los scripts suelen ser creados o modificados por la persona que los ejecuta, [5] pero también suelen ser distribuidos, como cuando grandes partes de juegos están escritas en un lenguaje de script, en particular el juego T-rex de Google Chrome .

Historia

Las primeras computadoras mainframe (en la década de 1950) no eran interactivas y en su lugar utilizaban procesamiento por lotes . El lenguaje de control de trabajos (JCL) de IBM es el arquetipo de los lenguajes utilizados para controlar el procesamiento por lotes. [6]

Los primeros shells interactivos se desarrollaron en la década de 1960 para permitir la operación remota de los primeros sistemas de tiempo compartido , y estos usaban scripts de shell , que controlaban la ejecución de programas de computadora dentro de un programa de computadora, el shell. A Calvin Mooers en su lenguaje TRAC generalmente se le atribuye la invención de la sustitución de comandos , la capacidad de incrustar comandos en scripts que, cuando se interpretan, insertan una cadena de caracteres en el script. [7] Multics llama a estas funciones activas . [8] Louis Pouzin escribió un procesador temprano para scripts de comandos llamado RUNCOM para CTSS alrededor de 1964. Stuart Madnick en el MIT escribió un lenguaje de script para CP/CMS de IBM en 1966. Originalmente llamó a este procesador COMMAND, más tarde llamado EXEC . [9] Multics incluyó una rama de CTSS RUNCOM, también llamada RUNCOM. [10] EXEC finalmente fue reemplazado por EXEC 2 y REXX .

Los lenguajes como Tcl y Lua fueron diseñados específicamente como lenguajes de programación de uso general que se podían integrar en cualquier aplicación. Otros lenguajes como Visual Basic para Aplicaciones (VBA) proporcionaban una sólida integración con las funciones de automatización de un sistema subyacente. La integración de estos lenguajes de programación de uso general en lugar de desarrollar un nuevo lenguaje para cada aplicación también tenía ventajas obvias, ya que liberaba al desarrollador de aplicaciones de la necesidad de codificar un traductor de lenguaje desde cero y permitía al usuario aplicar las habilidades aprendidas en otro lugar.

Algunos programas incorporan varios lenguajes de programación diferentes. Los navegadores web modernos suelen ofrecer un lenguaje para escribir extensiones para el propio navegador y varios lenguajes integrados estándar para controlar el navegador, entre los que se incluyen JavaScript (un dialecto de ECMAScript ) o XUL .

Tipos

Los lenguajes de script se pueden clasificar en varios tipos diferentes, con un grado considerable de superposición entre ellos.

Lenguajes de pegamento

El scripting se contrasta a menudo con la programación de sistemas , como en la dicotomía de Ousterhout o " programación en lo grande y programación en lo pequeño ". En esta perspectiva, el scripting es código pegamento , que conecta componentes de software , y un lenguaje especializado para este propósito es un lenguaje pegamento . Las tuberías y los scripts de shell son ejemplos arquetípicos de lenguajes pegamento, y Perl fue desarrollado inicialmente para cumplir esta misma función. El desarrollo web puede considerarse un uso de lenguajes pegamento, que interactúan entre una base de datos y un servidor web . Pero si una cantidad sustancial de lógica está escrita en script, es mejor caracterizarlo simplemente como otro componente de software, no como "pegamento".

Los lenguajes de pegamento son especialmente útiles para escribir y mantener:

  • comandos personalizados para un shell de comandos; [11]
  • programas más pequeños que aquellos que están mejor implementados en un lenguaje compilado; [12]
  • programas "envoltorios" de ejecutables, como un archivo por lotes que mueve o manipula archivos y hace otras cosas con el sistema operativo antes o después de ejecutar una aplicación como un procesador de textos, una hoja de cálculo, una base de datos, un ensamblador, un compilador, etc.; [13]
  • guiones que pueden cambiar; [14]
  • Desarrollo rápido de aplicaciones de una solución que finalmente se implementa en otro lenguaje, generalmente compilado. [ cita requerida ]

Ejemplos de lenguaje pegamento:

Los lenguajes de macros expuestos a componentes de sistemas operativos o aplicaciones pueden servir como lenguajes de unión. Entre ellos se encuentran Visual Basic for Applications , WordBasic , LotusScript , CorelScript, Hummingbird Basic, QuickScript, Rexx, SaxBasic y WinWrap Basic. Otras herramientas como AWK también pueden considerarse lenguajes de unión, al igual que cualquier lenguaje implementado por un motor Windows Script Host (VBScript, JScript y VBA de forma predeterminada en Windows y motores de terceros, incluidas las implementaciones de Rexx, Perl, Tcl, Python, XSLT, Ruby, Modern Pascal, Delphi y C). La mayoría de las aplicaciones pueden acceder y utilizar componentes del sistema operativo a través de los modelos de objetos o sus propias funciones.

Otros dispositivos como las calculadoras programables también pueden tener lenguajes de unión; los sistemas operativos de las PDA como Windows CE pueden tener disponibles herramientas de macro nativas o de terceros que unen aplicaciones, además de implementaciones de lenguajes de unión comunes, incluidos Windows NT , DOS y algunos shells de Unix , Rexx, Modern Pascal, PHP y Perl. Según la versión del sistema operativo, están disponibles WSH y los motores de script predeterminados (VBScript y JScript).

Las calculadoras programables se pueden programar en lenguajes de unión de tres maneras. Por ejemplo, la TI-92 de Texas Instruments , por defecto de fábrica, se puede programar con un lenguaje de script de comandos. La inclusión del lenguaje de script y de unión Lua en la serie de calculadoras TI-NSpire podría considerarse como un sucesor de esto. Los principales lenguajes de programación de alto nivel integrados en la mayoría de las calculadoras gráficas (la mayoría de las veces variantes de Basic, a veces derivados de Lisp y, más raramente, derivados de C) en muchos casos pueden unir funciones de calculadora, como gráficos, listas, matrices, etc. Hay implementaciones de terceros de versiones de Basic más completas que pueden estar más cerca de las variantes enumeradas como lenguajes de unión en este artículo, y también se mencionan intentos de implementar Perl, Rexx o varios shells de sistemas operativos en las calculadoras gráficas TI y HP. Los compiladores cruzados de C basados ​​en PC para algunas de las máquinas TI y HP utilizadas con herramientas que convierten entre C y Perl, Rexx, AWK y scripts de shell a Perl, Modern Pascal, VBScript a y desde Perl hacen posible escribir un programa en un lenguaje de unión para su eventual implementación (como un programa compilado) en la calculadora. [ cita requerida ]

Idiomas del editor

Varios editores de texto admiten macros escritas ya sea mediante un lenguaje de macros integrado en el editor, por ejemplo, The SemWare Editor (TSE), vi improved (VIM), o mediante una implementación externa, por ejemplo, XEDIT , o ambos, por ejemplo, KEDIT . A veces, los editores de texto y las macros de edición se utilizan en segundo plano para proporcionar otras aplicaciones, por ejemplo, FILELIST y RDRLIST en CMS .

Lenguajes y shells de control de trabajos

Una clase importante de lenguajes de scripts ha surgido de la automatización del control de trabajos , que se relaciona con el inicio y control del comportamiento de los programas del sistema [15] (en este sentido, se podría pensar en los shells como descendientes del JCL de IBM, o lenguaje de control de trabajos , que se utilizó exactamente para este propósito). Muchos de los intérpretes de estos lenguajes funcionan también como intérpretes de línea de comandos, como el shell de Unix o MS-DOS COMMAND.COM. Otros, como AppleScript, ofrecen el uso de comandos similares al inglés para crear scripts.

Scripts de GUI

Con la llegada de las interfaces gráficas de usuario, surgió un tipo especializado de lenguaje de programación para controlar una computadora. Estos lenguajes interactúan con las mismas ventanas gráficas, menús, botones, etc., que un usuario humano. Lo hacen simulando las acciones de un usuario. Estos lenguajes se utilizan normalmente para automatizar las acciones del usuario. Estos lenguajes también se denominan " macros " cuando el control se realiza mediante pulsaciones de teclas o clics del ratón simulados, así como pulsaciones en una pantalla activada por tacto.

En principio, estos lenguajes se podrían utilizar para controlar cualquier aplicación GUI, pero en la práctica su uso está limitado porque su uso necesita el soporte de la aplicación y del sistema operativo . Hay algunas excepciones a esta limitación. Algunos lenguajes de scripts de GUI se basan en el reconocimiento de objetos gráficos a partir de los píxeles de la pantalla de visualización . Estos lenguajes de scripts de GUI no dependen del soporte del sistema operativo o la aplicación.

Cuando la GUI proporciona las interfaces adecuadas, como en IBM Workplace Shell , se puede utilizar un lenguaje de script genérico, por ejemplo OREXX , para escribir scripts de GUI.

Lenguajes específicos de la aplicación

Los lenguajes específicos de la aplicación se pueden dividir en muchas categorías diferentes, es decir, lenguajes de aplicaciones independientes (ejecutables) o lenguajes específicos de la aplicación interna (postscript, xml, gscript como algunos de los scripts ampliamente distribuidos, implementados respectivamente por Adobe, MS y Google) entre otros, que incluyen un lenguaje de scripting idiomático adaptado a las necesidades del usuario de la aplicación. Del mismo modo, muchos sistemas de juegos de computadora usan un lenguaje de scripting personalizado para expresar las acciones programadas de personajes no jugadores y el entorno del juego. Los lenguajes de este tipo están diseñados para una sola aplicación; y, si bien superficialmente pueden parecerse a un lenguaje de propósito general específico (por ejemplo, QuakeC , modelado a partir de C), tienen características personalizadas que los distinguen. Emacs Lisp , aunque es un dialecto completamente formado y capaz de Lisp , contiene muchas características especiales que lo hacen más útil para extender las funciones de edición de Emacs. Un lenguaje de scripting específico de la aplicación puede verse como un lenguaje de programación específico del dominio especializado en una sola aplicación.

Lenguajes de extensión/integrables

Se han diseñado varios lenguajes con el fin de reemplazar los lenguajes de programación específicos de la aplicación al ser integrables en los programas de aplicación. El programador de la aplicación (que trabaja en C u otro lenguaje de sistemas) incluye "ganchos" donde el lenguaje de programación puede controlar la aplicación. Estos lenguajes pueden ser técnicamente equivalentes a un lenguaje de extensión específico de la aplicación, pero cuando una aplicación incorpora un lenguaje "común", el usuario obtiene la ventaja de poder transferir habilidades de una aplicación a otra. Una alternativa más genérica es simplemente proporcionar una biblioteca (a menudo una biblioteca C) que un lenguaje de propósito general pueda usar para controlar la aplicación, sin modificar el lenguaje para el dominio específico.

JavaScript comenzó como un lenguaje para crear scripts dentro de navegadores web y aún lo es ; sin embargo, la estandarización del lenguaje como ECMAScript lo ha hecho popular como lenguaje integrable de propósito general. En particular, la implementación SpiderMonkey de Mozilla está integrada en varios entornos como Yahoo! Widget Engine . Otras aplicaciones que incorporan implementaciones ECMAScript incluyen los productos Adobe Adobe Flash ( ActionScript ) y Adobe Acrobat (para crear scripts de archivos PDF ).

Tcl fue creado como un lenguaje de extensión pero se ha llegado a utilizar con más frecuencia como un lenguaje de propósito general en roles similares a Python , Perl y Ruby . Por otro lado, Rexx fue creado originalmente como un lenguaje de control de trabajos, pero se utiliza ampliamente como lenguaje de extensión y también como lenguaje de propósito general. Perl es un lenguaje de propósito general, pero tenía el dialecto Oraperl (1990), que consiste en un binario de Perl 4 con Oracle Call Interface compilado. Sin embargo, desde entonces ha sido reemplazado por una biblioteca (Módulo Perl), DBD::Oracle. [16] [17]

Otras aplicaciones complejas y orientadas a tareas pueden incorporar y exponer un lenguaje de programación integrado para permitir a sus usuarios un mayor control y brindarles más funcionalidad de la que puede estar disponible a través de una interfaz de usuario, sin importar cuán sofisticada sea. Por ejemplo, las herramientas de creación 3D de Autodesk Maya incorporan el lenguaje integrado Maya , o Blender , que utiliza Python para cumplir esta función.

Otros tipos de aplicaciones que necesitan añadir funciones más rápido o realizar ciclos de ajuste y ejecución (por ejemplo, los motores de juegos ) también utilizan un lenguaje integrado. Durante el desarrollo, esto les permite crear prototipos de funciones más rápido y realizar ajustes con mayor libertad, sin necesidad de que el usuario tenga un conocimiento profundo del funcionamiento interno de la aplicación o de reconstruirla después de cada ajuste (lo que puede llevar una cantidad significativa de tiempo). Los lenguajes de programación utilizados para este propósito van desde los más comunes y famosos Lua y Python hasta otros menos conocidos como AngelScript y Squirrel .

Véase también

Referencias

  1. ^ "Especificación del lenguaje ECMAScript 2019". Ecma International . Consultado el 2 de abril de 2018 .
  2. ^ Sheppard, Doug (16 de octubre de 2000). "Introducción a Perl para principiantes". Perl.com . Consultado el 8 de enero de 2011 .
  3. ^ Wall, Larry (12 de diciembre de 2007). "Programar es difícil, vamos a empezar a crear scripts..." Perl.com . Archivado desde el original el 8 de diciembre de 2023.
  4. ^ Brown, Vicki; Morin, Rich (1999). "Lenguajes de scripting". MacTech . Consultado el 22 de julio de 2009 .
  5. ^ Loui, Ronald. "Elogio del scripting: verdadero pragmatismo en programación". IEEE Computer. Archivado desde el original el 23 de septiembre de 2015. Consultado el 27 de agosto de 2013 .
  6. ^ IBM Corporation (marzo de 1967). Lenguaje de control de trabajos del sistema operativo IBM System/360 (C28-6529-4) (PDF) . Archivado (PDF) del original el 25 de mayo de 2023, a través de bitsavers.
  7. ^ Mooers, Calvin (1965). "TRAC, un lenguaje de descripción de procedimientos para la máquina de escribir reactiva". Fundación TRAC . Archivado desde el original el 25 de abril de 2001. Consultado el 9 de marzo de 2012 .
  8. ^ Van Vleck, Thomas (ed.). «Multics Glossary – A — (función activa)». Multics . Consultado el 9 de marzo de 2012 .
  9. ^ Varian, Melinda (abril de 1991). "VM y la comunidad VM: pasado, presente y futuro" (PDF) . Archivado desde el original (PDF) el 6 de octubre de 2011. Consultado el 9 de marzo de 2012 .
  10. ^ Van Vleck, Thomas (ed.). «Multics Glossary – R — (RUNCOM)» . Consultado el 9 de marzo de 2012 .
  11. ^ "¿Qué es el código de pegamento (lenguaje del código de pegamento)? - Definición de WhatIs.com". WhatIs.com . Consultado el 31 de enero de 2022 .
  12. ^ Larson, Quincy (10 de enero de 2020). "Lenguajes de programación interpretados frente a compilados". Free Code Camp . Consultado el 23 de febrero de 2022 .
  13. ^ Balkis, Antón. "Guión Adalah". Consejos de Raja . Consultado el 23 de febrero de 2022 .
  14. ^ Axelsson, Mats. "Scripts de shell: ¿qué se puede cambiar?". Linux Hint . Consultado el 23 de febrero de 2022 .
  15. ^ "Conceptos básicos de control de tareas (Manual de referencia de Bash)". GNU . Consultado el 20 de mayo de 2022 .
  16. ^ "Oraperl - [Acceso de Perl OBSOLETO a bases de datos Oracle para scripts de oraperl antiguos]", metacpan.
  17. ^ "Perl", Preguntas frecuentes sobre Oracle Underground .
  18. ^ van Rossum, Guido (6-8 de enero de 1998). "Glue It All Together With Python" (Pégalo todo junto con Python). python.org. Archivado desde el original el 19 de enero de 2024.

Lectura adicional

  • Barron, David William (2001). El mundo de los lenguajes de programación . Wiley. ISBN 0-471-99886-9.
  • Patrones para aplicaciones con scripts en Wayback Machine (archivado el 10 de octubre de 2004)
Obtenido de "https://es.wikipedia.org/w/index.php?title=Lenguaje_de_script&oldid=1254928391#Lenguajes_de_pegamento"