PL/I

PL/I

Le PL/I ou PL/1 (Programming Language number 1) est un langage de programmation développé par IBM dans les débuts des années 1970. Son objectif était d'être universel et de pouvoir remplacer indifféremment les langages à destination scientifique, tels que FORTRAN et ALGOL, et le langage COBOL, plus adapté aux problèmes de comptabilité et de gestion. Il permettait même l'accès à des fonctions autrefois réservées à la programmation système, comme la gestion de zones dynamiques de mémoire allouées à la demande (et non simplement à l'entrée dans un bloc) et de pointeurs.

Son objectif était de devenir le langage privilégié de programmation des ordinateurs universels IBM 360 et 370.

Sa syntaxe ajoutait aux idées de FORTRAN certaines idées de COBOL (structures, calcul en mode décimal), et d'ALGOL (structure de blocs imbriqués). Toutefois, les programmeurs de ces deux langages ne communiquaient guère entre eux à l'époque, et chacun jugeait inutile et encombrant ce qui avait été inclus pour l'autre - et vice versa. Son compilateur nécessitait également des machines importantes, et ne comportait au départ ni optimiseur, ni compilateur incrémental (le PL/I Optimizing compiler et le PL/I Checkout compiler ne viendront que plus tard).

Ce langage avait beaucoup des caractéristiques de ce qui sera plus tard le C, et même déjà certaines du C++. IBM déposa les noms PL/1 à PL/100 pour éviter de perdre le contrôle des spécifications du langage. Un effet non prévu de cette décision fut de dissuader la concurrence de nommer « PL/I » ses propres implémentations, qui prirent des noms voisins : « SL/1 », « CPL/1 », « PL/M », « PL/C »... Devant la multitude de ces appellations, la crainte d'une balkanisation du langage (et des frais de migration associés en cas de changement de constructeur) dissuada les équipes informatiques d'y migrer. Le lancement du langage, malgré ses qualités (gestion simple du multitasking, récursivité, structures de blocs, facilités de debugging et de profilage, allocation dynamique dans des pools de mémoire eux-mêmes dynamiques (AREA), procédures génériques analogues aux templates de C++) ne rencontra donc pas le vif succès attendu.

Sommaire

Caractéristiques

  • Un objectif du langage est que chacun puisse l'utiliser sans avoir à en connaître la totalité. Il n'y a en conséquence pas de mots réservés dans PL/I.
  • Un programmeur doit pouvoir utiliser un nom défini de façon externe - par exemple TIME - sans avoir à se demander si c'est une variable ou une fonction sans argument.
  • Les instructions d’entrée sortie font partie du langage et ne sont pas des fonctions de bibliothèques externes.

Défauts

Donc des qualités, mais aussi des défauts qui expliquent la quasi-disparition de ce langage de nos jours. Son principal défaut était d’avoir voulu être un couteau suisse à 24 lames. Le langage aurait beaucoup gagné à ne pas être cette fusion intégrale du Fortran et du Cobol. Les bizarreries du Fortran avec ses instructions FORMAT et ses GOTO calculés combinées aux curiosités du Cobol avec ses PICTURE et son tri de fichier intégré ont fait du PL/I un langage certes complet mais un peu lourd.[style à revoir]

Héritier

Il existe un héritier du PL/I, tout du moins un héritier de la syntaxe claire du PL/I, c’est le langage procédural REXX.


Et maintenant ?

En 2010, très peu de sites font encore des développements en PL/I[réf. souhaitée]. Il est souvent utilisé[réf. souhaitée] comme langage RAD, tellement il est facile d'utilisation[non neutre]. Cela permet de se faire des outils très rapides, et aussi simplement qu'en REXX. Mais pour utiliser ce type de langage, il est nécessaire que les développeurs aient une bonne discipline en « programming », alors que pour le Cobol, par exemple, le compilateur « tente » d'éviter ces problématiques qui nécessitent autant de discipline (déclaratives, closures, ..).

Conclusion

PL/I permettait de produire du code bien plus robuste que celui du langage C, ceci dû principalement à la faible nécessité de gérer des pointeurs ou des adresses, ce qui est une source importante de bugs de programmation.[réf. nécessaire] En fait la nécessité de gérer des pointeurs n'existe pas.

Références

Liens externes


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article PL/I de Wikipédia en français (auteurs)

Игры ⚽ Нужно решить контрольную?

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”