Bienvenue,
sur le site officiel du langage RPL/2 ®, langage de programmation fonctionnel impur dédié au calcul scientifique.
Vos objectifs : améliorer
la portabilité
et faciliter l'écriture de vos algorithmes
numériques ou calculs symboliques sur des
calculateurs massivement parallèles.
Une solution simple : utiliser le langage RPL/2
et ses bibliothèques d'extension
![]() Cliquer pour agrandir |
![]() Cliquer pour agrandir |
En 1989, à la suite de l'acquisition d'un calculateur Hewlett-Packard 28S, j'ai été séduit par la puissance et l'extensibilité potentielle de son langage de programmation, le RPL. Je me suis alors mis à chercher sans succès un langage similaire pour pouvoir utiliser ce langage sur une station de travail. Autant dire que je n'ai jamais trouvé la perle rare.
Ayant sous la main une carte de développement munie d'un processeur 6502 et de 48 Ko de mémoire, je commence l'écriture d'un interprète RPL. Une gageure au vu de l'exiguïté de la mémoire, de la complexité d'un tel programme et de la vélocité toute relative de ce processeur 8 bits.
Heureux possesseur d'un Goupil G3 muni d'un 68B09 et tournant sous le système d'exploitation 8/16 bits TSC-Flex9, je reprends une grande partie des concepts de base du programme. Si la station en question comptait 576 Ko de mémoire, quantité gigantesque pour l'époque, le système d'exploitation utilisait une technique d'adressage de la mémoire passant par des variables virtuelles, le code devant tenir dans des pages de 64 Ko. Cette version n'a jamais été achevée faute d'avoir pu programmer un éditeur complet.
Au début des années 1990, l'apparition simultanée de systèmes d'exploitation permettant un adressage aisé de la mémoire et de compilateurs efficaces a permis le développement d'une version codée dans un langage de haut niveau. Pour un certain nombre de raisons parfaitement discutables, la mémoire du programme était essentiellement statique. Ce choix eut pour effet de rendre le RPL particulièrement inefficace et peu évolutif.
À partir de 1998, les structures internes du programme sont repensées afin d'optimiser l'utilisation de la mémoire et la vitesse de traitement. Le programme est entièrement réécrit et prend la dénomination de RPL/2. Le code source est maintenant en C, Fortran77 et Fortran9x. Le RPL/2 s'éloigne du RPL originel puisque certaines fonctions absurdes de la 28S sont corrigées (absence de conjugaison dans certaines opérations...) et que nombre de nouvelles fonctions sont ajoutées. Aujourd'hui, ce langage permet l'écriture et l'exécution de programmes sur des calculateurs massivement paralèlles.
Le langage RPL/2 est un langage utilisant un adressage par pile. Contrairement aux langages plus classiques, il ne possède pas de notion de ligne. En ce sens, il peut paraître d'apprentissage et d'utilisation difficiles. C'est effectivement le cas si on ne prend la peine de l'utiliser correctement.
Le RPL/2 utilise un préprocesseur qui transforme les fichiers de commandes passés en entrée en fichier de commandes utilisables qui seront soit interprétés (ce qui permet l'utilisation d'un debugger interne), soit compilés. Les fichiers sources sont des fichiers de texte brut. Dans l'avenir, il sera possible d'obtenir un fichier exécutable à partir des fichiers sources et de ne distribuer que ce fichier exécutable.
Le RPL/2 s'appuie sur les appels système décrits dans la norme POSIX 2001. Il est capable de fonctionner sur tout système d'exploitation compatible. La conformité à cette norme assure un bon usage des threads et des processus dans le cas d'une utilisation dans des environnements multiprocesseurs.
Le RPL/2 ou Reverse Polish Lisp/2 est ainsi un langage particulier, au sens étymologique du terme, qui pourrait être le fruit des amours contre nature entre le Lisp d'une part et le Forth d'autre part. Il prend au Forth sa notation polonaise inversée et son adressage par pile, mais ne garde qu'une pile banalisée, et au Lisp, la puissance de ses structures de contrôle.
Ce langage est à inférence de type. Les variables sont déclarées à la volée lors de leur première utilisation en fonction du type de donnée. Contrairement à d'autres langages comme le BASIC utilisant des variables automatiques, une variable qui n'a pas été initialisée n'existe pas. Il faut noter que le type d'une variable peut varier au cour de l'exécution d'un programme.
Le RPL/2 est distribué sur forme de fichiers sources. Il est utilisable sous la licence CeCILL version 2.0 du 5 septembre 2006. Il embarque des logiciels sous licences compatibles indisponibles par défaut sous certains systèmes d'exploitation.
RPL/2 est une marque commerciale déposée et est soumis aux règles du copyright. Tous droits sont réservés dans tous pays à son auteur.