Overblog Suivre ce blog
Editer l'article Administration Créer mon blog
3 mai 2010 1 03 /05 /mai /2010 09:40

L'informatique, ça bouge! Et pas seulement au niveau machine, les langages aussi ont bougé. Petite remontée dans le temps avec le "dictionnaire du basic", par David Lien, traduit par P.S.I., livre expliquant comment fonctionne le langage le plus célèbre de l'époque, le langage Basic.


Ce n'est pas la photo du livre en question! Ca c'est un autre livre, du même éditeur, qui me rappelle aussi ma jeunesse. A l'époque, on achetait les jeux en livre, on les recopiait, et du coup on comprenait les bases de la programmation, forcément, pour pouvoir jouer.


Les normes! Et oui, à l'époque, les normes étaient un peu floues. Du coup, une bonne partie du livre est centrée sur "votre programme ne marche pas parce que le Basic a changé ? Voilà comment recoder le morceau qui pose problème". On y échappe dans les langages modernes, fort heureusement.

En parlant de normes, à cette époque, sur certains ordinateurs, le O était barré au lieu du zéro!

Mon Dieu les numéros de lignes! Ca, c'est vraiment bien que ça ait changé. Pourtant, souvenez-vous, on a eu besoin d'un peu de temps pour s'acclimater au Basic sans numéro de ligne.
Quels numéros de lignes, disent les jeunots ? Autrefois, chaque instruction avait un numéro. Ce numéro était typiquement 10 pour la première instruction, 20 pour la seconde, 30 pour la troisième, et ainsi de suite. Evidemment, quand vous vouliez insérer une ligne entre deux lignes, il fallait utiliser 25, 27, 29, et de temps en temps on était bien coincé; il fallait utiliser un "goto" à la ligne 26, qui partait à la ligne 3000 (pas encore utilisée), suivie de 3010, 3020, 3030, et en 3040 on trouvait un "goto 27".

Et la fin du programme ? Comme il ne pouvait y avoir qu'une fin de programme (tout à la fin), et bien on mettait quelque chose comme "9999 END", et à la fin du programme (avant les procédures) on mettait "GOTO 9999".

Et oui, car on programmait beaucoup avec des "goto" ! Alors qu'aujourd'hui, certes on peut encore mettre des "goto", mais c'est en désuétude. A l'époque il existait néanmoins aussi une espèce de notion de fonction: le gosub! C'est-à-dire qu'on écrivait "gosub 4000", la ligne 4000 et les suivantes contenaient la fonction, et à la fin il y avait un "return". Et les paramètres de la fonction ? Tout en variables globales! Et oui c'est pas très pratique: on fait

550 ...
560 N=50
570 gosub 4000
580 REM mon resultat est dans la variable x.

4000 x=N*N+N+1
4010 return

Imaginez les fonctions récursives! Il fallait stocker les variables locales dans un tableau.

C'était ça, les anciens temps. Après il y a eu des basic qui gardaient la simplicité, les problèmes en moins: toujours pas de déclaration de variable, mais plus de numéro de ligne. Les fonctions sont restées longtemps très pénibles à mettre en oeuvre.

Pas de fonction Exp, pas de fonction Tanh, sur de nombreuses variantes de Basic! Du coup il fallait coder Exp à la ligne 30 000, et Tanh à la ligne 40 000.

Là où ça devient vraiment comique, c'est quand on parle de réutilisabilité! Si vous vouliez réutiliser dans le programme B le "tanh" que vous avez péniblement codé lundi dans un programme A, tout va se casser si vous avez des numéros de ligne qui se mélangent! Imaginez un "tanh" qui chevauche un "exp". Ca, c'était vraiment hyper pénible, ces fichus numéros de ligne!

Et les noms de variables ? Et bien le livre déconseille la tendance "littéraire" consistant à mettre des noms de variables à rallonge. Et j'ai eu des bugs dont je me rappelle encore, au début des années 80, avant que n'arrivent le Mia et les volants à moquette, parce que toutes les variables commençant par deux mêmes lettres étaient identiques! Par exemple, IndexSurLaMatrice et IndiceDeGini sont la même variable. Boa et Bois aussi. Super pratique, n'est-ce-pas ? Quand je pense que je me rappelle encore de ce bug, près de 30 ans après, j'imagine l'énervement que ça a du être.

Le livre qualifie de "programmeurs fous" les adeptes de noms de variables à rallonge. J'avoue être un peu resté sur les noms de variables courts... honte sur moi.

Que ceux qui se rappellent de "peek" et "poke" lèvent la main! Une instruction pour aller lire à une adresse mémoire, une autre instruction pour y écrire. Ouf, maintenant les langages sont suffisamment pratiques pour pouvoir se passer de ça. Mais enfin le C a longtemps gardé de l'arithmétique des pointeurs, on n'est pas si loin de peek et poke!

Y avait-il du bon là-dedans, qu'on a perdu en route ? Peut-être le fait qu'on allumait le PC d'emblée sur du Basic. On parlait à la machine dans un langage informatique. La compréhension du fond de la machine était forcée et naturelle. Et la simplicité des déclarations de variables à la volée, l'absence de compilation - finalement python c'est un peu le retour des bons côtés du basic (sans els mauvais, l'objet en plus). Globalement, les langages sont allés, je crois, dans la bonne direction (le matériel et les systèmes d'exploitation, c'est autre chose - ce ne sont pas les meilleurs systèmes qui ont envahi le marché, notamment chez les particuliers, et l'Amiga ne méritait sans doute pas son petit sort - je laisse plus expert que moi se prononcer sur les aspects Risc et Cisc).

Partager cet article

Repost 0
Published by teytaud - dans Recherche
commenter cet article

commentaires