Le BASIC est sûrement obsolète maintenant, non? Peut-être pas. En plus d’inspirer une grande partie de l’informatique à domicile aujourd’hui, BASIC est toujours très vivant aujourd’hui, même en dehors de l’informatique rétro.

Il fut un temps, il n’y a même pas si longtemps, où la lingua franca du monde informatique à la maison était BASIQUE. Ce n’était pas nécessairement toujours exactement le même BASIC; les commandes et la syntaxe différaient entre le dialecte BASIC fourni avec n’importe quel modèle d’ordinateur personnel (Commodore, Atari, Texas Instruments, Sinclair ou l’un des innombrables autres). Heureusement, la plupart de ceux-ci sont sous licence ou dérivent de l’implémentation micro-informatique la plus populaire de BASIC: Microsoft BASIC.

BASIC a ses racines dans les universitaires, où il était destiné à être un langage de programmation facile à utiliser pour chaque étudiant, même ceux en dehors des domaines STEM traditionnels. S’inspirant des langages populaires des années 1960 comme FORTRAN et ALGOL, il a été largement utilisé sur les systèmes de partage de temps dans les écoles, avec même IBM rejoignant le parti en 1973 avec VS-BASIC. Lorsque les années 1970 ont vu l’arrivée des micro-ordinateurs, suffisamment petits et bon marché pour être achetés par n’importe qui et utilisés à la maison, il semblait naturel qu’eux aussi exécutent BASIC.

L’avantage d’avoir BASIC intégré dans ces systèmes était évident: non seulement la plupart des gens qui ont acheté un tel ordinateur personnel étaient déjà familiarisés avec BASIC, mais cela permet aux programmes d’être exécutés sans être compilés au préalable. C’était bien, car la compilation d’un programme prend beaucoup de RAM et de stockage, dont aucun n’était abondant dans les micro-ordinateurs. Au lieu de compiler le code source BASIC, les interprètes BASIC interpréteraient et exécuteraient le code une ligne à la fois, en échangeant la vitesse d’exécution pour plus de flexibilité et une faible utilisation des ressources.

Après avoir allumé son micro-ordinateur, l’interpréteur BASIC serait généralement chargé directement à partir d’une ROM intégrée au lieu d’un système d’exploitation complet. Dans ce shell interpréteur, on peut utiliser le matériel, écrire et charger des programmes BASIC et les enregistrer sur bande ou disque. Exécuter du code BASIC existant ainsi que des programmes compilés sur son ordinateur, ou même les taper à partir d’une liste dans un magazine, tous appartenaient aux options. Comme les implémentations BASIC entre différents ordinateurs personnels étaient relativement cohérentes, cela offrait une grande portabilité.

Cela a ensuite été, ce qui est maintenant. Les gens utilisent-ils encore la langue de base?

Joystick de base amusant

Pour commencer, voyons un peu en quoi consiste BASIC. Pour un exemple extrêmement simple mais amusant de la façon dont BASIC peut être utilisé, jetons un coup d’œil à une application pour le Commodore 64 (gracieuseté de C64-Wiki) qui déplace une flèche autour de l’écran tout en imprimant ses coordonnées d’écran à l’aide d’un joystick connecté au deuxième port de joystick. Le C64 exécute Commodore BASIC 2.0, qui est basé sur Microsoft BASIC.

 10 S=2: X=150: Y=150: V=53248: GOTO 100
 15 J=PEEK(56320): IF J=127 THEN 15
 20 IF J=111 THEN POKE 56322,255:END
 25 IF J=123 THEN X=X-S
 30 IF J=119 THEN X=X+S
 35 IF J=125 THEN Y=Y+S
 40 IF J=126 THEN Y=Y-S
 45 IF J=122 THEN Y=Y-S
 50 IF J=118 THEN Y=Y-S
 55 IF J=117 THEN Y=Y-S
 60 IF J=121 THEN Y=Y-S
 65 IF X=>252 THEN X=10
 70 IF X=<10 THEN X=252 75 IF Y>254 THEN Y=44
 80 IF Y<44 THEN Y=254
 85 PRINT CHR$(147);CHR$(158);CHR$(17);"X-POS:";X;" Y-POS";Y
 90 POKE V,X:POKE V+1,Y: GOTO 15
100 FOR Z=832 TO 853 : POKE Z,0: NEXT Z
105 FOR Z=832 TO 853 STEP 3: READ J: POKE Z,J: NEXT Z
110 POKE V+21,1: POKE  V+39,7: POKE V+33,0: POKE V+29,1
115 POKE 56322,224: POKE 2040,13: GOTO 85
120 DATA 240, 224, 224, 144, 8, 4, 2, 1

Chacune des lignes ci-dessus est entrée telle quelle, y compris le numéro de ligne. Sur la ligne suivante après le code, nous entrons RUN et appuyez sur «Retour» (ou «Entrée», selon le clavier). En supposant que nous n’ayons rien mal saisi, le code s’exécutera maintenant pour afficher l’écran suivant:

Dans ce jeu passionnant, nous déplaçons la flèche autour de l’écran à l’aide du joystick.

Alors, que fait ce code? Comme pour tout programme BASIC, il commence à la première ligne qui est ici 10. Il définit ici quelques variables, avant de passer à la ligne 100 (en utilisant GOTO). Dans un FOR boucle, nous POKE (c’est-à-dire écrire un registre matériel) et répétez ceci dans quelques adresses supplémentaires, ce qui met à jour l’affichage dans sa configuration initiale. Ici, la commande READ est utilisée pour lire les constantes qui sont définies par DATA.

Beaucoup de ces adresses mémoire adressent directement la carte vidéo (VIC-II dans le C64). Lorsque nous utilisons PEEK à la ligne 15, il lit le contenu de l’adresse mémoire 56322, qui correspond aux valeurs d’entrée actuelles sur le deuxième port de joystick. Après cela, nous pouvons vérifier l’état de chaque entrée en utilisant les valeurs de bit et ajuster notre flèche à l’écran en conséquence (ligne 90), ainsi que les coordonnées (ligne 85).

La page Wiki C64 de ce programme comprend une version de comparaison au niveau du bit. Cela devrait être légèrement plus rapide, car il comporte moins de lignes de code. Pour déplacer une flèche sur l’écran, il est peu probable que la différence soit remarquée.

Il est important de noter ici que les implémentations BASIC sur différents micro-ordinateurs devraient POKE et PEEK des adresses mémoire différentes pour obtenir le même effet en raison de la disposition du système différente de chaque ordinateur. Certaines implémentations fourniraient également des commandes adaptées spécifiquement à ce système de micro-ordinateur, qui devenaient plus pertinentes à mesure que les capacités graphiques et audio se développaient.

Interprété contre compilé

Un spectacle familier pour certaines personnes: l’IDE QuickBasic.

La nature interprétée de BASIC sur la plupart des micro-ordinateurs était à la fois un avantage et un inconvénient. D’une part, il est très flexible, et vous pouvez simplement exécuter votre dernier programme et le modifier rapidement sans avoir à gérer de longs cycles de compilation (sur un MPU <10 MHz Z80 ou 6502, rien de moins). D'un autre côté, comme toute erreur dans le code ne deviendra apparente que lorsque le programme sera exécuté par l'interpréteur, cela conduit à la même expérience joyeuse qu'avec les scripts JavaScript et Python modernes, où le code fonctionnera bien jusqu'à ce que l'interpréteur tout à coup se renverse avec un message d'erreur (si on a de la chance).

Avec BASIC, cela se présente généralement sous la forme d’une erreur «Erreur de syntaxe sur la ligne ». L’exécution du même code via un compilateur aurait cependant trouvé ces erreurs. Cette caractéristique du code interprété signifie que la méthode de distribution facile du code sous forme de listes dans des magazines informatiques et des livres de référence ne serait aussi bonne que la qualité du code imprimé et ses propres compétences en dactylographie. Heureusement, sur le C64 et les systèmes similaires, corriger une ligne mal saisie serait aussi simple que de la retaper, en appuyant sur «Retour» et le shell de l’interpréteur mettrait à jour la ligne en question.

BASIC aujourd’hui

Le concepteur visuel PureBasic.

Tout va bien, vous pouvez dire à ce stade, mais personne ne traîne ce C64 pour faire de la programmation BASIC aujourd’hui. Mis à part les gens qui aiment jouer avec de vieux ordinateurs, bien sûr. Ici, il convient de noter que BASIC n’a pas vécu et n’est pas mort avec Commodore et Atari. Chez Microsoft, BASIC a engendré Visual Basic, Visual Basic pour Applications (VBA) et VB .NET. Ce dernier permet d’écrire du code VB pour le runtime .NET.

Microsoft a également publié Small Basic en 2008, qui, selon lui, cible les programmeurs novices, par exemple les étudiants qui utilisaient auparavant un langage de programmation visuel comme Scratch. Cela ne doit pas être confondu avec SmallBASIC, qui est un dialecte BASIC open source (GPL) avec des interprètes d’accompagnement pour les plates-formes modernes.

Les dialectes BASIC peuvent également être trouvés dans de nombreuses calculatrices graphiques et programmables de Ti, HP, Casio et autres, bien que beaucoup de ces dialectes ne soient pas directement compatibles avec la norme BASIC d’origine (ISO / CEI 10279: 1991). Depuis les années 1980, BASIC a évolué pour ne plus nécessiter de numéros de ligne, au lieu d’utiliser des étiquettes auxquelles il peut sauter, ainsi que d’adopter de nouveaux paradigmes de programmation. Cela a été introduit avec QuickBasic en 1985 et est aujourd’hui courant.

Du côté commercial de la clôture se trouve également PureBasic de Fantaisie Software, qui fournit un IDE et un compilateur pour un certain nombre de plates-formes cibles. True BASIC est une chaîne d’outils et un IDE BASIC modernes qui se rapproche de FORTRAN dans sa syntaxe, et est développé par les développeurs originaux de BASIC (Darthmouth BASIC).

En ce qui concerne les interprètes et compilateurs BASIC open source d’aujourd’hui, il y a Chipmunk Basic, qui remonte à Apple MacIntosh, Microsoft a récemment ouvert son GW-BASIC et vous trouverez même un écosystème OSS sain autour de BASIC. Si rien de tout cela ne vous plaît, vous pouvez implémenter Tiny BASIC, directement à partir de la grammaire BNF comme indiqué dans le premier numéro du Dr. Dobb’s Journal de 1976. Il y a quelques années, notre propre Tom Nardi a écrit sur ses expériences en apportant un projet QuickBasic des années 1990 dans le monde moderne avec QB64.

Plaidoyer pour BASIC

Clairement, BASIC n’est pas mort alors. Il voit une utilisation quotidienne dans ses formes commerciales, la myriade de projets open source et dans la communauté de rétrocomputing dynamique. En plus d’être (sans doute) un bon langage pour enseigner la programmation, c’est aussi une bonne option pour les applications intégrées, en particulier là où beaucoup utilisent MicroPython ou kin aujourd’hui, car les exigences système sont beaucoup plus faibles. Nous avons rendu compte d’un ARM MCU fourni avec un interpréteur BASIC il y a quelques années, par exemple.

Il existe également des projets comme UBASIC PLUS sur GitHub, ciblant les MCU STM32F0 et nécessitant aussi peu que 8 ko de RAM et 64 ko de flash. Un autre projet pour ARM et PIC32 (ainsi que DOS et Windows) est MMBasic, qui répertorie ses besoins en tant que 94 Ko de Flash et au moins 16 Ko de RAM.

Avec BASIC ayant évolué à une époque où les ordinateurs personnels avaient moins de mémoire et de stockage qu’un microcontrôleur à 5 $ aujourd’hui, il constitue un excellent langage à faibles ressources pour les situations qui nécessitent l’utilisation de scripts interprétés plutôt que de binaires précompilés, sans avoir à le faire. débourser pour les MCU avec plus de Flash et de RAM.

Certains de nos lecteurs utilisent-ils régulièrement BASIC sous une forme ou une autre aujourd’hui? Si tel est le cas, assurez-vous de laisser un commentaire avec vos expériences et des conseils pour ceux qui pourraient être intéressés à donner une chance à BASIC, que ce soit sur un ordinateur de bureau, des systèmes rétro ou embarqués 🙂

[Header Image: The HP 2000 system, mainly used for running time-shared BASIC, CC-BY 3.0]