GNU APL
GNU APL est une implémentation du langage APL, libre et gratuite, sous licence GNU GPL. Sa version 1.0 a été annoncée le . Cette implémentation est utilisable sous GNU/Linux, MacOS ou Cygwin.
âł, âŽ, â, â, âż, â, â, â,Ă·, Ă,â, âœ, âč
...).Elle implémente le standard ISO 13751, "Langage APL étendu", comportant en conséquence les tableaux de tableaux.
Elle gĂšre les nombres complexes et les variables partagĂ©es qui permettent Ă un espace de travail de communiquer facilement avec le monde extĂ©rieur. Elle rend mĂȘme possible Ă qui le dĂ©sire d'utiliser APL comme langage de script (sous Linux, par exemple, avec un #! apl
ou #! /usr/bin/apl
en tĂȘte du fichier).
Généralités
GNU APL comportait, en , 60 000 lines de code C++[1]. Quelques espaces de travail (workspaces) sont fournis en standard, conservés soit sous forme éditable xml, soit sous forme de dumps binaires (PSYS) bien plus rapides à charger. La commande )LIBS permet d'en avoir la liste. Il est possible aussi de stocker ou de lire un espace de travail en APL Transfer Form (ATF) telle que définie par IBM, au moyen des commandes )OUT et )IN, pour échanger des espaces de travail avec des interpréteurs différents ; toutefois aucun espace de travail n'est fourni au départ sous cette forme.
La gestion des variables partagĂ©es (âSVO, âSVR, âSVC, âSVS, âSVQ) est implĂ©mentĂ©e. Deux espaces de travail peuvent ainsi communiquer Ă condition d'ĂȘtre pour le moment (2016) sur la mĂȘme machine.
Les processeurs auxiliaires AP100 (envoi de commandes systÚme à l'hÎte et lecture des réponses) et AP210 (lecture et écriture de fichiers) sont fournis avec leurs sources (en C) à titre d'exemple. L'utilisateur peut également étendre facilement GNU APL avec ses propres fonctions externes écrites en C.
Dans cette implémentation, les entiers comme les réels sont représentés sur 64 bits. Cela permet de travailler sans problÚme avec des entiers de 19 chiffres et correspond pour les réels à la double précision habituelle des calculs sur stations de travail scientifiques.
La version 1.4 (2014) a permis de communiquer avec des bases des donnĂ©es MySQL et PostgreSQL. La version 1.5 (2015) utilise de plus le parallĂ©lisme des microprocesseurs multi-cĆur. La version courante est la 1.8 (2020)
L'auteur et mainteneur de GNU APL se nomme JĂŒrgen Sauermann. La documentation de GNU APL en anglais est par ailleurs trĂšs dĂ©taillĂ©e : https://www.gnu.org/software/apl/apl.html
Mise en place
La mise en place avec la version 1.8 est trÚs facile : on télécharge depuis un miroir GNU le fichier apl-1.8.tar.gz depuis le répertoire APL, et on l'extrait sur sa machine dans un répertoire nommé par exemple apl. Depuis ce répertoire, il suffit de frapper :
./configure make sh-install
et ensuite apl
lorsqu'on a la main au bout de quelques secondes ou minutes.
Glyphes et clavier APL
(Vous pouvez ne pas lire cette section si la gestion des polices de caractĂšres et du clavier ne vous passionne pas dans un premier temps)
Glyphes
Depuis une console en mode texte
Pour utiliser GNU APL depuis une console en mode texte pur (donc pas sous X-Window), la police Unifont-APL8x16.psf est disponible par exemple dans les dépÎts d'Ubuntu (paquet psf-unifont, chargeable par Synaptic) ou d'autres distributions. Chargée dans /usr/share/consolefonts/, elle comporte 512 glyphes dont, outre les caractÚres APL, non seulement les caractÚres accentués français, mais également les ligatures.
Depuis une console dans une fenĂȘtre graphique
Pour usage sous X-Window, la police TrueType ttf-unifont, Ă©galement prĂ©sente dans les dĂ©pĂŽts et elle aussi chargeable par Synaptic, contient les caractĂšres nĂ©cessaires et prĂ©sente le mĂ©rite de pouvoir ĂȘtre mise Ă toutes les Ă©chelles souhaitĂ©es. Le rendu de cette police est optimal dans le corps 12, qui est celui oĂč elle a Ă©tĂ© conçue.
Clavier
Sous Linux, l'interprĂ©teur, qui utilise les caractĂšres Unicode, s'utilise dans une session de terminal que l'on ouvre en l'associant Ă une page de code appropriĂ©e. Cela est simple Ă imposer au niveau de tout le serveur X, mais peut aussi avec quelques prĂ©cautions faire l'objet d'une convention diffĂ©rente pour chaque fenĂȘtre, que celle-ci contienne un terminal ou non.
Une image du clavier proposé par défaut (USA) se trouve dans /etc/gnu-apl.d/keyboard1.txt. Il appartient à l'utilisateur de le modifier, au moyen d'un éditeur de texte, en fonction de sa propre configuration de clavier nationale. Depuis une session GNU APL, on peut l'afficher par ]KEYB (commençant par un ] et non un ), puisqu'il s'agit de l'appel d'un simple programme en C compilé appelé depuis GNU APL).
En NARS2000 et en Dyalog, les caractÚres APL s'obtiennent par combinaison d'une touche d'altération (Alt en NARS2000, Ctrl en Dyalog) et d'un caractÚre du clavier. En GNU APL, on peut utiliser une combinaison de touches pour basculer entre clavier texte et clavier APL.
Global pour toutes les fenĂȘtres sur ce serveur X
On peut utiliser l'utilitaire setxkbmap : setxkbmap apl rendra les caractĂšres APL accessibles au clavier si ttf-unifont a Ă©tĂ© installĂ©e, mais le fera pour tous les terminaux ouverts en mĂȘme temps et la police APL remplacera la police par dĂ©faut (rendant alors problĂ©matique le retour Ă la normale par un setxkbmap fr). Cependant, setxkbmap peut ĂȘtre aussi utilisĂ© pour ajouter des caractĂšres plutĂŽt que les remplacer; la commande est alors setxkbmap -model "pc105" -layout "fr,apl" -option "grp:alt_caps_toggle" : une fois cette commande passĂ©e, chaque fois que l'on presse Alt-CapsLock, on bascule alors entre les claviers français et APL[2] - [3].
SĂ©lectif pour chaque fenĂȘtre
Des mĂ©thodes d'entrĂ©e existent aussi pour les principales langues, dont le français avec ses touches mortes. Il est facile - bien que fastidieux dĂšs que l'on dĂ©passe dix touches Ă modifier - de changer la configuration en fonction de ses prĂ©fĂ©rences (clavier IBM APL2 ou NARS2000), de ses besoins, ou de ses contraintes (par exemple combinaisons de touches pouvant ĂȘtre interceptĂ©es par le systĂšme en amont de la session APL).
Akt : APL Keyboard Tool
Sur github existe un outil permettant d'associer automatiquement une série de glyphes APL à des touches du claviers altérées par la touche Alt : https://github.com/TieDyedDevil/akt à condition de désactiver les altérations déjà définies s'il en existait (raccourcis clavier, par exemple).
Dans la version 1.8 (2020)
La version 1.8 est accompagnĂ©e, outre du fichier INSTALL traditionnel, de 9 fichiers dont l'un indique comment configurer le clavier et installer les polices, et un autre comment mettre en Ćuvre l'exĂ©cution multicĆur. L'installation en est facilitĂ©e d'autant.
Appel et utilisation de l'interpréteur
AprÚs avoir installé GNU APL et mis en place comme indiqué plus haut la reconnaissance du clavier étendu français + APL, il suffit de frapper apl depuis une console et on se retrouve sous l'interpréteur. On en sortira en frappant )off.
L'absence d'Ă©diteur plein Ă©cran (contrairement Ă NARS2000) peut ĂȘtre gĂȘnante pour Ă©crire des fonctions. Il est cependant toujours possible de les prĂ©parer dans une autre fenĂȘtre et de les copier/coller dans la session GNU APL, ce qui constitue le principal intĂ©rĂȘt de l'Unicode.
La version 1.8 est fournie avec un fichier de colorisation syntaxique pour vim.
Commandes systĂšme
- )libs interroge les bibliothÚques présentes. Sont marquées "missing" celles dont le répertoire n'existe pas encore. Il faudra le créer par un mkdir -p depuis une console.
- )lib liste les espaces de travail contenus dans une bibliothĂšque.
- )load charge un espace de travail en mémoire. )save le sauvegarde sur disque.
- )fns et )vars listent les fonctions et les variables présentes dans l'espace de travail.
- )history liste les derniÚres lignes saisies au clavier (instructions ou commandes APL en général).
Fonctions systÚme spécifiques
- âcr affiche bien la reprĂ©sentation canonique d'une fonction, mais c'est 4 âcr qui correspond au âfmt de NARS2000 qui affiche en boites les donnĂ©es qui sont Ă sa droite.
- âFIO effectue des entrĂ©es/sorties de caractĂšres sur fichiers.
- âPLOT affiche la courbe des valeurs qui sont Ă sa droite.
Nouveautés de la version 1.8
- âFFT (transformĂ©e de Fourier rapide, en nombres rĂ©els comme complexes).
- âGTK (appel des fonctions de Gimp en APL).
- âRE (expressions rĂ©guliĂšres).
- Commandes systÚme définissables par l'utilisateur en APL.
- Interface entre Python et GNU APL, donnant accĂšs aux fonctions vectorielles d'APL en Python.
BibliothĂšque d'Ă©change d'exercices APL
Le site exercism permet d'Ă©changer des exercices de GNU APL : https://exercism.io/tracks/gnu-apl/
Essayer GNU APL sans l'installer
GNU APL a été porté en Javascript par Th. Baruchel et est accessible sous cette forme sur le site à l'adresse http://baruchel.hd.free.fr/apps/apl/ (voir illustration de gauche). Junger Sauermann propose également sa propre version d'essais interactifs http://juergen-sauermann.de/try-GNU-APL, à droite :
Extension au standard
Le standard APL indique ce qui doit ĂȘtre supportĂ© a minima, mais n'interdit pas pour autant les extensions. JĂŒrgen Sauermann a introduit la possibilitĂ© de transmettre une valeur entre crochets comme argument supplĂ©mentaire d'une fonction, en particulier pour gĂ©nĂ©raliser la notion d'opĂ©ration sur un axe comme dans ,[1]
ou +/[1]
tout en mettant en garde sur le fait que cette extension peut nuire à la compatibilité des programmes GNU APL avec les autres systÚmes, si ceux-ci ne l'adoptent pas. Il fournit l'exemple suivant :
âzâmoyenne[axe] a Zâ(+/[axe]a) Ă· (âŽa)[axe] â moyenne[1] 5 5âŽâł25 11 12 13 14 15 moyenne[2] 5 5âŽâł25 3 8 13 18 23
Liens externes
- (en) Site officiel
- version 1.7 de 2017
- (en) Guide de l'utilisateur
Notes et références
- devenues plus de 75000 en juin 2016, plus de 80000 en juillet 2017 et plus de 100 000 en 2020 : https://www.gnu.org/software/apl/
- Plusieurs caractÚres comme ? ou ! sont disponibles depuis les deux claviers, bien qu'à des emplacements différents sur chacun.
- Pour choisir une autre combinaison de changement de clavier, voir ici : http://pastebin.com/a2MTnXqg