L’histoire du BASIC, lancé il y a plus de 60 ans
Simple, basique
Le BASIC est un langage de programmation que les moins jeunes connaissent certainement, voire qu’ils ont étudié à l’école pour certains (j’en fais partie, cela ne me rajeunit pas…). Ce projet universitaire, qui réunit à la fois un langage de programmation et la notion de temps partagé, vient de fêter ses 60 ans. On remonte donc soixante ans en arrière…
Le 10 mai à 15h20
5 min
Logiciel
Logiciel
Il y a quelques jours, le BASIC fêtait ses 60 ans : « à 4 heures du matin, le 1er mai 1964, dans le sous-sol du College Hall, le professeur John G. Kemeny et un étudiant programmeur [Thomas E. Kurtz, ndlr] tapaient simultanément RUN sur les terminaux voisins », explique le Dartmouth College, une université privée du nord-est des États-Unis, où s’est déroulé cette première.
Pour vous resituer un peu, c’est aussi dans les années 60 que Douglas Engelbart a inventé la souris. Internet n’existait pas, et ARPANET n’est arrivé que cinq ans plus tard, en octobre 1969, avec le premier paquet de données qui transitait entre une université et une entreprise.
« Premier système de partage de temps à usage général »
Plus que le BASIC, c’est aussi le fait que deux programmes étaient lancés et correctement exécutés qui était marquant. Ainsi, « le temps partagé et le BASIC sont nés » en ce mois de mai 1964. Pour le temps partagé, on parle de DTSS (Dartmouth Time Sharing System).
Les débuts de l’aventure commencent un an auparavant, en 1963, lorsque Kemeny a demandé une subvention à la National Science Foundation. Il souhaitait un ordinateur GE-225 – une machine de General Electric lancée au début des années 60 – pour l'université de Dartmouth « et construire le premier système de partage de temps à usage général entièrement fonctionnel ».
On peut même remonter quelques années en arrière avec les tentatives Darsimco (Dartmouth Simplified Code) et DOPE (Dartmouth Oversimplified Programming Experiment) de John Kemeny. « Les leçons tirées de la mise en œuvre de DOPE ont ensuite été appliquées à l'invention et au développement du BASIC », explique Wikipédia en se basant sur une publication de Kurtz. Le Fortran (mathematical FORmula TRANslating system dont la première version date de 1964) aussi a influencé la création du BASIC.
De « sérieux doutes » sur le projet
Selon l'université, les personnes en charge d’attribuer la subvention avaient de « sérieux doutes » sur son projet qui consistait à accomplir ce travail avec un groupe d’étudiants de premier cycle (et donc peu expérimentés, mais personne ne l’était vraiment à cette époque où tout était encore presque à faire). On peut maintenant dire sans crainte qu’ils ont bien fait de valider ce projet.
Selon l'université, « les étudiants de premier cycle de Dartmouth ont non seulement construit le système, mais ils sont devenus des chefs de file nationaux en informatique ». Pourtant, le BASIC n’a pas été conçu pour changer le monde : « Nous ne pensions qu’à Dartmouth », explique le Time en citant Kurtz. « Nous avions besoin d’un langage qui pourrait être "enseigné" à pratiquement tous les étudiants (et professeurs) sans qu’ils aient à suivre un cours ».
« Kemeny, qui est devenu plus tard le 13e président de Dartmouth, le professeur Tom Kurtz et un certain nombre d’étudiants de premier cycle, ont collaboré pour révolutionner l’informatique avec l’introduction du temps partagé et du langage de programmation BASIC ».
Simple, BASIC : vous n’avez pas besoin des bases
Ce langage était « idéal pour initier les débutants à la programmation tout en pouvant servir de langage pour toutes les applications. Il fonctionnait sur n’importe quel ordinateur », une polyvalence qui a d’ailleurs fait son succès pendant plusieurs décennies jusqu'à la fin des années 90.
En 1991, John Kemeny revient sur le début du BASIC et de l’informatique à l’université de Dartmouth. On peut retrouver cette interview sur YouTube. « Notre vision était que chaque étudiant sur le campus devrait avoir accès à un ordinateur et que l’ensemble du corps professoral devrait pouvoir utiliser un ordinateur en classe chaque fois que cela est nécessaire », indiquait-il.
Le cout d’un ordinateur ne permettait pas de les multiplier comme des petits pains : « les ordinateurs étaient une ressource partagée coûteuse, normalement capable d’effectuer une seule tâche à la fois. C’est pourquoi vous remettiez généralement votre programme sur des cartes perforées et attendiez votre tour », explique le Time. Le DTSS permettait de résoudre cette problématique.
15 instructions, INPUT arrive par la suite
En 2005, Thomas Kurtz a publié une petite rétrospective du Basic. On y apprend notamment qu’il n’y avait que « quinze types d’instruction dans le BASIC original » : LET, PRINT, END, READ, DATA, GOTO, IF, FOR, NEXT, GOSUB, RETURN, DEF, DIM, REM et STOP.
Une autre instruction bien utile est arrivée par la suite : INPUT, pour récupérer des données saisies par l’utilisateur. Bien d’autres ont suivi, le BASIC ayant beaucoup évolué au fil des années, avant d’être supplanté par d’autres langages plus modernes.
Pour les plus curieux, le premier manuel d’utilisation du Basic se trouve ici (.pdf). Par la suite, Bill Gates et Paul Allen (co-fondateurs de Microsoft) se sont fait connaitre avec la création de l’Altair BASIC, un interpréteur BASIC. Le début d’une autre longue histoire, que nous avons déjà racontée.
L’histoire du BASIC, lancé il y a plus de 60 ans
-
« Premier système de partage de temps à usage général »
-
De « sérieux doutes » sur le projet
-
Simple, BASIC : vous n’avez pas besoin des bases
-
15 instructions, INPUT arrive par la suite
Commentaires (41)
Vous devez être abonné pour pouvoir commenter.
Déjà abonné ? Se connecter
Abonnez-vousModifié le 10/05/2024 à 15h57
Ma bible de l'époque : AMSTRAD CPC 6128 : manuel de l'utilisateur.
Nostalgeek, quand tu nous tiens
-- edit --
Pour compléter l'article, les premiers BASIC n'avaient pas de notion de procédure ou de fonction. Chaque ligne était numérotée, et on pouvait seulement dire saute à tel ligne (GOTO)
-- EDIT 2 --
Comme il s'agit d'un moment nostalgie, je ne peux m'empêcher de donner le lien vers cette vidéo cultissime, en tout cas pour les programmeurs QBasic (désolé, c'est en anglais)
-- EDIT 3 --
J'ai du changer mes edit, car cela rentre en conflit avec la syntaxe markdown et me génère des liens affreux !
Le 10/05/2024 à 18h30
Et sinon, t'es lignes, tu les numérotais de 10 en 10, de 100 en 100 ? ;)
Modifié le 13/05/2024 à 18h00
GOTORETURN permettaient de sauter "temporairement" à un autre emplacement. Mais cela ne permettait pas de faire des procédures ou fonction tel que nous les connaissons aujourd'hui :- impossible de passer des paramètres
- impossible de faire du récursif
- impossible de les nommer (sauf à mettre un commentaire ^^)
Après, on pouvait quand même arriver à contourner ces différentes limitations, mais c'était loin d'être aussi facile et trivial qu'aujourd'hui (il fallait utiliser des variables globales, la notion de localité n'existant pas, et utiliser des tableaux et un index si on voulait simuler la récursivité)
Et je numérotais de 10 en 10 (enfin, c'est l'interpréteur BASIC qui le faisait par défaut ^^). Après, l'interpréteur du CPC savait renuméroter les lignes en un clin d'oeil si besoin était (et heureusement !!)
[edit] l'instruction qui permettait de renuméroter les lignes était
RENUM
:- soit sans paramètre, et tout le programme était renuméroté de 10 en 10,
- soit en précisant 1 paramètre, qui sera le numéro de la première ligne, les autres avec un incrément de 10
- soit en précisant 2 paramètres, le premier qui sera le numéro de la première ligne, et le second, qui sera le numéro de la ligne à partir de laquelle commencer la renumérotation (pratique pour ne renuméroter qu'une partie du programme)
- soit en précisant 3 paramètres, les deux premiers comme le cas d'avant, et le 3e est l'incrément à utiliser
C'était la bonne époque, moi je vous le dit !!!
Le 13/05/2024 à 16h53
Le 13/05/2024 à 17h59
Pour QBasic, je me souviens à l'époque d'avoir fait une bibliothèque, écrite en assembleur x86, qui prenait en charge :
- la correction du bogue sur l'émulation du calcul floatant (à l'époque, tous les processeurs n'avaient pas ce jeu d'instruction et donc il était en théorie émulé sur les architectures qui ne le supportait pas et utilisé pour les architectures qui le supportait. Mais en pratique, il était toujours émulé !
- routines graphiques (rien de bien méchant, mais des SetPixel, des DrawLine, etc. ultra performant par rapport à leur équivalent en BASIC)
- accès au mode graphique VESA (pour de plus hautes résolutions)
- gestion de la souris
Le plus drôle : j'ai retrouvé les sources la semaine dernière pendant le pont. Il faut que je creuse un peu pour voir si elles sont complètes et si ça passe sous DOSBOX. Si oui, c'est pas impossible que je mette ce petit moment de nostalgie totalement inutile sur github :)
Le 14/05/2024 à 16h56
Le 14/05/2024 à 17h09
Le 16/05/2024 à 10h55
Le 16/05/2024 à 10h55
Le 10/05/2024 à 18h38
Modifié le 10/05/2024 à 19h40
dans des variables. Pour s'y retrouver c'était un peu sioux (euphémisme). Et le fin du fin un serveur monovoie avec du Basic compilé (Apple) + assembleur 6502 avec détection de sonnerie sur le port manette et si tu étais super utilisateur tu étais prioritaire sur la ligne monovoie avec la déconnexion du manant !
Par cette connexion tu avais la possibilité d'imprimer en distant un listing que tu avais en local + la réservation de livre, etc.. via minitel.
Mais bon c'était une autre époque . Maintenant c'est plus comment sécuriser ton réseau via un accès vpn sur ton nas, etc...
Mais que de souvenirs sur l'usage des différentes machines (Atari, Sinclair, Exelvision, Commodore, Matel, Victor, Dragon, MSX...) via, entre autres, les associations Microtel de l'époque.
Le 11/05/2024 à 03h24
Modifié le 11/05/2024 à 15h41
J'avais un 464, le bonheur de la mélodie des données lues de la cassette.... et la prière systématique pour qu'il y arrive au bout, au bout de 10-15min
Le 10/05/2024 à 16h30
Avec des listings issus de bouquins filés par mon oncle et de vieux magazines... et la coquille quelque part qui faisait qu'après des heures de saisie... ca ne fonctionnait pas toujours 🤣
S'pas beau de vieillir... 😅
Le 10/05/2024 à 18h47
En plus de l'interpréteur, les programmes pouvaient être stockés sur des cassettes audio. Pour me simplifier la vie, je gravais les fichiers sur un CD et j'utilisais un convertisseur cassette vers prise jack (à l'époque ça se trouvait encore facilement sur les aire d'autoroute).
Des choses marques comme le petit bip à chaque touche ou le stylet permettant de pointer sur directement sur l'écran.
Le 10/05/2024 à 19h35
Modifié le 10/05/2024 à 21h20
poke &AC02
poke &AC03
poke &AC01
Modifié le 11/05/2024 à 15h47
Je lisais tout ça en classe de 3eme....
Oh P'tain, c'était y'a 30 ans déjà !!
Le 11/05/2024 à 17h48
Modifié le 12/05/2024 à 16h16
Comme quoi, la mémoire humaine, c'est comme pour la DRAM, elle aussi a besoin d'un refresh de temps en temps...
Modifié le 10/05/2024 à 20h19
J'ai appris deux fois le Pascal, ça ne me rajeuni pas non plus ...
Le 10/05/2024 à 21h09
Mon premier IDE:
Le 14/05/2024 à 10h39
Le 16/05/2024 à 14h35
Le 11/05/2024 à 08h31
Mais ensuite le Basic était aussi utilisé comme langage de programmation dans ma (enfin mes) calculatrice casio utilisées à partir du collège, je me demande si c'est encore le cas. Je me demande même si ces appareils existent encore et quelle est leur config maintenant. Vais checker tien...
Le 11/05/2024 à 08h46
Le 14/05/2024 à 10h41
Archive.org
Modifié le 11/05/2024 à 10h37
j'ai commencé sur Alice, avant de passer au 520ST et ses multiples basics,
https://www.youtube.com/watch?v=du5enAwBLow
Le 11/05/2024 à 15h52
Le 11/05/2024 à 21h22
Le 12/05/2024 à 08h00
Le 12/05/2024 à 10h54
(source : wikimédia commons)
Le terminal, ce n'était que le clavier et l'écran.
La manière dont je le comprends, c'est qu'ils avaient réussi à connecter 2 terminaux au même ordinateur, et à les utiliser en même temps. Si le multitâche apparait une évidence aujourd'hui, c'était loin d'être le cas à l'époque. Même à l'époque du DOS, tout était monotâche (enfin quasiment, il pouvait y avoir du multitâche, mais c'était pas natif).
A l'époque, il n'y avait qu'un seul processeur et un seul coeur d'exécution. Faire du multitâche impliquait donc de pouvoir passer d'un programme à l'autre. A cette époque, cela pouvait se faire à la condition que les programmes aient été prévu pour, en mettant explicitement dans leur code des endroits où ils pouvaient être interrompus pour reprendre ensuite. C'est ce que l'on appelle le multitâche coopératif.
Aujourd'hui, le modèle le plus largement répandu, c'est le multitâche préemptif, c'est-à-dire que c'est le système d'exploitation qui va interrompre un programme (n'importe quand) pour permettre l'exécution d'un autre, qui sera interrompu ensuite pour permettre au premier de continuer son exécution et ainsi de suite.
Le multitâche préemptif nécessite d'avoir des processeurs qui le supporte, car il faut pouvoir sauvegarder le contexte d'exécution d'une tâche (pour faire simple : les registres du processeur) pour pouvoir le restaurer ensuite. Je ne suis pas certains que dans les années 60, ce type de processeur soit très courant.
Il reste donc le multitâche coopératif. Il faut donc que les programmes disent explicitement à l'OS "tiens, là, je peux être interrompu, si tu as une autre tâche à lancer, fait-le". La force du BASIC, c'est que c'est un interpréteur. L'interpréteur peut donc facilement, après chaque instruction BASIC interprétée, notifier à l'OS un moment préemptible. Mais le programme écrit en BASIC, lui, n'a pas cet effort à faire. C'est son interpréteur qui s'en occupe !
Du coup, un programme en BASIC était naturellement coopératif (si son interpréteur l'était), là où un programme écrit en assembleur (le C n'existait pas encore !) devait explicitement dire au système d'exploitation les endroits où il pouvait être interrompu.
On peut largement comprendre ce genre d'intérêt, surtout à l'époque. Un ordinateur coutait très cher et prenait énormément de place. Si on pouvait travailler à plusieurs dessus et en même temps, l'intérêt était tout évident !
Le 12/05/2024 à 14h49
En fait, leur ordinateur était la combinaison de 2 machines : le GE-255 et le DATANET-30 de General Electric.
Le premier étant l’ordinateur "principal" et l'autre était spécialisé dans la gestion des terminaux (télétypes = clavier + imprimante).
Le second avait une partie temps réel, où il scrutait l'arrivée des caractères 110 fois par seconde et les stockait. Si le caractère était un Return, il regardait si la ligne tapée était une ligne de code (elle était numérotée) ou une commande. Dans ce cas, il créait une tâche à exécuter.
Il devait alors communiquer avec l'ordinateur principal pour faire exécuter la tâche (communication par DMA). Certaines tâches étaient exécutées directement sur le DATANET-30 (celles liées aux télétypes et au disque) si j'ai bien compris.
Le GE-255 exécutait les tâches l'une après l'autre et donnaient l'impression de temps partagé. Je ne suis pas sûr qu'il y avait un OS multitâche même non préemptif. Les tâches devaient être suffisamment courtes pour donner l'illusion d'avoir un ordinateur pour chacun des utilisateurs.
Sinon, ce BASIC était compilé, pas interprété. Il y avait aussi un compilateur ALGOL puis plus tard FORTRAN. Les compilateurs étaient rapides 1 à 4 secondes par programme : les programmes n'étaient peut-être pas très longs.
Et évidement, à cette époque, la mémoire était de la mémoire à tores et les processeurs réalisés en composants discrets : transistors et diodes. Le GE-255 pesait un peu plus de 900 kg.
Le 12/05/2024 à 15h23
Le 12/05/2024 à 15h37
Il faut dire que je suis arrivé bien plus tard, donc cette époque, je ne l'ai pas connu du tout.
Pour cette version du BASIC, tu as raison de souligner qu'il s'agit bien d'un compilateur et non d'un interpréteur. Mais c'est une spécificité de cette machine. La plupart des BASIC qui ont suivi l'ont été sous la forme d'interpréteur (ce que j'ai connu ).
J'avoue que je m'étais posé la question. Mais si c'était uniquement sur la taille des tâches que reposait le système de temps partagé, alors BASIC ou pas, le problème aurait été le même. L'avantage du BASIC, c'est que c'est un langage de haut niveau qui pouvait tout à fait abstraire ce genre de considération. D'où le fait que je sois parti sur l'idée d'un système multitâche coopératif. Après, ce n'est que mon hypothèse. Je n'étais pas la dans les années 60 pour confirmer xD (et je n'ai pas encore trouvé d'informations précises à ce sujet).
Le 12/05/2024 à 17h12
Pour ma part j'ai commencé il y a 42 ans sur ZX81 (acheté en kit, mes premières soudures avec la goutte de sueur quand il ne marchait pas à la première mise sous tension...). Le manuel, aussi gros que la machine, était un modèle de pédagogie.
Le 13/05/2024 à 09h55
Par rapport à python pour des tâches simples, c'est le jour et la nuit.
Je ne comprends pas les langages 'modernes', qui sous couvert de pouvoir faire 'tout' en sont extrêmement complexes. Python et js en tête (python bien en tête puisqu'il réimplémente les défauts reprochés au c des années 90, du visual basic des années 90 et de java dans les années 90).
Sans compter que sur la plupart des ordis, on peut faire l'interface en basic, et coller des 'data' avec de l'assembleur pour des routines spécifiques. Donc ce n'est pas fermé.
Le 13/05/2024 à 10h03
Navigation facile à prendre en main au clavier (pas comme vim).
Le 13/05/2024 à 10h16
Puis le PC1261 de Sharp. Je l’ai toujours bien que le clavier est en panne sur l’une de ses colonnes.
Pas de renum qui ne corrigeait les appels goto ou gosub, Mais plein de peek poke et call. CA.&4576
Modifié le 13/05/2024 à 10h18
Le 13/05/2024 à 13h56
En espérant qu'il n'y ait pas de coupure de courant.