El lenguaje de programación APL utiliza una serie de símbolos , en lugar de palabras del lenguaje natural, para identificar operaciones, de forma similar a los símbolos matemáticos . Antes de la adopción generalizada de Unicode , se utilizaban varias páginas de códigos EBCDIC y no EBCDIC especiales para representar los símbolos necesarios para escribir APL.
Debido a sus orígenes en los teleimpresores basados en IBM Selectric , los símbolos APL se han representado tradicionalmente en el cable utilizando un conjunto de caracteres único y no estándar. En las décadas de 1960 y 1970, existían pocos dispositivos terminales que pudieran reproducirlos; los más populares eran el IBM 2741 y el IBM 1050 equipados con un cabezal de impresión APL específico. Con el tiempo, con el uso universal de pantallas gráficas de alta calidad, dispositivos de impresión y compatibilidad con Unicode , el problema de las fuentes de caracteres APL se ha eliminado en gran medida.
IBM asigna los siguientes identificadores de caracteres (GCGID) a la sintaxis APL, que se utilizan en las definiciones de sus páginas de códigos. [1] [2] [3]
La página de códigos 293 ( CCSID 293), [20] denominada "APL (USA)", es una página de códigos EBCDIC que incluye símbolos APL, además de preservar las letras latinas básicas y los números arábigos occidentales en sus ubicaciones EBCDIC habituales. [17] [18]
La página de códigos 310 ("Graphic Escape APL/TN") incluye una gama más amplia de símbolos, pero no incluye las letras latinas básicas ni los dígitos básicos. [22] [4] Se utiliza junto con la página de códigos 37-2, [23] y los códigos de la página de códigos 310 tienen como prefijo el carácter de control Graphic Escape (EBCDIC 0x08) [24] . [6] [25]
La página de códigos 351 ("GDDM Default (USA)") [27] contiene la mayoría de los caracteres de las páginas de códigos 293 y 310 (excepto ⍷ , épsilon con subrayado) además de las letras y dígitos, reemplazando varios caracteres de control con símbolos.
La página de códigos 371, [28] registrada para su uso con ISO/IEC 2022 como ISO-IR-68 , [29] [5] es un código ASCII de 7 bits muy modificado, diseñado por el Grupo de trabajo APL de la Asociación Canadiense de Normas , destinado a usarse con APL en un entorno que permite la sobrescritura de caracteres utilizando el código de control BS (retroceso, 0x08). [29] [5]
La página de códigos 907 es utilizada por el IBM 3812, al igual que la página de códigos 906 .
La página de códigos 909 es otra codificación para APL, que se diferencia de la página de códigos 907 en que no incluye los caracteres subrayados, asigna códigos diferentes a los caracteres APL que caen en el rango 0xB0–DF y reemplaza algunos de los gráficos de reemplazo C0 de la página de códigos 437 con codificaciones alternativas para ciertos símbolos APL.
La página de códigos 910 es similar a la página de códigos 909, pero con menos flechas horizontales duplicadas, utilizando los mismos gráficos C0 que la página de códigos 437 e incluyendo algunos caracteres adicionales.
La mayoría de los símbolos APL están presentes en Unicode, en el rango Técnico Misceláneo , [30] aunque algunos productos APL pueden no tener aún Unicode, y algunos símbolos APL pueden no usarse o no estar disponibles en la implementación de un proveedor determinado.
A partir de 2010, Unicode permite almacenar APL en archivos de texto, publicarlos impresos y en la web, y compartirlos por correo electrónico y mensajería instantánea. Para introducir caracteres APL se sigue requiriendo el uso de un editor de métodos de entrada o una asignación de teclado específicos, o de una interfaz táctil específica. Las asignaciones de teclado APL están disponibles de forma gratuita para los sistemas operativos más comunes, o se pueden obtener añadiendo los símbolos APL de Unicode a la asignación de teclado existente.
En Unicode faltan los caracteres alfabéticos tradicionales subrayados incluidos en algunas de las páginas de códigos de APL; su uso se ha eliminado o ha quedado obsoleto en la mayoría de las implementaciones de APL. Estos caracteres se generaban en terminales de impresión de APL tachando una letra mayúscula con un carácter de subrayado. Algunas tablas los muestran simulados con marcado subrayado y cursiva, sin incluir las asignaciones de Unicode. [4]
IBM les asigna GCGID como "LA480000" (a la que denominan "A Line Below Capital/A Underscore (APL)"), "LB480000" ("B Line Below Capital/B Underscore (APL)") y así sucesivamente, bajo la serie "L" utilizada para las letras latinas. [1] El uso de un número par (48) en lugar de un número impar (47) se debe a que están en mayúsculas: compare el uso de SD110000 para un acento agudo solitario ´
, LA110000 para la minúscula á
y LA120000 para la mayúscula Á
. [31] Están incluidas en el esquema de área de uso privado de IBM , codificadas en orden alfabético inverso en los puntos de código de número impar de U+F8BF a U+F8F1. [12]
Los usos homólogos de 47 incluyen la serie "SD" (diacrítica) GCGID SD470000 para "Línea inferior/Subrayado discontinuo" [32] —es decir, el macrón debajo , distinto del subrayado ASCII que es SP090000 ("Subrayado/Subrayado continuo") [31] —y la serie "A" ( letra árabe ) GCGID AD470009 para el ḏāl , [33] por ejemplo. El bloque adicional extendido latino de Unicode incluye los siguientes caracteres "Línea inferior" en mayúsculas con el macrón debajo como diacrítico, para la transcripción semítica (incluye una ẖ precompuesta solo en minúsculas):
Sin embargo, esto no cubre todo el alfabeto latino básico ISO , y los glifos de referencia de IBM para los caracteres APL los muestran tanto subrayados como oblicuos , [2] y las tablas que los simulan con marcado pueden seguir el mismo ejemplo. [4] El bloque de símbolos alfanuméricos matemáticos de Unicode incluye caracteres en cursiva para su uso en notaciones donde contrastan con caracteres no cursivos. Unicode también incluye formas combinadas del macrón a continuación y del guión bajo en el bloque de marcas diacríticas combinadas ; los caracteres anteriores se descomponen canónicamente con el primero:
Tenga en cuenta los mnemónicos que asocian un carácter APL con una letra: ?( signo de interrogación ) activado , ( potencia ) activado , ( rho ) activado , ( valor base ) activado , ( eNcode ) activado , ( módulo ) activado , etc. Esto hace que sea más fácil para un hablante de lengua inglesa escribir APL en un teclado que no sea APL, siempre que uno tenga una respuesta visual en la pantalla. Además, se han producido calcomanías para colocar en teclados estándar, ya sea en la parte frontal de las teclas o en la parte superior de ellas.Q⋆PρR⊥B⊤N∣M
Las terminales IBM posteriores, en particular las estaciones de visualización IBM 3270 , tenían una disposición de teclado alternativa que es la base de algunas de las distribuciones de teclado APL modernas que se utilizan hoy en día.
Se podían obtener más caracteres APL superponiendo un carácter con otro. Por ejemplo, el símbolo de logaritmo (⍟) se formaba superponiendo + con + . Esto ampliaba las capacidades gráficas de los primeros teletipos, pero hacía más compleja la corrección de errores y la edición de líneas de programa.⇧ ShiftP⇧ ShiftO
Los fabricantes introdujeron nuevos tipos de tachado a medida que producían versiones de APL adaptadas a hardware, características del sistema, sistemas de archivos, etc. específicos. Además, los terminales de impresión y los primeros terminales de rayos catódicos APL podían mostrar tachados arbitrarios, pero a medida que las computadoras personales reemplazaron rápidamente a los terminales como dispositivo de entrada de datos, el soporte de caracteres APL comenzó a proporcionarse como una ROM del generador de caracteres APL o un conjunto de caracteres suaves generados por el dispositivo de visualización. Con la llegada de la PC moderna, los caracteres APL se definieron en fuentes específicas, eliminando la distinción entre caracteres tachados y caracteres estándar.
Finalmente, los símbolos fueron ratificados en Unicode y se les dieron puntos de código específicos, con interpretaciones inequívocas, independientemente de la fuente gráfica.