Ce livre a été écrit à l'occasion d'une étude entreprise pour le compte de la Délégation Générale à la Recherche Scientifique et Technique (DGRST).
Nous tenons à remercier ici cet organisme d'en avoir autorisé la publication.
B. ROBINET
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
© 1971. Éditions Technip - 27 Rue Ginoux - Paris
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PREFACE
J'ai été très touché quand mon collègue Bernard ROBINET m'a demandé une préface pour son ouvrage sur APL. La position que j'ai prise quant à la science informatique est fortement contestée dans l'Université, et cette préface ne sera pas pour tous une invitation à lire l'ouvrage, ce que je déplore car je le trouve remarquable. Aussi, je tiens à le remercier de la confiance et de la fidélité qu'il m'a ainsi manifestées, sachant fort bien les risques qu'il courait.
Je dois aussi avouer l'embarras dans lequel cette préface, et plus profondément toute l'action de B. ROBINET en faveur d'APL me plonge. J'ai fait connaissance du langage APL (puis-je employer un article défini avec APL, initiales de "A Programming Language"?) au laboratoire de recherches Watson de la compagnie IBM, dans la banlieue de New-York. Kenneth IVERSON lui-même nous fit une brillante démonstration des possibilités de ce langage. Mais le contraire eut été étonnant : si l'auteur n'est pas passionné par ce qu'il a créé, qui donc le sera? Qui pouvait être mieux placé que lui pour en connaître tous les raffinements? Que, dans le même laboratoire, la plupart des chercheurs utilisent APL, cela se concevait aussi.
J'ai rencontré de nouveau APL à l'Université d'Edmonton, à quelques 300 km à l'est des Rocheuses canadiennes, si belles dans les parcs de Banff et de Jasper. J'y ai retrouvé le même enthousiasme, le même prosélytisme. Chacun essayait de me convaincre des beautés du langage. On l'utilisait pour l'enseignement des statistiques (K. SMILLIE et U. Von MAYDELL). Il était à la base des expériences d'aide à l'enseignement de S. HUNKA.
Dans ce livre, B. ROBINET se demande si "l'APLite est une maladie". On a en effet comme l'impression d'une contagion d'APL. Le langage se répand, soulevant les plus vives critiques au passage, mais faisant de plus en plus de fanatiques. Les interpréteurs se multiplient sur les matériels les plus divers, gros ou petits ordinateurs. La réalisation de B. ROBINET sur la machine de faible puissance Elliott 4130 ouvre d'ailleurs la voie d'APL sur une gamme extrêmement étendue d'ordinateurs.
En fait, APL me ferait plutôt penser à une drogue. On s'en méfie, on en dit du mal sans la connaître. Puis un jour on y goûte. On risque fort d'être pris et de ne plus pouvoir s'en passer. Ou encore, je vois APL comme l'idole d'une nouvelle religion. On se fait initier à son langage et à ses rites, et l'on devient un prosélyte. Dire du mal d'APL est un sacrilège, le soupçonner de porter des ambiguïtés un péché très grave (Qui donc absoudra B. ROBINET de l'avoir commis?). Utiliser d'autres langages est une infidélité!
Il m'étonnerait beaucoup que le lecteur de ce livre ne soit pas pris sous le charme de l'idole. La présentation de B. ROBINET est remarquable à tous points de vue, ses dons pédagogiques éclatent dans ces pages d'une lecture facile et convaincante.
Et pourtant il me reste une dernière hésitation à en encourager la lecture. Si l'emploi d'APL doit se généraliser, il faudra modifier beaucoup de choses en informatique. Les structures que manipule ce langage sont facilement complexes, et n'incitent pas du tout à l'économie des moyens. Un emploi extensif amènera à des modifications dans le câblé même des machines. C'est ce que Peccoud vient d'exposer au congrès de l'IFIP à Ljubliana. L'enseignement devra lui aussi se réformer : finies les belles boucles et les schémas récursifs, et vivent les programmes denses : "Oui, la langue APL est comme cela; elle dit beaucoup en peu de paroles". L'exposé algorithmique recule au profit de la notation algébrique. Y gagnera-t-on?
C'est une question que je me pose très sérieusement, et dont je ne connais malheureusement pas la réponse. Alors que faire? Garder APL sous le boisseau, en parler le moins possible? C'est peut-être perdre un outil essentiel à de nombreux utilisateurs de l'informatique, et en tout premier lieu les chercheurs et ingénieurs amenés à faire de nombreux calculs de moyenne importance et non répétitifs, qui ne justifient pas un gros effort de programmation; pour eux, APL est certainement la meilleure solution.
On me dira au demeurant que je prends bien au sérieux l'ouvrage de B. ROBINET; que s'il ne le publie pas, un autre écrira quelque chose de comparable (mais peut-être pas aussi facile à lire; j'ai lu des ouvrages en anglais sur le sujet, je ne les crois pas comparables pour la valeur pédagogique); qu'il ne faut pas attacher une telle importance à nos actes personnels, et que le devenir scientifique est tout tracé, déterminé, insensible à nos pauvres options individuelles.
Je ne saurais admettre un tel défaitisme. Si je ne croyais pas à la valeur des actes de chacun, j'aurais depuis longtemps cessé d'agir et de me battre au sein de l'Université pour le développement et la promotion de l'informatique. Quel pourrait être le sens d'un combat dont l'issue est certaine, indépendante de mes actes? J'ai besoin de croire à leur valeur pour pouvoir les poser encore en 1971, après les années noires que nous venons de vivre. Et j'ai l'outrecuidance de penser que l'histoire du développement scientifique eut été changée si chacun de ceux qui y ont participé ne s'étaient pas trouvé au bon moment â la bonne place. Non pas seulementles génies comme Galilée, Newton, Pascal... mais aussi les obscurs dont l'histoire n'a pas toujours retenu le nom, qui ont patiemment collecté les faits sur lesquels la science élabore ses théories, qui ont fourni à ces grands noms la contre-réaction dont ils avaient besoin pour l'élaboration de leurs idées. "Si le nez de Cléopâtre..." Ce n'est pas vrai que pour l'histoire des civilisations.
C'est en pensant à tout cela que je recommande vivement la lecture de cet ouvrage. Le lecteur succombera-t-il à l'idole? Sans que cela en devienne une maladie, je lui souhaite d'apprécier APL, car c'est certainement quelque chose de très joli. Ce livre contribuera-t-il au développement de "l'APLite", permettra-t-il au contraire de démystifier APL pour en faire ce que c'est réellement, un beau langage avec ses limites? L'avenir le dira. Ce que je souhaite, ce dont je suis sûr, c'est que ce livre ne passera pas inaperçu.
Jacques ARSAC
Professeur à la Faculté des Sciences de Paris
Author(s): B. Robinet
Publisher: Editions Technip
Year: 1971
Language: French
Pages: 264
City: Paris
Tags: APL
TABLE DES MATIERES
INTRODUCTION ........................................................... 1
PREMIERE PARTIE : APL PAR L'EXEMPLE .................................... 5
1. DES SCALAIRES ....................................................... 7
2. DES VECTEURS ....................................................... 15
2.1. Une opération fondamentale : la réduction ........................ 17
2.1.1. Extension d'opérateurs .................................... 17
2.1.2. Exemple ................................................... 18
2.2. Quelques opérateurs fondamentaux ................................. 21
2.2.1. Opérateurs d'existence .................................... 21
2.2.2. Opérateurs logiques ....................................... 22
2.3. Deux nouveaux types d'opération : compression et expansion ....... 25
2.4. Quelques opérateurs usuels ....................................... 27
2.5. Applications ..................................................... 29
2.5.1. Traitement sur les ensembles .............................. 30
2.5.2. Traitement sur les caractères ............................. 32
3. DES FONCTIONS ...................................................... 37
3.1. Caractéristiques de base ......................................... 39
3.2. Notion de branchement ............................................ 41
3.3. Sur les en-têtes ................................................. 45
3.4. Emploi des fonctions ............................................. 46
3.5. Applications ..................................................... 47
3.5.1. Résistances ............................................... 47
3.5.2. Histogramme ............................................... 49
3.5.3. Codification .............................................. 50
4. DES MATRICES ....................................................... 53
4.1. La réduction ..................................................... 57
4.2. Extension d'opérateurs ........................................... 59
4.3. Produit externe .................................................. 60
4.3.1. Application aux graphes ................................... 63
4.3.2. Application aux fichiers .................................. 64
4.4. Produit interne .................................................. 68
4.5. Applications ..................................................... 72
4.5.1. Fréquence de lettres ...................................... 72
4.5.2. Calcul des impôts sur le revenu ........................... 75
5. DES TABLEAUX ....................................................... 83
5.1. Généralisation d'opérateurs ...................................... 83
5.2. Applications ..................................................... 89
5.2.1. Propriétés d'une loi de composition interne ............... 89
5.2.2. Les opérateurs code et décode ............................. 95
DEUXIEME PARTIE : SYSTEMATIQUE D'APL ................................. 103
1. LES OBJETS TRAITES ................................................ 105
1.1. Constantes ...................................................... 105
1.1.1. Constantes scalaires numériques .......................... 106
1.1.2. Constantes vectorielles numériques ....................... 107
1.1.3. Constantes caractères .................................... 109
1.2. Variables ....................................................... 111
1.2.1. Identificateurs .......................................... 111
1.2.2. Valeurs .................................................. 111
1.2.3. Tableaux ................................................. 112
1.2.4. Variables indicées ....................................... 113
1.2.5. Taille et rang ........................................... 114
2. LES OPERATEURS DE BASE ............................................ 117
2.1. Opérateurs scalaires ............................................ 118
2.1.1. Opérateurs scalaires monadiques ........................... 118
2.1.2. Opérateurs scalaires dyadiques ............................ 119
2.2. Opérateurs mixtes ............................................... 119
2.3. Indiciation ..................................................... 120
2.3.1. Indiciation d'un vecteur .................................. 122
2.3.2. Indiciation d'une matrice ................................. 122
2.3.3. Indiciation d'un tableau .................................. 124
3. LES EXTENSIONS D'OPERATEURS ....................................... 149
3.1. Généralisation d'opérateurs scalaires ........................... 149
3.2. Composition d'opérateurs dyadiques scalaires .................... 152
3.2.1. Composition par réduction ................................ 152
3.2.2. Produit interne .......................................... 152
3.2.3. Produit externe .......................................... 152
4. LES FONCTIONS ..................................................... 161
4.1. Définition ...................................................... 161
4.1.1. Changement de mode ....................................... 162
4.1.2. Mode définition de fonction .............................. 163
4.2. Types d'en-tête ................................................. 163
4.3. Emploi des fonctions ............................................ 164
4.4. Paramètres formels .............................................. 164
4.5. Variables locales ............................................... 166
4.6. Structure de blocs .............................................. 168
5. LES INSTRUCTIONS .................................................. 175
5.1. Les expressions simples ......................................... 175
5.2. Evaluation des expressions ...................................... 176
5.2.1. Expressions simples ...................................... 176
5.2.2. La règle d'évaluation .................................... 177
5.2.3. Expressions parenthèsées ................................. 179
5.3. Affectation ..................................................... 179
5.4. Expression généralisée .......................................... 181
5.5. Rupture de séquence ............................................. 182
5.5.1. Fonctionnement ........................................... 182
5.5.2. Etiquettes ............................................... 183
5.6. Commentaires .................................................... 186
5.7. Les entrées-sorties ............................................. 187
5.7.1. Entrées .................................................. 187
5.7.2. Sorties .................................................. 189
5.7.3. Impression des tableaux .................................. 190
ANNEXES
A. SUR LE SYSTEME APL\360 ............................................ 193
B. TABLES DES OPERATEURS ET SYMBOLES APL ............................. 203
C. BIBLIOGRAPHIE ..................................................... 209
D. QUELQUES ALGORITHMES .............................................. 211
E. INDEX