After Hours

Kenneth Iverson et le très surprenant langage APL

Le 07-10-2025
Chapitre Personnages

Keneth Iverson est l’inventeur du langage APL (« A Programming Language »), dont la compacité du code était telle, qu’il était quasiment impossible à maintenir. Sauf à être l’auteur du code… et encore !

Les programmeurs qui se sont frottés à APL en ont gardé un souvenir mitigé. D’un côté vous avez ceux qui ont trouvé dans le formalisme d'Iverson des avancées décisives pour décrire la logique des système et les algorithmes mathématiques, pour le calcul matriciel et tensoriel, en particulier. Mais de l’autre, vous avez ceux qui ont trouvé le langage trop ésotérique et complexe, surtout s’il fallait le mettre en œuvre à partir d’une console APL, dont l’organisation n’avait rien à voir avec celles des claviers classiques Qwerty ou Azerty.

Kenneth Iverson est un informaticien canadien qui aura fait 2 grandes rencontres dans sa carrière. D’abord celle de Howard Aiken à sa sortie d’Harvard, puis celle plus globale d’IBM, avec lequel il a eu tout le loisir d’étendre et d’améliorer ce qui restera comme la notation d’Iverson, autrement dit les internes du langage APL.

Le langage APL est quand même quelque chose d’incroyable, qui sans doute n’était envisageable que dans une période où tout restait à concevoir, avec des développeurs non encore "scotchés" sur des langages évolués comme Java, C ou C++ et qui étaient sans doute plus libres dans leur tête, qu’ils ne le sont aujourd’hui.

APL est un langage des signes, il n’utilise pas de mots. Chacun des signes correspond à une fonction bien précise, ce qui contribue à l’aspect touffu, complexe, propre à faire fuir tous ceux qui ne sont pas féru de mathématiques et ne savent pas ce qu’est une matrice.

APL traite 2 types d’éléments, des numériques et des caractères, avec des particularismes qui feraient hurler les concepteurs d’aujourd’hui.

Ainsi la précision des valeurs numériques n’est pas fixe, mais s’adapte automatiquement au gré des événements, du booléen jusqu’à la virgule flottante.

Les variables sont des tableaux, à N dimensions si nécessaire, une liste étant un vecteur de rang 1 et un scalaire un vecteur de rang 0.

Il n’y a pas non plus de type, l’adaptation entre éléments se faisant là encore de manière automatique. D’autres langages utiliseront ce principe par la suite, mais Kenneth Iverson aura été le premier à le formuler de cette façon.

La grande caractéristique d’APL est le nombre de fonctions utilisables, au total une centaine, qui couvrent de nombreux domaines, arithmétiques, statistiques (minimum, maximum…), des changements de base et bien entendu tout ce qui touche au calcul matriciel et tensoriel.

Autant de fonctions qui demanderaient à être codées avec d’autres langages ou fournies via une API. Par exemple : iota N  retourne les nombres de 1 à N, ?R renvoie un nombre aléatoire entre 1 et R, A,B  concatène les matrices A et B, etc.

Un certain nombre d’opérateurs sont disponibles, là encore très surprenants : axe, balayage, produits internes et externes, avec une autre particularité, le fait qu’il n’y a pas de priorité entre eux.

Quelques exemples contribueront (peut-être) à nous rafraîchir la mémoire :

Calcul de la moyenne des N premiers nombres entiers :
N←1000
(2=+⌿0=∘.|⍨⍳N)/⍳N
Alors qu’il faut au moins une demi page en Fortran ou en C pour faire la même chose.

L’exemple suivant publié par Philippe Denoyelle de l’ACONIT veut dire que l’on tire au sort 6 nombres entre 1 et 4, que l’on ajoute 12 à chacun d’eux, qu’on les multiplie ensuite par 34,5, le résultat étant affecté à X :
X ← 34.5 x 12 + 6?4

On peut difficilement être plus concis, kenneth Iverson n’ayant manifestement pas contribué à la déforestation de la planète.
APL se lancera par la suite dans les applications de gestion, mais contrairement à ce qu’en disent ses fans, ce ne sera pas une réussite, toujours pour les mêmes raisons de lisibilité et de maintenabilité.

Kenneth Iverson sera évidemment prix Turing en 1979 . C’est le moins qu’ait pu faire cette institution pour distinguer un personnage hors du commun, qui aura emprunté systématiquement des chemins inconnus et continue aujourd’hui d'entretenir les passions.