APL (langage) - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Introduction

L'APL (initialement A Programming Language, officieusement Array-Processing Language) est un langage de programmation conçu entre 1957 et 1967 par Kenneth Iverson pour décrire commodément des opérations portant globalement sur des tableaux (booléens, numériques ou, dans une moindre mesure, de caractères).

Historique

APL s’est montré particulièrement adapté en son temps aux calculs statistiques, aux ventilations, aux consolidations, aux descriptions fonctionnelles d’architectures comme celle de l’IBM 360, aux graphiques interactifs (GRAPHPAK) et à quelques travaux en combinatoire et en théorie des graphes. Il a également été utilisé pour le prototypage d’applications et l’écriture de langages de manipulation simples dans le cadre d’un infocentre en masquant les symboles appropriés sous des dénominations commodes, par exemple en permettant d’écrire simplement :

MOYENNE X pour (+/X)÷⍴X.

NORMALISER X pour X÷+/X

etc.

Il permet de manipuler aisément des tableaux de 1 à N indices (N variant de 7 à 255 selon l’implémentation considérée) de façon globale. Les opérations puissantes de feuilletage (lamination) ainsi que les opérateurs de réduction, expansion, compression, 'produit intérieur et produit extérieur évitent souvent toute nécessité d’indices de boucle explicite - ainsi d’ailleurs que l’usage de boucles lui-même.

Il utilise de nombreux symboles représentant des opérations utilisables en programmation comme en calcul immédiat à la console, par exemple le « domino » (⌹) qui inverse directement une matrice, ou résout un système d’équations linéaires surdimensionné au sens des moindres carrés.

On estimait dans les années 1970-80 qu’une équipe de 5 développeurs APL avait la puissance de développement d’une équipe de 25 programmeurs FORTRAN. L’application APL se montrait plus gourmande en ressources matérielles, mais le prix de celles-ci était en constante diminution.

Son interface initiale (bicolore en mode machine à écrire) a inspiré celle de logiciels comme Maple.

Implémentations

Architectures matérielles

Des interpréteurs APL ont existé pour l’IBM 7090, les IBM 360 à zSeries (sous TSO, VM/CMS et même CICS!), l’IBM 1130, le Xerox XDS Sigma 7 alias CII 10070, et le CII Iris 80, le Bull DPS-7, le Burroughs B1700, le Bull SEMS T1600 (ex-Télémécanique Électrique T1600), la série des Mitra, etc. Ce langage était même directement en ROM dans des ordinateurs personnels du milieu des années 1970 comme le MCM-70 ou l’IBM 5110 modèles A et C.

Des versions station de travail et ordinateur personnel en ont aussi été commercialisées ou réalisées gratuitement pour AIX, Solaris, Linux, Windows, Mac OS, OS/2 et même le DOS (une version gratuite nommée TRYAPL2 existe pour le DOS, en version anglaise comme française).

La société Microsoft elle-même considérait l'APL comme le successeur naturel de son BASIC et avait entrepris deux implémentations du langage sur 8080 et 6800, comme le montre un extrait de lettre de Bill Gates aux utilisateurs de l'Altair BASIC.

Le succès de DOS, de Windows et surtout des tableurs Multiplan et Excel fit en fin de compte abandonner ce projet, qui s'adressait à un marché potentiel bien plus restreint.

Environnements informatiques

Le mécanisme d’échange dit des processeurs auxiliaires permet à des workspaces APL de communiquer avec le monde extérieur : fichiers, SQL/DB2, TCP/IP, X-window, OpenGL, ainsi qu'autres workspaces APL et consoles du réseau actives au même moment si celles-ci en donnent l’autorisation. On peut ainsi commencer à mettre au point un calcul sur un PC, puis une fois qu’il est au point l’exécuter à distance sur un mainframe équipés de dizaines de processeurs parallèles depuis la même session.

Les processeurs auxiliaires se codent le plus souvent en langage C.

Page générée en 0.589 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise