Simple, basique

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

Abonnez-vous pour tout dévorer et ne rien manquer.

Déjà abonné ? Se connecter

Abonnez-vous

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…

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 »

Abonnez-vous pour tout dévorer et ne rien manquer.

Déjà abonné ? Se connecter

Abonnez-vous

Commentaires (41)


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 !
Modifié le 10/05/2024 à 15h57

Historique des modifications :

Posté le 10/05/2024 à 15h37


Le BASIC. Mon premier amour.

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

Nostalgeek, quand tu nous tiens :mdr:

Posté le 10/05/2024 à 15h39


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)

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 ? ;)

xlp

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 ? ;)
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:
Modifié le 13/05/2024 à 18h00

Historique des modifications :

Posté le 10/05/2024 à 18h38


GOSUB et GOTO permettait 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 !!)

Posté le 10/05/2024 à 18h46


GOSUB et GOTO permettait 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:

Posté le 13/05/2024 à 17h47


GOSUB et RETURN permettait 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:

Posté le 13/05/2024 à 18h00


GOSUB et GOTO RETURN permettait 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:

fdorin

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:
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...).

xlp

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...).
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 :)

fdorin

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 :)
Et par hasard, tu possédais un ouvrage au titre ressemblant à "la bible pc - programmation système"?

xlp

Et par hasard, tu possédais un ouvrage au titre ressemblant à "la bible pc - programmation système"?
Non, mais j'aurais bien voulu !

fdorin

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 :)
Inutile, donc indispensable.

fdorin

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 :)
Inutile, donc indispensable.

xlp

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 ? ;)
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

ShadowNet

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
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.
Modifié le 10/05/2024 à 19h40

Historique des modifications :

Posté le 10/05/2024 à 19h39


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.

Je dois encore l'avoir en version papier quelque part.
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:
Modifié le 11/05/2024 à 15h41

Historique des modifications :

Posté le 11/05/2024 à 15h38


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:

Posté le 11/05/2024 à 15h38


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:

Posté le 11/05/2024 à 15h40


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:

Posté le 11/05/2024 à 15h40


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:

Posté le 11/05/2024 à 15h40


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:

Posté le 11/05/2024 à 15h40


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:

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... 😅
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.
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
Mais qui se souviendrait encore des 3 poke magiques de nos jours ?
poke &AC02
poke &AC03
poke &AC01

:prof:
Modifié le 10/05/2024 à 21h20

Historique des modifications :

Posté le 10/05/2024 à 21h20


Mais qui se souviendrait encore des 3 poke magique de nos jours ?
*poke &AC02
poke &AC03
poke &AC01*

:prof:

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à !!
Modifié le 11/05/2024 à 15h47

Historique des modifications :

Posté le 11/05/2024 à 15h46


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

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

Oh P'tain, c'était y'a 30 ans déjà !!

Posté le 11/05/2024 à 15h46


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à !!

Erwan123

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à !!
Tu avais aussi Les Aventures de Peek et Poke.

refuznik

Tu avais aussi Les Aventures de Peek et Poke.
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:
Modifié le 12/05/2024 à 16h16

Historique des modifications :

Posté le 12/05/2024 à 09h04


Ha, je j'avais complètement oublié celle là.

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

:D :phiphi:

Posté le 12/05/2024 à 09h04


Ayia, je j'avais complètement oublié celle là.

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

:D :phiphi:

Posté le 12/05/2024 à 09h04


Ayia, je j'avais complètement oublié celle là.

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

:D :phiphi:

Posté le 12/05/2024 à 09h04


Ayia, je j'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:

Posté le 12/05/2024 à 09h05


Ayia, je j'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:

Posté le 12/05/2024 à 09h05


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:

"j’en fais partie, cela ne me rajeunit pas"
J'ai appris deux fois le Pascal, ça ne me rajeuni pas non plus ...
Modifié le 10/05/2024 à 20h19

Historique des modifications :

Posté le 10/05/2024 à 20h18


"j’en fais partie, cela ne me rajeunit pas"
J'ai appris deux fois le Pascal, ça ne me rajeuni pas non plus :;-):

Roh j'ai commencé le Basic sur Atari ST, c'était trop bien :p
Mon premier IDE:
Basic
BASIC ou GFABASIC ?

vince120

BASIC ou GFABASIC ?
GFA pour moi sur Amiga (après avoir revendu mon Atari)
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...
CASIO et T-I font cohabiter Basic et Python !
C'était du VTECH, marque orienté "jouet"

https://archive.org/details/VTech_Laser_310_TOSEC_2012_04_23
Souvenirs,

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

https://www.youtube.com/watch?v=du5enAwBLow
Modifié le 11/05/2024 à 10h37

Historique des modifications :

Posté le 11/05/2024 à 10h36


Souvenirs,

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

https://www.youtube.com/watch?v=du5enAwBLow

Article paru le 1er mai, donc il y a 10 jours déjà, ici sur l'excellent Arstechnica : The BASIC programming language turns 60
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...
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 ?
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 !

fdorin

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 !
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.

fred42

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.
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.

fred42

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.
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).
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.
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é.
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).
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
et le doux ronron de l’imprimante thermique.
Modifié le 13/05/2024 à 10h18

Historique des modifications :

Posté le 13/05/2024 à 10h16


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

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.
Fermer