Connexion
Abonnez-vous

L’histoire du BASIC, lancé il y a plus de 60 ans

Simple, basique

L’histoire du BASIC, lancé il y a plus de 60 ans

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

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.

Commentaires (41)

Vous devez être abonné pour pouvoir commenter.

Abonnez-vous
votre avatar
Le BASIC. Mon premier amour.

Ma bible de l'époque : AMSTRAD CPC 6128 : manuel de l'utilisateur.

Nostalgeek, quand tu nous tiens :mdr:

-- 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 !
votre avatar
Gosub et return me font penser que ce Basic avait un peu plus que GOTO.
Et sinon, t'es lignes, tu les numérotais de 10 en 10, de 100 en 100 ? ;)
votre avatar
GOSUB et GOTO RETURN 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 !!! :phiphi:
votre avatar
GOTO n'était pas si temporaire que ça, contrairement à gosub. Tu avais du renumerotage ? Génial ! Moi j'avais un truc branché sur une TV qui lisait des cassettes audio. Sans renumerotage que je sache. Et après saut à QBasic qui n'a plus rien à voir (sub, function... Et possible en trichant un poil de faire des appels systèmes... Int 21...).
votre avatar
Je viens de corriger mon message. Il fallait lire "GOSUB et RETURN" et non "GOSUB et GOTO" :sm:

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 :)
votre avatar
Et par hasard, tu possédais un ouvrage au titre ressemblant à "la bible pc - programmation système"?
votre avatar
Non, mais j'aurais bien voulu !
votre avatar
Inutile, donc indispensable.
votre avatar
Inutile, donc indispensable.
votre avatar
Ca dépendait de la complexité. Pour les plus complexe je faisais de 100 en 100 de mon côté ce qui permettait d'avoir de la place en cas de devoir ajouter des morceaux en cours de "dev" sans avoir à tout renumeroter
votre avatar
Sur Apple IIe pareil, un incrément de 100 entre les lignes pour combler les besoins ultérieurs. Les goto/gosub utilisés au delà du raisonnable avec des paramètres passés
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.
votre avatar
Je dois encore l'avoir en version papier quelque part.
votre avatar
Wow!! 511 pages quand même le bestiau !

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
:phiphi:
votre avatar
J'étais à la concurrence... Thomson TO9 ❤️
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... 😅
votre avatar
J'ai découvert le MO6 et le TO9 vers 2007, ce sont des ordinateurs qu'on m'a donné (je n'ai pas l'âge d'avoir connu ça). J'ai toujours le MO6, mais mon TO9 est dans un musée maintenant.

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.
votre avatar
Sur les Atari et les Amstrad, il y avait aussi les instructions PEEK et POKE. D'où le livre "La bible des pokes". Tu ne fera point de game over, vies illimitées tu auras
votre avatar
Mais qui se souviendrait encore des 3 poke magiques de nos jours ?
poke &AC02
poke &AC03
poke &AC01

:prof:
votre avatar
Dans Joystick Magazine, il y avait toujours une section qui était intitulée: " Poke au rapport ! "

Je lisais tout ça en classe de 3eme....

Oh P'tain, c'était y'a 30 ans déjà !!
votre avatar
Tu avais aussi Les Aventures de Peek et Poke.
votre avatar
Ayia, je l'avais complètement oublié celle là.

Comme quoi, la mémoire humaine, c'est comme pour la DRAM, elle aussi a besoin d'un refresh de temps en temps...

:D :phiphi:
votre avatar
"j’en fais partie, cela ne me rajeunit pas"
J'ai appris deux fois le Pascal, ça ne me rajeuni pas non plus ...
votre avatar
Roh j'ai commencé le Basic sur Atari ST, c'était trop bien :p
Mon premier IDE:
Basic
votre avatar
BASIC ou GFABASIC ?
votre avatar
GFA pour moi sur Amiga (après avoir revendu mon Atari)
votre avatar
Le petit moment nostalgie, un jour mon père à ramené un PC, un Laser 310 (j'ai jamais réussi à avoir des infos sur cette marque depuis) avec lecteur cassette, qui se branchait sur une TV. J'ai appris le DOS et les bases du Basic avec cette machine.

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...
votre avatar
CASIO et T-I font cohabiter Basic et Python !
votre avatar
C'était du VTECH, marque orienté "jouet"

archive.org Archive.org
votre avatar
Souvenirs,

j'ai commencé sur Alice, avant de passer au 520ST et ses multiples basics,

https://www.youtube.com/watch?v=du5enAwBLow
votre avatar
Article paru le 1er mai, donc il y a 10 jours déjà, ici sur l'excellent Arstechnica : The BASIC programming language turns 60
votre avatar
Mes premières armes en programmation (sans avoir même idée de ce que je faisais) sur VTech Genius 4000 :D, avec un total effet wahou en voyant la diversité des caractères jamais vus avant s'affichant grâce à une boucle sur le code ASCII je crois...
votre avatar
Je n'ai pas compris ce qu'était le temps partagé dont parle l'article. C'est le fait d'attendre son tour pour y mettre sa carte perforée ?
votre avatar
Pas tout à fait. A l'époque, un ordinateur, c'était plutôt ça :

Ordinateur (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 !
votre avatar
Quelques infos et corrections tirées d'ici et des articles en lien parlant des machines.

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.
votre avatar
Les compilateurs étaient rapides
La compilation pure est un processus très rapide. Ce sont les passes d'optimisations qui prennent du temps, et à l'époque on s'en passait.
votre avatar
Merci pour ces précisions supplémentaires et les corrections.

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 :phiphi:).
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.
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).
votre avatar
Il manque la définition de l'acronyme : BASIC = "Beginners' All-purpose Symbolic Instruction Code".
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.
votre avatar
Pour faire un peu de rétro en ce moment, je dois dire que le basic m'impressionne par sa concision, et son efficacité.
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é.
votre avatar
Pour ma part, j'ai souvent le regret de QBasic. L'IDE était d'une simplicité étonnante. Rapidité d'exécution. Il avait presque tout pour plaire :)

Navigation facile à prendre en main au clavier (pas comme vim).
votre avatar
Oh le flashback. Retour sur les bancs du lycée et la rencontre du ZX81. Il y a trop de temps pour me souvenir de l’année, mais c’était un mardi. J’étais déjà passé de la TI 57 à la Casio fx602p, mais là ! jusqu’à 16ko avec l’extension :love:
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
votre avatar
et le doux ronron de l’imprimante thermique.
votre avatar
Team MO5 (Thomson MO 5 Platini) avec les programmes à saisir depuis un bouquin pour enregistrer le programme sur une casette.
En espérant qu'il n'y ait pas de coupure de courant.

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

Fermer