Objeto REXX

Objeto REXX
ParadigmaMultiparadigma : orientado a objetos ( basado en clases ), procedimental ( imperativo ), estructurado
Diseñado porSimon C. Nash (IBM)
Apareció por primera vez1988 ; hace 36 años ( 1988 )
Versión estable
5.0.0 / 10 de mayo de 2023 ; hace 18 meses ( 10 de mayo de 2023 )
Versión preliminar
5.1.0
Lenguaje de implementaciónC++
PlataformaIA-32 , x86-64 , ARM , s390x
Sistema operativoMultiplataforma : Linux , Microsoft Windows , macOS , Solaris , OpenIndiana , AIX , FreeBSD , OS/2
LicenciaLicencia CPL 1.0, GPLv2
Extensiones de nombre de archivo.rxs, .rex, .rexx, .cls
Sitio webwww.rexxla.org
Implementaciones principales
Objeto REXX (hasta 2004)
ooRexx (desde 2005)
Influenciado por
Rexx , charla informal
Influenciado
NetRexx

Object REXX es un lenguaje de programación de alto nivel , de propósito general , interpretado y orientado a objetos ( basado en clases ) .

Es una continuación y una extensión significativa del lenguaje de programación Rexx (a menudo llamado "Classic Rexx"). Object REXX conserva todas las características y la sintaxis de "Classic Rexx" al tiempo que agrega capacidades completas de programación orientada a objetos (OOP). Aunque Object REXX no implementa todos los aspectos del estándar "Tecnología de la información: lenguaje de programación REXX" ANSI X3.274-1996 [1] , ofrece muchas características nuevas propias.

Siguiendo la influencia de "Classic Rexx", Object REXX está diseñado para que sea fácil de aprender, usar y mantener. Hay varias implementaciones orientadas a objetos de REXX disponibles, incluidas Open Object Rexx ("ooRexx") y Rexx Object Oriented ("roo!"). [2] : 311 

Historia

En 1988, el proyecto "Oryx" de IBM , bajo la dirección técnica de Simon C. Nash, experimentó con la fusión de "Classic Rexx" con el modelo de objetos de Smalltalk . [3] [4] La motivación detrás del proyecto era transferir las ventajas de OOP a "Classic Rexx" mientras se mantenía la compatibilidad y, por lo tanto, transferir la usabilidad de "Classic Rexx" a OOP. [5] Al principio, los proyectos se centraron en el aspecto de OOP, como tratar todo como un objeto, encapsulación y paso de mensajes basados ​​en objetos, concurrencia basada en objetos , clases y herencia . [6]

Este trabajo inicial condujo posteriormente, bajo la dirección de Rick McGuire, al primer prototipo de Object REXX, que se presentó en 1992. En 1994, IBM anunció que Object REXX reemplazaría a "Classic Rexx" como el intérprete REXX estándar en la siguiente versión de OS/2 . [4] En 1996, Object REXX [a] fue lanzado como parte del sistema operativo OS/2 Warp 4. [7] En 1997, siguieron versiones para Windows 95 , Windows NT y Linux . [8] [9] En 1999 se lanzó una versión de Object REXX para AIX V4.1.5 o superior. [10] En 2000, siguieron versiones para zLinux y Sun/Solaris . Para Windows 2000 , Windows Me , Windows 98 y Windows NT 4.0 , la última actualización importante de Object REXX se lanzó en 2001. [11]

El 12 de octubre de 2004, IBM anunció la discontinuación de Object REXX y transfirió el código fuente y los derechos de licencia [b] al grupo de interés especial (SIG) sin fines de lucro, Rexx Language Association (RexxLA). El código que IBM lanzó al código abierto no incluía las clases para IBM System Object Model (SOM) y Workplace Shell (WPS). [12] La versión OS/2 de Object REXX incluye clases para soportar SOM [13] y WPS. [14] Estas también están incluidas en el producto de continuación inicial de OS/2, eComStation , y también en su descendiente actual, ArcaOS , para el cual el intérprete Object REXX original de IBM continúa estando disponible. [15]

En 2005, RexxLA lanzó ooRexx como una nueva encarnación de Object REXX como software libre y de código abierto bajo la Licencia Pública Común . [16] Esta primera versión de ooRexx 3.0.0 ha sido refactorizada en gran medida en comparación con el código fuente original de IBM para aumentar la legibilidad. Más tarde, el núcleo de ooRexx fue reescrito en C++ puro , y se diseñó e implementó una nueva arquitectura e interfaz nativa bajo la dirección técnica de Rick McGuire. Este trabajo permitió a RexxLA lanzar ooRexx 4.0.0 con soporte para 64 bits en 2009. Hasta el día de hoy, RexxLA continúa desarrollando, brindando soporte y manteniendo ooRexx, así como "Classic Rexx" y NetRexx . Además, RexxLA organiza simposios anuales. [17]

Lanzamientos

La siguiente tabla contiene características y cambios destacables de las principales versiones de los intérpretes Object REXX y ooRexx. Todas las versiones de ooRexx y la documentación necesaria están disponibles en Sourceforge . [18] [19] Para las distribuciones basadas en Arch Linux, la versión actual y la versión de desarrollo están disponibles como Arch User Repository . Para ooRexx 5.0.0 está disponible un puerto no oficial para OS/2. Desde la versión 5.0.0, están disponibles versiones portátiles del intérprete que permiten su uso sin instalación. Para Intellij IDEA , el complemento ooRexxPlugin agrega soporte para resaltado de sintaxis , verificación de sintaxis, finalización de código y soporte de documentación modelado a partir de Javadoc usando anotaciones . [20]

Leyenda:
Versión antigua
Versión antigua, aún mantenida
Última versión
Última versión preliminar
Lanzamiento futuro
Lanzamientos importantesFecha de lanzamientoCaracterísticas y cambios notables
Versión antigua, ya no se mantiene:Objeto REXX
1.0.0
(OS/2) [21]
25 de septiembre de 1996
  • Primer lanzamiento oficial como parte de OS/2 Warp 4
Versión antigua, ya no se mantiene:Objeto REXX
1.0.0
(Windows) [8]
1997-02-28 (IE)
1997-05-30 (DE)
  • Primeras versiones para Windows como "Interpreter Edition" (IE) y "Development Edition" (DE)
  • DE también proporciona una biblioteca de clases de diálogo, un editor de diálogo gráfico y un tokenizador incorporado .
  • Proporciona construcciones de programación estructurada como , por ejemplo select, dobucles, if-then-elseramificaciones y llamadas a subrutinas.
  • Proporciona manejo de matrices, aritmética y otras funciones integradas.
  • Soporte para conceptos OOP como clases, objetos, métodos, encapsulamiento, mensajería, polimorfismo, herencia y herencia múltiple (metaclases y clases combinadas)
  • Incluye interfaces a DB2 , sockets TCP/IP y aplicaciones C/C++
Versión antigua, ya no se mantiene:Objeto REXX
1.1.0
(AIX) [22]
09-04-1999
Versión antigua, ya no se mantiene:Objeto REXX
2.1.0
(Windows) [23]
21 de abril de 2001
Versión antigua, ya no se mantiene:ooRexx
3.0.0 [24] [25]
30 de marzo de 2005
  • Primer lanzamiento de ooRexx como sucesor de código abierto de Object REXX
  • Admite 28 instrucciones de palabras clave, cuatro directivas, 29 clases con métodos asociados y 75 funciones integradas.
  • ooDialog 3.0.0 para crear interfaces gráficas de usuario en sistemas Windows
  • Incluye clases de extensión para cálculos matemáticos, manejo de sockets TCP/IP, expresiones regulares y el protocolo de transferencia de archivos.
  • Documentación PDF mejorada que admite enlaces, metainformación e indexación de documentos
Versión antigua, ya no se mantiene:ooRexx
3.1.0 [26]
21 de agosto de 2006
  • Varias mejoras
  • Documentación independiente para ooDialog
Versión antigua, ya no se mantiene:ooRexx
3.1.1 [27]
23 de noviembre de 2006
  • Soporte para Linux , Windows , AIX y Solaris
  • Funciones adicionales para la biblioteca RexxUtil
  • Métodos adicionales para varias clases
  • Adición de CircularQueueclases y métodos asociados
Versión antigua, ya no se mantiene:ooRexx
3.1.2 [28]
17 de septiembre de 2007
  • Se agregó soporte para MacOS
  • Métodos adicionales para las clases MutableBuffer, StringyObject
  • Proporciona interfaz para Open Office
Versión antigua, ya no se mantiene:ooRexx
3.2.0
22 de enero de 2008
  • Varias mejoras
Versión antigua, ya no se mantiene:ooRexx
4.0.0 [29]
30 de septiembre de 2009
  • Soporte para versiones de 64 bits de Linux , AIX y Windows
  • Interfaz de programación de aplicaciones C++ mejorada
  • Reestructuración de ooDialog y adición de 7 clases y 24 métodos
  • Adición de clases Buffer, IdentityTable, Orderable, Package, Pointer, RexxContext, Routine, WeakReferencey SocketClassy métodos asociados
  • Adición de 17 muestras para ilustrar los conceptos de ooRexx
  • Documentación independiente para la biblioteca de extensiones de Windows
  • Cuatro nuevos métodos para las clases RexxQueue, tres para las Object, cuatro para las DateTimey uno para cada una de las clases Method, StemyString
  • La MutableBufferclase ahora admite la mayoría de los Stringmétodos de clase.
  • Adición de siete métodos a la OLEObjectclase, responsables de la interfaz de vinculación e incrustación de objetos/ActiveX
  • Dejar de dar soporte al motor Windows Script Host (WSH)
Versión antigua, ya no se mantiene:ooRexx
4.1.0 [30]
28 de septiembre de 2011
Versión antigua, ya no se mantiene:ooRexx
4.2.0 [32]
23 de febrero de 2014
  • Más de 43 mejoras
  • Instalador independiente para ooDialog 4.2.3 y varias clases y métodos nuevos
  • Documentación independiente para la biblioteca externa ooSQLite
  • Compatibilidad de Systemd con el sistema Linux y cumplimiento de la base estándar de Linux
  • Agregar información de seguimiento sobre las invocaciones de métodos
  • Método adicional para cada una de las clases String, Mutablebuffer, StackFrameyQueueOrderedCollection
  • Métodos adicionales para la Relationclase, varios métodos de clasificación OrderedCollectionsy métodos para insertar y eliminar elementos para la Arrayclase.
Versión estable actual: ooRexx
5.0.0 [33]
22 de diciembre de 2022
  • Un total de 86 nuevas funciones y 76 mejoras
  • Adición de varias nuevas instrucciones y directivas de palabras clave
  • Un total de 57 clases y métodos asociados
  • Adición de clases AlarmNotification, Json, MessageNotification, RexxInfo, StringTable, StringTabley Validatey métodos asociados
Última versión preliminar de una futura versión:ooRexx
5.1.0
19-09-2024

Filosofía de diseño

ooRexx sigue la filosofía de diseño de "Classic Rexx" para crear un lenguaje de programación "centrado en el ser humano" que sea fácil de aprender, codificar, recordar y mantener. Esto se logra, en parte, manteniendo el lenguaje pequeño y siguiendo el principio del menor asombro . [2] [34] Se posibilita una sintaxis legible al no distinguir entre mayúsculas y minúsculas, de forma libre, requiriendo la menor puntuación posible y utilizando instrucciones que son un inglés sencillo. [34] Además, es un lenguaje de programación dinámico que ofrece flexibilidad y permite centrarse en el desarrollo en lugar de en las limitaciones del lenguaje. Solo hay un tipo de datos, la cadena de caracteres , que no tiene que declararse, lo que reduce el esfuerzo de los programadores en comparación con los lenguajes estrictamente tipados . [35]

Siguiendo el principio de diseño de “documentación antes de la implementación” de “Classic Rexx”, ooRexx ofrece documentación completa de acuerdo con la Guía de estilo de IBM que incluye diagramas de sintaxis y ejemplos. [34] [36]

Instrucciones

Al igual que en "Classic Rexx", hay instrucciones de asignación, instrucciones de palabras clave e instrucciones de comando, y en ooRexx también hay instrucciones de directiva. En línea con el deseo de mantener el lenguaje pequeño, solo hay treinta instrucciones de palabras clave en ooRexx 5.0.0. [36] A diferencia de muchos otros lenguajes, no se reservan palabras clave, por lo que no es necesario memorizar una larga lista de palabras reservadas . [37] En los casos en que la cadena no es una instrucción de asignación ni de palabra clave, se considera una instrucción de comando, que hace que el intérprete la pase al sistema operativo para su ejecución y establezca una variable RCpara el código de retorno. Además, la ADDRESSinstrucción permite redirigir los comandos a entornos específicos como Bourne Shell , Bash , Z-Shell , Command Prompt y otros, así como interceptar errores.

a = "hola mundo" /* instrucción de asignación */   do  i = 1 a 2 /* instrucción de palabra clave "DO" */      decir "ronda #" i ": " a /* instrucción de palabra clave "DECIR" */    fin /* instrucción de palabra clave "END" */ "echo Hello World" /* comando al sistema operativo */ decir "RC:" rc /* código de retorno */   

Forma libre

ooRexx tiene una sintaxis de formato libre donde la posición del código del programa es irrelevante, lo que permite un alto grado de flexibilidad. Antes de la ejecución, el intérprete fusiona múltiples espacios en blanco sin comillas en uno solo, mientras que una cadena de caracteres entre comillas (simples o dobles) no se modifica. La concatenación se puede solicitar explícitamente con dos barras verticales ( ||), o implícitamente separando términos con espacios o mediante términos contiguos. Opcionalmente, las cláusulas se pueden distribuir en varias líneas utilizando la coma ( ,) o el signo menos ( -) como carácter de continuación, o se pueden utilizar varias cláusulas en una sola línea, separadas por un punto y coma ( ;). [36] Dado que un lenguaje de formato libre proporciona flexibilidad y requiere que se consideren menos reglas sintácticas, se supone que facilita el esfuerzo de aprendizaje al reducir la carga cognitiva intrínseca . [38]

decir "¡Hola mundo!" /* salida: ¡Hola mundo! */  decir "Esto" 'es' - /* signo menos para continuación */     "REXX" || "!" /* salida: ¡Éste es REXX! */   

No distingue entre mayúsculas y minúsculas

Como "Classic Rexx", ooRexx es un lenguaje de programación que no distingue entre mayúsculas y minúsculas . El intérprete pone en mayúsculas todos los caracteres que no están entre comillas antes de ejecutarlos. Como no es necesario diferenciar entre mayúsculas y minúsculas, se necesitan aprender menos detalles adicionales y se evitan errores de sintaxis frustrantes. [38]

a = "¡Éste es REXX!"  Di  A /* salida: ¡Esto es REXX! */ DIGA  una salida /*: ¡Esto es REXX! */ 

Paradigma del mensaje

De manera similar al paradigma de mensajería implementado por Alan Kay en Smalltalk, todo en ooRexx es un objeto con el que se puede comunicar mediante el envío de mensajes que nombran un método. La noción de enviar mensajes a objetos como si fueran seres vivos ayuda a los principiantes a aprender los conceptos de programación orientada a objetos. [37]

A diferencia de Smalltalk, existe un operador de mensaje explícito, la tilde ( ~), donde el objeto receptor se coloca a la izquierda de él y se devuelve el resultado de la operación. Al igual que Smalltalk, los mensajes de ooRexx se pueden poner en cascada si ~~se utilizan dos tildes ( ) en lugar de una, devolviendo el objeto que recibió el método en lugar del resultado producido. El comportamiento predeterminado de la mayoría de los métodos se puede cambiar especificando una opción, que puede escribirse con todas las letras o abreviarse y no distingue entre mayúsculas y minúsculas. Esto permite una comprensión literal y reduce el esfuerzo de aprendizaje para los principiantes. [38] Por ejemplo, el método strip elimina por defecto los espacios en blanco iniciales y finales. Este comportamiento se puede cambiar, por ejemplo, especificando "leading"o "l"como opción. Mientras que las funciones están anidadas en "Classic Rexx", los mensajes se pueden encadenar en ooRexx, lo que mejora la legibilidad de una declaración . [37]

a = " ¡Soy ooRexx!"  decir  una /* salida: ¡Soy ooRexx! */ decir  una ~ Tira ( "Líder" ) /* salida: ¡Soy ooRexx! */ decir  una ~ tira ( "l" ) ~ revertir /* salida: !xxeRoo ma I */ 

Características

ooRexx está diseñado para conservar todas las características de "Classic Rexx". Cumple [c] con el estándar ANSI para el lenguaje Rexx (X3.274-1996, "Programming Language Rexx" [1] ), para la interoperabilidad entre plataformas con otras implementaciones que lo cumplan. Por lo tanto, los programas "Classic Rexx" normalmente se ejecutan bajo ooRexx sin ningún cambio. Esto facilita la transferencia tanto del código del programa como del conocimiento del desarrollador desde "Classic Rexx" a ooRexx. A esto, ooRexx agrega todas las características de OOP, como subclasificación , polimorfismo y encapsulamiento de datos . Otras características incluyen herencia múltiple a través de clases mixin .

Analizando

La PARSEinstrucción de palabra clave permite analizar de forma rápida y flexible una cadena y asignar partes de ella a variables en un solo paso. [2] La instrucción posterior se utiliza para especificar la fuente de la cadena, por ejemplo, ARGpara argumentos que se enumeran cuando se llama al programa o la función, VARpara variables, PULLpara colas de datos o entrada estándar (normalmente el teclado), VALUEpara cualquier expresión. Cuando se utiliza VALUE, WITHse requiere la palabra clave para especificar el final de una expresión, seguido de un patrón de análisis. Este patrón puede ser una lista de variables, un número de posición o delimitadores literales; es posible utilizar estos patrones en combinación. Opcionalmente, las mayúsculas y minúsculas de la cadena se pueden convertir antes del análisis. [36]

aString = "Persona: Rick McGuire"   analizar  valor  aString  con  tipo ":" primero segundo /* delimitador y lista de variables */    decir  primer  segundo /* salida: Rick McGuire */ 

Clases y métodos

Además de los tres tipos de instrucciones de "Classic Rexx", ooRexx agrega instrucciones directivas que no son ejecutables, con la primera directiva marcando el final de la parte ejecutable de un programa. [36] Para hacer que las instrucciones directivas sean fácilmente reconocibles, se introducen con dos puntos consecutivos ( ::). La ::CLASSdirectiva hace que el intérprete defina una nueva clase y la ::METHODdirectiva defina un nuevo método. La ::ATTRIBUTEdirectiva se utiliza para definir un método de acceso que puede recuperar o asignar una variable de objeto. Con la EXPOSEinstrucción, la variable de objeto se expone a un método, mientras que PARSEse puede utilizar para analizar el parámetro y asignarlo a una variable.

d = . dog ~ new ( "Bella" ) /* crea y asigna un perro */   d ~ bark /* enviar mensaje de corteza */ decir  d ~ nombre /* salida: Bella */ :: clase  perro /* directiva de clase */  ::  Nombre del atributo /* directiva del atributo */ :: método  init /* método de iniciación del objeto */  Exponer  nombre /* expone el nombre del perro */  Analizar el nombre del argumento /* asigna "Bella" al nombre */   :: método  corteza /* directiva de método */  Exponer  nombre decir  Nombre "¡hace guau!" /* salida: ¡Bella hace guau! */  

Hay cuatro tipos diferentes de clases: clases de objeto, que actúan como una fábrica para crear objetos, clases mixin que agregan métodos a otras clases, clases abstractas para proporcionar definiciones de métodos y metaclases que se pueden usar para crear otras clases. [36]

El intérprete ooRexx ofrece clases integradas y métodos y funciones asociados que realizan diversas operaciones de procesamiento de texto y números, búsqueda y comparación, capacidades de formato y cálculos aritméticos. [39]

Funciones integradas

Además de las clases integradas, ooRexx 5.0.0 proporciona 82 funciones integradas , incluidas funciones de manipulación de caracteres, conversión e información, muchas de las cuales llaman a métodos de la clase String. [36] La biblioteca de vínculo dinámico incorporada RexxUtil ofrece 29 funciones multiplataforma, 25 específicas de Windows y cuatro específicas de Unix para manipular archivos del sistema, directorios, clases y objetos. [36]

Multi-hilo

Conceptualmente, ooRexx proporciona concurrencia basada en objetos , según la cual los objetos tienen recursos independientes para ejecutar métodos y pueden comunicarse entre sí utilizando el paradigma de mensajería. Varios objetos pueden estar activos al mismo tiempo e intercambiar mensajes para la sincronización . [36] La concurrencia se puede lograr ya sea con la REPLYpalabra clave instrucción, que provoca un retorno temprano de un método mientras su resto continúa ejecutándose en un nuevo hilo, con la GUARDpalabra clave instrucción, que puede establecer un método como no protegido para que pueda ejecutarse junto con otros métodos de la misma clase, o utilizando el startmétodo de la clase Object, que hace que el receptor procese el mensaje en un hilo separado. [36]

Rastreo

Al igual que en “Classic Rexx”, la TRACEinstrucción de palabra clave y la función incorporada TRACE()facilitan la depuración, permiten controlar el nivel de detalle y habilitan la depuración interactiva en tiempo de ejecución. [40] Cuando se realiza una depuración interactiva, el intérprete hace una pausa después de la mayoría de las instrucciones que se rastrean. [36] Si bien los programas multiproceso se pueden rastrear, ooRexx 5.1.0 introduce como una adición la clase TraceObject, que proporciona información adicional como la instancia del intérprete, el número del hilo en el que se envía el mensaje y el estado de los bloqueos de protección, lo que permite juzgar qué método está bloqueado actualmente. [40]

Bibliotecas externas

Mediante la ::REQUIRES directiva , se pueden integrar paquetes de funciones externas en cada programa. Esta directiva se coloca después de la sección de código principal y permite el acceso a clases y rutinas públicas de un programa Rexx o, especificando la LIBRARYopción, a bibliotecas externas. Dichas bibliotecas suelen estar organizadas en torno a funciones específicas del dominio. [36]

La biblioteca de extensión Rexx proporciona una clase para leer y escribir archivos de valores separados por comas (CSV), para crear y procesar datos de notación de objetos JavaScript (JSON) y un entorno de subcomandos que emula parcialmente un entorno TSO / CMS . [41] La biblioteca RxSock permite incorporar protocolos TCP/IP , [42] mientras que la biblioteca RxFtp [43] proporciona específicamente acceso al protocolo de transferencia de archivos . La biblioteca RxMath ofrece funciones matemáticas avanzadas como cálculo de raíz cuadrada, función exponencial, logaritmo, seno, coseno, tangente, arcoseno y cálculo de potencia. [44]

Digamos  rxcalcsin ( 1 ) /* salida: 0.0174524064 */ :: requiere la BIBLIOTECA 'rxmath'  

Para Windows, ooRexx incluye el marco OODialog que permite producir cuadros de diálogo de Windows y, por lo tanto, interfaces gráficas de usuario . [45] El intérprete de ooRexx se entrega con varios programas de ejemplo y paquetes de funciones que demuestran el uso de este marco. [39]

Para los sistemas operativos compatibles con POSIX , la biblioteca de clases nCurses permite escribir interfaces de usuario basadas en texto utilizando la biblioteca de programación ncurses . [46] La biblioteca RxUnixSys proporciona funciones en la mayoría de los sistemas Unix para interactuar con procesos e hilos, usuarios y grupos de usuarios, archivos y sistemas de archivos y otros. [47]

Puentes

Si bien ooRexx, en comparación con Object REXX, ya no contiene clases para compatibilidad con SOM y WPS, ofrece interfaces de programación de aplicaciones (API) para interactuar con código escrito en C o C++ . [48] Además, se proporcionan clases que permiten la automatización de aplicaciones de Windows. La clase ooSQLite proporciona una interfaz para SQLite , una biblioteca en proceso que implementa un motor de base de datos SQL transaccional autónomo, sin servidor y de configuración cero . [49] También hay una biblioteca externa que implementa un puente Java bidireccional , basado en Bean Scripting Framework , llamado BSF4ooRexx, que permite utilizar clases Java en programas ooRexx. [37]

API de C/C++

Como "Rexx clásico", ooRexx incluye API para ampliar aplicaciones Rexx con programas escritos en C y viceversa. Esto incluye la creación de controladores para subcomandos utilizados en programas Rexx que se ejecutan como macros de aplicación, funciones externas que permiten una extensión directa del conjunto de funciones de ooRexx y funciones del sistema que permiten personalizar el comportamiento del intérprete. [48]

Además, hay API disponibles que permiten que las aplicaciones C++ extiendan ooRexx y viceversa. Esto incluye controladores para métodos y funciones escritos en C++ que extienden ooRexx, ambos empaquetados como bibliotecas externas. Estas bibliotecas se empaquetan como bibliotecas de vínculo dinámico en Windows o como bibliotecas compartidas en sistemas basados ​​en Unix. Una biblioteca externa se puede cargar con la ::REQUIRESdirectiva o utilizando la EXTERNALpalabra clave instruction como parte de una directiva ::ROUTINE, ::METHODo .::ATTRIBUTE

Automatización de Windows

La extensión de Windows incluye el motor de scripts de Windows Script Host (WSH) que se puede utilizar para realizar tareas de automatización general. También incluye compatibilidad con Object Linking and Embedding / ActiveX (OLE) que permite interactuar con programas de Windows a través de OLEObject. [50] La automatización OLE es un mecanismo de comunicación entre procesos desarrollado por Microsoft que se basa en un subconjunto del Modelo de objetos componentes (COM) y permite, entre otras cosas, la invocación de funciones de programa, la consulta y configuración de atributos y la interceptación de eventos de componentes. El intérprete ooRexx incluye ejemplos que demuestran algunas características de WSH, la interacción con Access , Word , Excel y otros programas a través de OLE, y una utilidad para explorar los objetos OLE disponibles. [39]

excelApplication = . OLEObject ~ new ( "Excel.Application" ) /* crear objeto para Excel */   excelApplication ~ visible = . true /* hacer que Excel sea visible */   Hoja de trabajo = excelApplication ~ Libros de trabajo ~ Agregar ~ Hojas de trabajo [ 1 ] /* agregar hoja de trabajo */   Hoja de trabajo ~ celdas ( 1 , 1 ) ~ Valor =  Primera celda /* insertar cadena en la celda */    

Además del soporte OLE, la extensión de Windows permite la interacción con el administrador de programas de Windows, el registro de eventos del sistema , el portapapeles y el registro, así como consultar, editar e interactuar con ventanas, menús o submenús. [50]

Notas

  1. ^ Incluye interfaces con el Modelo de objetos del sistema (SOM) y Workplace Shell (WPS)
  2. ^ Excluyendo los paquetes SOM y WPS
  3. ^ Object REXX y Open Object Rexx no incluyen todas las nuevas características del estándar ANSI Rexx.

Véase también

Referencias

  1. ^ ab "X3.274-1996 Instituto Nacional Estadounidense de Estándares para el Lenguaje de Programación Rexx" (PDF) .
  2. ^ abc Fosdick, Howard (2005). Referencia del programador Rexx. Wiley Publishing. ISBN 0-7645-7996-7.
  3. ^ "7 razones por las que Rexx sigue siendo importante". SmartBear.com . Consultado el 19 de junio de 2024 .
  4. ^ ab "IBM Object REXX - EDM2". www.edm2.com . Consultado el 19 de junio de 2024 .
  5. ^ Nash, Simon C. (11 de junio de 1990). "REXX orientado a objetos" (PDF) . Actas del Simposio REXX para desarrolladores y usuarios : 76-100.
  6. ^ Nash, Simon C. (21 de mayo de 2009). "Una retrospectiva de Object Rexx" (PDF) . Actas del 20.º Simposio sobre el lenguaje Rexx .
  7. ^ "IBM Object REXX para OS/2 - EDM2". www.edm2.com . Consultado el 19 de junio de 2024 .
  8. ^ ab "IBM Object REXX ahora funciona en Windows NT y Windows 95". IBM. 25 de febrero de 1997.
  9. ^ Schweizer, Manfred; Berger, Uwe (21 de abril de 2005). "De Object REXX a ooRexx" (PDF) . Actas del 16.º Simposio sobre el lenguaje Rexx .
  10. ^ "IBM Object REXX para AIX: lenguaje de programación orientado a objetos para programadores principiantes y avanzados". IBM. 30 de marzo de 1999.
  11. ^ "IBM Object REXX para Windows V2R1: Programación orientada a objetos para usuarios principiantes y avanzados". IBM. 20 de marzo de 2001.
  12. ^¿ Dónde está el soporte de SOM en 4.0.0?
  13. ^ Willis Boughton (2004). "SOM y Object REXX". EDM/2 . Consultado el 2 de febrero de 2014 .
  14. ^ "Acceso a objetos de Workplace Shell". Referencia de objetos REXX . IBM.
  15. ^ "¿ArcaOS incluye soporte para REXX?" . Consultado el 3 de septiembre de 2020 .
  16. ^ "Retirada de software y suspensión del servicio: IBM Object REXX". IBM. 12 de octubre de 2004.
  17. ^ "RexxLA - Simposios Rexx". www.rexxla.org . Consultado el 17 de mayo de 2024 .
  18. ^ "ooRexx (Open Object Rexx) - Busque /oorexx en SourceForge.net". sourceforge.net . Consultado el 18 de mayo de 2024 .
  19. ^ "ooRexx (Open Object Rexx) - Examinar /oorexx-docs en SourceForge.net". sourceforge.net . Consultado el 18 de mayo de 2024 .
  20. ^ Flatscher, Rony G. (2023). "El complemento IntelliJ IDEA ooRexxPlugin 2.2 para Rexx y ooRexx 5.0" (PDF) .
  21. ^ "IBM Object REXX para OS/2 - EDM2". www.edm2.com . Consultado el 19 de junio de 2024 .
  22. ^ "IBM Object REXX para AIX: lenguaje de programación orientado a objetos para programadores principiantes y avanzados". IBM. 30 de marzo de 1999.
  23. ^ "IBM Object REXX para Windows V2R1: Programación orientada a objetos para usuarios principiantes y avanzados". IBM. 20 de marzo de 2001.
  24. ^ "Noticias de ooRexx". Sourceforge . Consultado el 18 de mayo de 2024 .
  25. ^ Open Object Rexx Reference Version 3.0.0 Edition (PDF) . RexxLA. 24 de marzo de 2005 . Consultado el 18 de mayo de 2024 .
  26. ^ "Noticias de ooRexx". Sourceforge . Consultado el 18 de mayo de 2024 .
  27. ^ "Noticias de ooRexx". Sourceforge . Consultado el 18 de mayo de 2024 .
  28. ^ "Noticias de ooRexx". Sourceforge . Consultado el 18 de mayo de 2024 .
  29. ^ "ooRexx 4.0.0: Readme" (PDF) . Consultado el 18 de mayo de 2024 .
  30. ^ "ooRexx 4.1.0: ReleaseNotes" . Consultado el 18 de mayo de 2024 .
  31. ^ "ooSQLite: Readme" . Consultado el 18 de mayo de 2024 .
  32. ^ "ooRexx 4.2.0: Cambios" . Consultado el 18 de mayo de 2024 .
  33. ^ "ooRexx 5.0.0: Cambios" . Consultado el 18 de mayo de 2024 .
  34. ^ abc Cowlishaw, Mike (1987). "El diseño del lenguaje REXX". ACM SIGPLAN Notices . 22 (2): 26–35. doi :10.1145/24686.24687.
  35. ^ Stefik, Andreas; Siebert, Susanna (2013). "Una investigación empírica sobre la sintaxis de los lenguajes de programación". ACM Transactions on Computing Education . 13 (4): 1–40. doi :10.1145/2534973.
  36. ^ abcdefghijkl Ashley, W. David; Flatscher, Rony G.; Hessling, Mark; McGuire, Rick; Peedin, Lee; Sims, Oliver; Wolfers, Jon (2022). Documentación de ooRexx 5.0.0 Referencia de objetos abiertos Rexx (PDF) . RexxLA.
  37. ^ abcd Flatscher, Rony G.; Winkler, Till. "Uso del paradigma del mensaje para facilitar el aprendizaje de conceptos y programación orientados a objetos" (PDF) . En 2024 47th MIPRO ICT and Electronics Convention (MIPRO) : 1244–1249.
  38. ^ abc Winkler, Till; Flatscher, Rony G. "Carga cognitiva en la educación en programación: aliviando la carga de los principiantes con REXX" (PDF) . Conferencia centroeuropea sobre sistemas de información e inteligencia .
  39. ^ abc Ashley, W. David; Flatscher, Rony G.; Hessling, Marcos; McGuire, Rick; Peedín, Lee; Sims, Oliver; Wolfers, Jon (2022). Guía del programador de documentación de ooRexx 5.0.0 (PDF) . RexxLA.
  40. ^ ab Flatscher, Rony G.; Winkler, Till (2024). "Idea de una clase TraceObject para mejorar la supervisión en tiempo de ejecución de aplicaciones ooRexx". Actas del 7.º Taller internacional de ACM sobre verificación y supervisión en tiempo de ejecución : 19-24.
  41. ^ Ashley, W. David; Flatscher, Rony G.; Hessling, Mark; McGuire, Rick; Peedin, Lee; Sims, Oliver; Wolfers, Jon (2022). Documentación de ooRexx 5.0.0 Referencia de la biblioteca de extensiones de Rexx (PDF) . RexxLA.
  42. ^ Ashley, W. David; Flatscher, Rony G.; Hessling, Mark; McGuire, Rick; Peedin, Lee; Sims, Oliver; Wolfers, Jon (2022). Documentación de ooRexx 5.0.0 Referencia de funciones de socket TCP/IP de RxSock (PDF) . RexxLA.
  43. ^ Ashley, W. David; Flatscher, Rony G.; Hessling, Mark; McGuire, Rick; Peedin, Lee; Sims, Oliver; Wolfers, Jon (2022). Documentación de ooRexx 5.0.0 Referencia de la biblioteca de clases RxFtp (PDF) . RexxLA.
  44. ^ Ashley, W.David; Flatscher, Rony G.; Hessling, Marcos; McGuire, Rick; Peedín, Lee; Sims, Oliver; Wolfers, Jon (2022). ooRexx Documentación 5.0.0 Referencia de funciones matemáticas de RxMath (PDF) . RexxLA.
  45. ^ Ashley, W. David; Flatscher, Rony G.; McGuire, Rick; Peedín, Lee; Sims, Oliver; Wolfers, Jon (2019). Documentación de ooRexx 4.2.4 Referencia de ooDialog (PDF) . RexxLA.
  46. ^ Ashley, W. David; Flatscher, Rony G.; Hessling, Marcos; McGuire, Rick; Peedín, Lee; Sims, Oliver; Steinböck, Erich; Wolfers, Jon (2022). ooRexx Documentación 5.0.0 Referencia de la biblioteca de clases nCurses (PDF) . RexxLA.
  47. ^ Ashley, W. David; Flatscher, Rony G.; Hessling, Mark; McGuire, Rick; Peedin, Lee; Sims, Oliver; Steinböck, Erich; Wolfers, Jon (2022). Documentación de ooRexx 5.0.0 Referencia de funciones de extensiones de Unix (PDF) . RexxLA.
  48. ^ ab Ashley, W. David; Flatscher, Rony G.; Hessling, Mark; McGuire, Rick; Peedin, Lee; Sims, Oliver; Wolfers, Jon (2022). Documentación de ooRexx 5.0.0 Interfaces de programación de aplicaciones (PDF) . RexxLA.
  49. ^ Ashley, W. David; Flatscher, Rony G.; McGuire, Rick; Miesfeld, Mark; Peedín, Lee; Sims, Oliver; Wolfers, Jon (2022). Documentación de ooRexx 1.0.0 Referencia de ooSQLite (PDF) . RexxLA.
  50. ^ ab Ashley, W. David; Flatscher, Rony G.; Hessling, Mark; McGuire, Rick; Peedin, Lee; Sims, Oliver; Sims, Oliver; Wolfers, Jon (2022). Documentación de ooRexx 5.0.0 Referencia de extensiones de Windows (PDF) . RexxLA.

Lectura adicional

  • Ashley, W. David; Flatscher, Rony G.; Hessling, Mark; McGuire, Rick; Peedin, Lee; Sims, Oliver; Wolfers, Jon (2022). Documentación de ooRexx 5.0.0 Referencia de objetos abiertos Rexx (PDF) . RexxLA.
  • Ashley, W. David; Flatscher, Rony G.; Hessling, Marcos; McGuire, Rick; Peedín, Lee; Sims, Oliver; Wolfers, Jon (2022). Guía del programador de documentación de ooRexx 5.0.0 (PDF) . RexxLA.
  • Ashley, W. David; Flatscher, Rony G.; Hessling, Mark; McGuire, Rick; Peedin, Lee; Sims, Oliver; Sims, Oliver; Wolfers, Jon (2022). Documentación de ooRexx 5.0.0 Referencia de extensiones de Windows (PDF) . RexxLA.
  • Ashley, W. David; Flatscher, Rony G.; Hessling, Mark; McGuire, Rick; Peedin, Lee; Sims, Oliver; Wolfers, Jon (2022). Documentación de ooRexx 5.0.0 Interfaces de programación de aplicaciones (PDF) . RexxLA.
  • Asociación de Lenguaje Rexx
  • Documentación de Open Object Rexx 5.0.0
  • Abrir objeto Rexx en Sourceforge
  • Sitio web de Open Object Rexx
  • Open Object Rexx en el código Rosetta
Obtenido de "https://es.wikipedia.org/w/index.php?title=Objeto_REXX&oldid=1258152685"