Suivez-nous sur X

|
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z,
ALL
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
Programmation : GFA Basic - le pseudo LOGO du GFA
(Article écrit par Pierre-Philippe Launay et extrait d'Amiga News - mai 1992)
|
|
Historique du LOGO
Le LOGO est un langage né en 1970 sous l'impulsion de Papert et Minski au Massachusset Institute of Technology pour
concilier, d'une part, la théorie d'acquisition des connaissances prônée par Piaget et l'école Genevoise avec, d'autre
part, la puissance informatique. Hélas, d'une philosophie très prometteuse, le langage ne tint pas ses promesses.
C'est pourtant un langage issu du célèbre LISP. Comme lui, il est interprété, ce qui permet de tester immédiatement
les commandes utilisées à la différence du C et de l'assembleur. De plus, plutôt que de suivre la logique fantasmagorique
du FORTRAN ou d'utiliser des GOTO, il préfère la logique procédurale. C'est un langage évolué (250 commandes) et évolutif
(on crée ses propres fonctions) et il connaît même la récursivité.
On fait quoi en LOGO ?
En réalité, LOGO est la victime d'une mauvaise analyse. Tout d'abord, la célèbre tortue à laquelle
il est assimilé l'a cantonné pour le grand public aux seules applications éducatives de l'enseignement post-maternelle :
il sait pourtant gérer les nombres et les chaînes de caractères. Ensuite, il partait du postulat qu'il suffisait
de mettre une personne devant un ordinateur pour qu'elle se mette à créer (lire l'excellent article de Monique Linard
de l'Université Paris X paru dans la Revue de Psychologie).
La philosophie du LOGO est basée sur la notion de micromonde et son nom nous vient du Grec logos signifiant "le cheminement
de la pensée". Fort orienté sur la logique mathématique descriptive, LOGO suppose un univers au départ très réduit.
Cela répond à la théorie de Piaget sur l'évolution intellectuelle des jeunes enfants. Petit à petit, bébé
apprend la notion d'avant et d'arrière, de droite et de gauche et ainsi de suite. Plus il acquiert de notions et donc
de connaissances, plus il devrait se servir de ses connaissances dans un cycle infini du savoir.
Mais pourquoi me direz-vous, bébé voudrait-il acquérir du savoir ? Pour se faire plaisir. Et c'est là que
l'analyse déraille. Vous aimez et j'aime le codage mais il est bien évidemment faux de croire qu'il en est ainsi
pour tout le monde. Mais il y a pire. Le LOGO est lent. Il se déplace à la vitesse d'un escargot asthmatique au
galop. De plus, ses commandes sont trop rudimentaires pour permettre un vrai développement logiciel.
Sa conception n'a pas su évoluer depuis 1970. Impossible par exemple de gérer les BOB, les menus, le multitâche
ou même un affichage rapide des fonctions de chaînes de caractères ou des principales fonctions mathématiques.
Sa syntaxe est également fort compliquée et rappelle la notation polonaise inversée qu'adore aussi GFA mais sans
s'y cantonner. Enfin, il plante très rapidement lors des appels récursifs.
GFA au secours du LOGO
Alors, me direz-vous, que suis-je allé faire dans cette galère ? Et bien GFA apporte une réponse fort élégante
à tous les problèmes du LOGO. Toutes les fonctions du LOGO existent en GFA sauf deux. Mieux, la syntaxe est pratiquement
identique : chaque terme du LOGO est traduit dans la langue du pays où il est diffusé. Ainsi, SOUND 880,2
en Grande-Bretagne deviendra SON 880,2 en Belgique ou en Suisse. Avantage ou inconvénient, GFA n'adapte pas
les noms selon le pays de diffusion. Mais notons que GFA se rattrapera en généralisant aussi chaque fonction
comme ici avec SOUND 880,2,14,2.
Rappelons que les vieux LOGO utilisaient encore la possibilité d'écrire plusieurs instructions par ligne mais
il semblerait que cette hérésie soit en voie de disparition. Enfin, LOGO n'utilise pas les parenthèses mais elles
seront obligatoires en GFA.
GFA ne sait pas transformer rapidement une chaîne de caractères en liste. Je vous ai donc concocté une procédure
liliste un petit peu modifiée pour ne pas s'enquiquiner avec les listes ou les matrices. La vraie fonction LOGO
liliste prend chaque élément du texte que vous écrivez après LINE INPUT pour les écrire dans une matrice (revoir
la fonction DIM) et LOGO estime que chaque élément du texte est séparé par un espace. N'ayant pas écrit un vrai
liliste, j'ai alors modifié premier et mpremier.
Deuxième limitation du GFA, il n'y est pas évident d'utiliser les primitives telles que le conçoit LOGO.
LOGO appelle "primitive" les procédures et il est tout à fait concevable d'écrire en LOGO :
SI OU OU PROC? PREM :L PRIM? PREM :L NOMBRE? PREM :L [RENDS MP PREM :L FILTRE SP :L] [EC PREM :L RENDS FILTRE SP :L]
|
En GFA, on arriverait à faire un résultat assez similaire avec les routines de gestion des listes (AddHead, RemHead...)
mais je doute que cela soit plus clair que la logique suivie ici avec la série de IF...ENDIF.
|