# ARexx

ARexx es una implementación del lenguaje informático REXX para la plataforma de computadores Commodore Amiga. Lo escribió el programador William S. Hawes en 1987, pero con una serie de características específicas para esta arquitectura y por encima de las facilidades estándar de REXX. Como la mayoría de las implementaciones REXX, ARexx es un lenguaje de programación interpretado. Los programas escritos para ARexx se llaman scripts (guiones), o macros; muchos programas de Amiga ofrecen la posibilidad de ejecutar scripts de ARexx en su interfaz principal como macros.
Este intérprete puede comunicarse fácilmente con programas de terceros que implementen un puerto ARexx. Cualquier aplicación de Amiga puede definir un conjunto de comandos y funciones para que ARexx las redirija, permitiendo que las capacidades del software estén disponibles para los scripts escritos en este lenguaje. También puede dirigir comandos y funciones a varias aplicaciones desde el mismo script, ofreciendo así la oportunidad de combinar y cotejar funciones desde distintos programas. Por ejemplo, un script ARexx podría extraer datos de una base de datos, insertarlos en una hoja de cálculo para procesarlos y, luego insertar tablas y gráficos basados en los resultados en un documento de procesador de texto.

## Historia

ARexx se creó en 1987, el programador William S. Hawes lo desarrolló para el Amiga. Está basado en el lenguaje REXX descrito por Mike Cowlishaw en el libro The REXX Language: A Practical Approach to Programming. Fue incluido en el sistema operativo AmigaOS 2.0 en 1990 por Commodore International. Esta última versión de ARexx sigue cercanamente al lenguaje REXX; posteriormente Hawes estuvo involucrado en los ensayos del estándar ANSI para REXX.
ARexx está escrito en lenguaje ensamblador y para la familia de procesadores 68000, por tanto no puede funcionar a la máxima velocidad en las nuevas CPU con tecnología PowerPC. Para estas CPU no se ha reescrito una implementación del lenguaje y todavía no existe para MorphOS. Sin embargo, puede ejecutarse mediante el emulador JIT incluido con MorphOS, llamado Trance.

## Características

Consiste en un lenguaje de programación que puede comunicarse con otras aplicaciones. Usando ARexx, se pueden solicitar datos desde una aplicación de base de datos y enviarlos a una hoja de cálculo. Para soportar esta facilidad, las aplicaciones deben ser compatibles con ARexx, teniendo la capacidad de recibir comandos y ejecutarlos. Un programa de base de datos podría contar con comandos de búsqueda como, recuperar, y salvar datos — La base de datos MicroFiche Filer contiene un amplio conjunto de comandos ARexx. Un editor de texto podría tener comandos ARexx correspondientes a su conjunto de comandos de edición — El editor de textos Textra suministrado con JForth puede usarse para proveer de un entorno integrado de programación. El programa de presentación multimedia AmigaVision también posee un puerto ARexx integrado y puede controlar otros programas que usen el intérprete.
Arexx puede aumentar la potencia de un computador combinando las capacidades de varios programas. Debido a la popularidad del paquete en modo uso solitario, Commodore lo incluyó con la versión 2 del AmigaDOS.
Como todas las implementaciones REXX, ARexx usa representación de datos sin tipo. Otros lenguajes de programación hacen distinciones entre enteros, números en coma flotante, cadenas, caracteres, vectores, etc. En contraste, los sistemas REXX tratan todos los datos como cadenas de caracteres, haciendo que sea más simple escribir expresiones y algoritmos. Tal y como a menudo ocurre en los lenguajes dinámicos, las variables no se declaran antes de usarlas, sino que se activan en su primer uso.
Los scripts en ARexx se benefician de los errores de manejo del sistema que monitorizan ejecuciones y responden en concordancia. El programador puede optar por suspender y reanudar la ejecución del programa según necesite. Su conjunto de comandos es simple, pero también incorpora las funciones de la biblioteca de referencia de Amiga, rexxsyslib.library. Además es fácil añadirle otras bibliotecas o funciones. Los scripts también pueden ser invocados como si fuesen funciones desde otros scripts de ARexx. Cualquier programa de Amiga que contenga un puerto ARexx incluido puede compartir sus funciones con estos scripts.