Le langage APL sous Linux

Le langage APL (A Programming Language) a été conçu en 1964 par Ken Iverson et implémenté en 1966 sur l'IBM 360. Il utilise comme variables de base les vecteurs et les matrices, les instructions agissant sur ces variables étant représentées par des symboles spéciaux. La documentation de cette version d'APL est disponible en ligne. Un référence en français est Introduction à APL par Stéphane Pommier (Dunod, 1979). Ce livre est écrit pour l'interpréteur APL du SOLAR-16, mais la part spécifique au SOLAR ne concerne que l'interaction de l'interpéteur avec le système d'exploitation. Il existe deux interpéteurs APL sous Linux: A+ et openAPL.

A+

A+(ou APLus) est une variantes d'APL écrite part Arthur Withney (de Morgan Stanley) disponible sous forme de source C++ sous licence GPL pour différentes versions d'UNIX (Solaris, AIX), BSD (FreeBSD, NetBSD) et Linux. La page web est www.aplusdev.org.

Installation

Compilation

Il faut récupérer le paquet A+ Source 4.22-4 depuis aplusdev.org. Ensuite, il faut entrer les commandes: tar zxvf aplus-fsf-4.22-4.tar.gz cd aplus-fsf-4.22 CFLAGS=-O2 CXXFLAGS=-O2 ./configure --prefix=/usr/local/aplus-fsf-4.22 make make install Après cela, le répertoire /usr/local/aplus-fsf-4.22 doit contenir les sous répertoires bin,lib,include. Le sous répértoire bin doit contenir l'exécutable aplus.

Installation des fontes APL pour X Window System

Pour pouvoir utiliser, l'interpréteur, il faut encore installer les fontes APL sous X11 pour disposer des symboles spéciaux. Les commandes sont les suivantes: mkfontdir /usr/local/aplus-fsf-4.22/fonts/X11/pcf/ mkfontdir /usr/local/aplus-fsf-4.22/fonts/X11/bdf/ xset fp+ /usr/local/aplus-fsf-4.22/fonts/X11/pcf/ Pour vérifier que les fontes APL sont correctement installées, on peut utiliser xlsfonts. Si l'installation est réussie, la commande xlsfonts |grep apl doit produire au moins: --kapl-gallant-r-normal--0-0-72-72-m-0-iso8859-1 --kapl-gallant-r-normal--19-190-72-72-m--iso8859-1 --kapl-medium-r-normal--0-0-72-72-m-0-iso8859-1 --kapl-medium-r-normal--14-140-72-72-m--iso8859-1 --kapl-screen-r-normal--0-0-72-72-m-0-iso8859-1 --kapl-screen-r-normal--11-110-72-72-m--iso8859-1 --kapl-screen-r-normal--15-150-72-72-m--iso8859-1 La commande xfd -fn --kapl-screen-r-normal--11-110-72-72-m--iso8859-1 doit permettre de vérifier que les symboles APL apparaissent à la place des caractères accentués.

Tranlations pour le programme xterm

Pour que la disposition des symboles APL sur le clavier du PC soit en accord avec la figure: il est nécessaire d'utiliser des translations X11. Pour cela, il faut entrer la commande: xrdb -merge /usr/local/aplus-fsf-4.22/app-defaults/aplus Que l'on utilise un clavier Qwerty ou Azerty, on obtiendra toujours le symbole α en pressant Alt+a et le symbole ? en pressant Alt+q et Quote Quad en pressant Alt+L. Après cela, il est possible de lancer l'interpréteur par la commande: xterm -T aplus -fn --kapl-medium-r-normal--14-140-72-72-m--iso8859-1 -- ---e apl

Utilisation

L'interpréteur A+ différe sur quelques point de l'APL standard. En particulier (voir le livre de Pommier ou la documentation de l'IBM 360) en APL standard, on obtient une entrée au clavier en affectant Quad dans une variable, et une sortie sur écran en affectant une variable dans Quote Quad. En A+, ces deux commandes produisent une erreur. Autre différence, en APL standard, les commandes systèmes sont précédées de ). Par exemple, )off termine l'interpréteur. Dans A+, les commandes systèmes sont précédées d'un $. On quitte donc l'interpréteur en entrant $off. Il est commode d'écrire un script shell a+ placé dans /usr/local/bin: #!/bin/sh xset fp+ /usr/local/aplus-fsf-4.22/fonts/X11/pcf/ xrdb -merge /usr/local/aplus-fsf-4.22/app-defaults/aplus xterm -T aplus -fn --kapl-medium-r-normal--14-140-72-72-m--iso8859-1 -- ---e /usr/local/aplus-fsf-4.22/bin/aplus pour pouvoir lancer l'interpréteur en entrant simplement a+.

OpenAPL

openAPL est basé sur l'interpréteur APL\11 développé à Bell Labs par Ken Thomson. Il est malcommode d'utilisation avec un clavier AZERTY, mais s'utilise facilement avec un clavier QWERTY, et demande des modifications mineures pour fonctionner avec un clavier QWERTZ (suisse).

Installation

Compilation

Récupérer openapl-0.14.tar.gz depuis la page Web d'openAPL. Utiliser ensuite les commandes: tar zxvf openapl-0.14.tar.gz ./configure --prefix=/usr/local make make install

Installation des fontes pour X Window System

Les fontes pour X-Window system sont dans openAPL/terminal/XFree86/fonts/. Pour les installer, faire: cd openAPL/terminal/XFree86/fonts/ bdftocpf *.bdf cp *.bdf *.pcf /usr/X11R6/share/fonts/misc mkfontdir /usr/X11R6/share/fonts/misc On peut vérifier avec xlsfonts que les fontes sont correctement installées. La commande: xlsfonts | grep apl doit produire apl8x13 aplox.108 aplox.216 aplox.300 aplox.150 La comamnde xfd -fn apl8x13 doit afficher les caractères APL.
ATTENTION : On ne peut pas utiliser les fontes APL pour A+ avec OpenAPL ou vice-versa !
En effet, OpenAPL utilise un code ASCII différent de celui utilisé dans A+ pour représenter le même symbole APL. Une fonte OpenAPL affichera un caractère iota pour le code ASCII représentant iota pour OpenAPL. Mais pour A+, ce même code ASCII correspondra à par exemple 'Quote Quad', et un iota 30 entré dans une fenêtre xterm en utilisant la fonte conçue pour Open APL sera interprété comme 'Quote Quad' 30 par A+, ce qui donnera un message d'erreur au lieu d'un vecteur contenant les entiers de 0 à 29.

Redéfinition du clavier

Pour pouvoir entrer les symboles APL, il faut charger la définition de clavier QWERTY APL avec la commande: xmodmap apl2741.xmap

ATTENTION: Il ne faut pas utiliser cette commande avec un clavier AZERTY !

En effet, le fichier apl2741.xmap définit un clavier QWERTY avec des symboles APL. Utiliser xmodmap avec ce fichier sur une machine à clavier AZERTY redéfinit le clavier en clavier QWERTY pour toutes les applications X-Window (y compris les fenêtres xterm exécutant un shell). Presser la touche a produit alors un q dans toutes les applications X-Window.

Avec un clavier QWERTZ, il faut éditer le fichier et permuter les codes des touches Y et Z avant de redéfinir le clavier

Il existe deux méthodes pour utiliser OpenAPL avec un clavier AZERTY.
  1. Écrire un ficher apl2741fr.xmap pour définir un clavier APL AZERTY comme dans la figure ci dessous.
  2. Définir des translations pour une fenêtre xterm, comme pour A+

Les deux méthodes sont envisageables. L'inconvénient de la première est la redéfinition des caractères accentués. L'inconvénient de la seconde est de nécessiter de déterminer les codes ASCII des caractères APL à partir de la définition des fontes, puis de les associer aux touches du clavier AZERTY avec une translation par touche. touches du clavier AZERTY avec une translation par touche.

Utilisation

OpenAPL est plus proche de l'APL standard (cf. livre de Pommier) qu'A+. Un exemple de session APL est représenté sur la figure: La documentation décrit les I-beams spécifiques à OpenAPL et les fonctions Quad pour manipuler les fichiers et les processus. L'interpréteur est lancé à partir d'un script shell qui initialise le clavier et sélectionne la fonte appropriée. Si on utilise un clavier AZERTY, il faut modifier ce script et remplacer consolemap=/apl2741.map par consolemap=/apl2741-fr2.xmap