ARexx es una implementación del lenguaje Rexx para Amiga , escrita en 1987 por William S. Hawes, con una serie de características específicas de Amiga más allá de las funciones estándar de REXX. Como la mayoría de las implementaciones de REXX, ARexx es un lenguaje interpretado . Los programas escritos para ARexx se denominan " scripts " o " macros "; varios programas ofrecen la posibilidad de ejecutar scripts de ARexx en su interfaz principal como macros.
ARexx puede comunicarse fácilmente con software de terceros que implemente un "puerto ARexx". Cualquier aplicación o script de Amiga [1] puede definir un conjunto de comandos y funciones que ARexx debe abordar, haciendo que las capacidades del software estén disponibles para los scripts escritos en ARexx.
ARexx puede dirigir comandos y funciones a varias aplicaciones desde el mismo script, ofreciendo así la oportunidad de mezclar y combinar funciones de diferentes programas. Por ejemplo, un script de ARexx podría extraer datos de una base de datos , insertarlos en una hoja de cálculo para realizar cálculos sobre ellos y luego insertar tablas y gráficos basados en los resultados en un documento de procesador de textos .
ARexx fue creado por primera vez en 1987, desarrollado para Amiga por William S. Hawes. Está basado en el lenguaje REXX descrito por Mike Cowlishaw en el libro The REXX Language: A Practical Approach to Programming . [2] ARexx fue incluido por Commodore con AmigaOS 2.0 en 1990, y ha sido incluido en todas las versiones posteriores de AmigaOS. Esta versión posterior de ARexx sigue de cerca el lenguaje oficial REXX; Hawes participó más tarde en la redacción del estándar ANSI para REXX.
ARexx está escrito en lenguaje ensamblador 68000 y, por lo tanto, no puede funcionar a toda velocidad con las nuevas CPU PPC ; no se ha reescrito una versión de ARexx para ellas y aún no se incluye en MorphOS 3.0. William Hawes ya no participa en el desarrollo de programas para Amiga y ninguna otra empresa relacionada con Amiga financia nuevas versiones de ARexx. A pesar de este hecho, la versión existente de ARexx continúa utilizándose, aunque no se distribuye con MorphOS.
Del manual de ARexx:
ARexx fue desarrollado en una computadora Amiga 1000
con 512k bytes de memoria y dos unidades de disquete. El prototipo de lenguaje fue
desarrollado en C usando Lattice C , y la versión de producción fue escrita
en lenguaje ensamblador usando el ensamblador Metacomco
. La documentación fue creada usando el editor TxEd [3] , y fue escrita en TeX usando AmigaTeX .
Este es un producto 100% Amiga. [4]
ARexx es un lenguaje de programación que puede comunicarse con otras aplicaciones. Por ejemplo, si se utiliza ARexx, se pueden solicitar datos a una aplicación de base de datos y enviarlos a una aplicación de hoja de cálculo. Para poder utilizar esta función, una aplicación debe ser "compatible con ARexx", es decir, debe poder recibir comandos de ARexx y ejecutarlos. Un programa de base de datos puede tener comandos para buscar, recuperar y guardar datos (la base de datos MicroFiche Filer tiene un amplio conjunto de comandos ARexx). Un editor de texto puede tener comandos ARexx correspondientes a su conjunto de comandos de edición (el editor Textra que se incluye con JForth se puede utilizar para proporcionar un entorno de programación integrado). El programa de presentación multimedia AmigaVision también tiene un puerto ARexx integrado y puede controlar otros programas que utilicen ARexx.
ARexx puede aumentar la potencia de una computadora combinando las capacidades de varios programas. Debido a la popularidad de un paquete ARexx independiente, Commodore lo incluyó con la versión 2 de AmigaDOS .
Al igual que todas las implementaciones de REXX, ARexx utiliza una representación de datos sin tipo . Otros lenguajes de programación hacían distinciones entre números enteros , números de punto flotante , cadenas , caracteres, vectores, etc. Por el contrario, los sistemas REXX tratan todos los datos como cadenas de caracteres, lo que simplifica la escritura de expresiones y algoritmos. Como suele suceder en los lenguajes de ámbito dinámico , las variables no se declaran antes de usarlas, sino que surgen en su primer uso.
Los scripts de ARexx se benefician de un sistema de gestión de errores que supervisa la ejecución y responde en consecuencia. El programador puede optar por suspender y reanudar la ejecución del programa según sea necesario.
El conjunto de comandos de ARexx es simple, pero además de los comandos, existen las funciones de su biblioteca de referencia de Amiga (rexxsyslib.library). También es fácil agregar otras bibliotecas o funciones individuales. Los scripts de ARexx también se pueden invocar como funciones desde otros scripts de ARexx. Cualquier programa de Amiga que tenga un puerto de ARexx incorporado puede compartir sus funciones con scripts de ARexx.
Si el usuario final utiliza un programa que crea animaciones uniendo varios archivos de imágenes de mapa de bits pero que carece de capacidades de procesamiento de imágenes, podría escribir un script ARexx que realice estas acciones:
EqFiles.rexx [5] es un ejemplo conocido de un script ARexx simple escrito para automatizar procedimientos repetitivos y aburridos. Este script utiliza el programa ALeXcompare [6] para comparar archivos y, luego, encuentra todos los duplicados en un conjunto de archivos y devuelve un resultado resaltando los resultados con un color diferente.
Una de las principales características de ARexx es el hecho de que podría ampliar las capacidades de AmigaOS al agregar algunos procedimientos de los que carecía el sistema operativo. Por ejemplo, se podría escribir un programa ARexx simple para que imprima un mensaje de advertencia en la pantalla del monitor o reproduzca una señal de alerta de audio si un determinado programa de Amiga se detiene, falla o ha finalizado su tarea programada.
El siguiente script es un script ARexx mínimo que muestra advertencias dependiendo de los eventos que ocurren.
/* Alarma.rexx */ Evento ARGSI evento = 0 ENTONCES SALIR SI evento = 1 ENTONCES DECIR "El programa ha finalizado inesperadamente" SI evento = 2 ENTONCES DECIR "El programa ha terminado su trabajo" SI evento = 3 ENTONCES DECIR "No se pueden encontrar datos en el directorio seleccionado"