AccueilđŸ‡«đŸ‡·Chercher

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.

Appel de GNU APL depuis une console. La police APL n'Ă©tant pas encore installĂ©e, seuls les caractĂšres accessibles sur un clavier ASCII normal ont Ă©tĂ© utilisĂ©s pour ce test d'installation (pas de ⍳, ⍎, ←, ⎕, ⌿, ⍕, ⊂, ⊃,Ă·, ×,⍋, ⌜, âŒč...).
GNU APL traite les nombres complexes. Ici, calcul de ei x pi; conforme à la formule d'Euler. 0J1 signifie i : partie réelle 0, partie imaginaire 1.

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

Polices APL installées par Synaptic depuis les dépÎts Ubuntu

(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

Police Unifont-APL8x16 pour utilisation avec GNU APL en mode texte (pixels), dans le répertoire approprié.

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

Clavier GNU APL pour les États-Unis (QWERTY) fourni par dĂ©faut avec GNU APL. Le clavier français AZERTY permute essentiellement Q et A, Z et W, dĂ©place le M Ă  droite du L passe les chiffres en haut de casse, etc.
Clavier GNU APL français obtenu en passant la commande setxkbmap -layout "fr,apl". Cette commande crée les tables gérant le clavier, mais pas ce fichier, qui a été réalisé à la main.

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

Exemple de session GNU APL

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

Utilisation de GNU APL.js par un navigateur sur le site http://baruchel.hd.free.fr/apps/apl/ sans installation.
Essai de GNU APL (ici, version 1.7) mise Ă  disposition par Junger Sauermann

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

Notes et références

  1. 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/
  2. Plusieurs caractÚres comme ? ou ! sont disponibles depuis les deux claviers, bien qu'à des emplacements différents sur chacun.
  3. Pour choisir une autre combinaison de changement de clavier, voir ici : http://pastebin.com/a2MTnXqg
Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.