Basic (langage)

BASIC(de l'acronymeanglaisBASIC pourBeginner's All-purpose Symbolic Instruction Code, littéralement « code d'instruction symbolique multiusage du débutant »), fait partie d'une famille delangages de programmationdehaut niveauayant pour caractéristique leur facilité d'utilisation. La première version a été créée parJohn G. KemenyetThomas E. KurtzauDartmouth Collegeen 1963.
Jusqu'au début des années 1960, la programmation des ordinateurs reposait principalement sur l'écriture de programmes encode machineou enlangage assembleur, des langages debas niveaupropres à chaquearchitecture matérielle. Cette approche exigeait une connaissance approfondie de la machine utilisée, réservant ainsi la programmation à des spécialistes, souvent des scientifiques ou des ingénieurs. Bien que des langages de plushaut niveau, tels queFortranetCOBOL, aient vu le jour à la fin des années 1950, ils restaient complexes à maîtriser et n'étaient pas toujours accessibles aux novices ou aux non scientifiques. De plus, la diversité des architectures signifiait que chaque programme devait être adapté à un modèle d'ordinateur spécifique, rendant le développement logiciel long et difficile.
BASIC a marqué un tournant en rendant la programmation plus accessible. Ce langage de haut niveau abstrait les détails matériels complexes grâce à uninterpréteur, permettant ainsi à des étudiants, même issus de domaines non scientifiques, d’écrire des programmes sans avoir à maîtriser les subtilités deslangages machinesou de l'assembleur. Sa simplicité et son adaptabilité en ont fait un outil pédagogique efficace, ouvrant la voie à un apprentissage plus accessible de l’informatique.
Le nom BASIC correspond au titre d'un article non publié de Kurtz et est lerétroacronymede «Beginner’sAll-purposeSymbolicInstructionCode », soit « Code d’instruction symbolique multiusage pour débutants ». Il n'a, par ailleurs, rien à voir avec les séries intitulées «Anglais basic» deCharles Kay Ogden.
En plus de ce langage de programmation, Kemeny et Kurtz ont également développé le gestionnaire detemps partagéde Dartmouth (DTSS), qui permettait à plusieurs utilisateurs d’éditer et d’exécuter des programmes BASIC simultanément sur des terminaux distants. Ce modèle général est devenu très populaire sur les systèmes demini-ordinateurscomme lePDP-11et leData General Novaà la fin desannées1960et au début desannées 1970. On le voit notamment avecHewlett-Packardqui produisent une gamme complète d’ordinateurs fonctionnant avec cette méthode, avec la série HP2000 à la fin des années 1960 et jusque dans lesannées 1980.
La première version du Basic a été développée sur unordinateur centraltemps réelappeléGE-265(General Electric), qui était unGE-225avec uneGE DataNet-30. Cet ordinateur 20 bits, conçu en 1959 au sein du département d'informatique industrielle de la sociétéGeneral ElectricparArnold Spielberg, père deSteven Spielberg, occupait une pièce entière, embarquait 10 000 transistors et 20 000 diodes. Les données étaient conservées sur desbandes magnétiquesenroulées sur des bobines, des cartes perforées ou des bandes de papier. Vendu 250 000 dollars à l’époque, le GE-225 a été un succès commercial, malgré la désapprobation du directeur général de la société qui le produisait. Le Basic était le premier langage spécialement conçu pour être utilisé sur des systèmes interactifs.
Les premières versions de Basic étaient utilisées sur des ordinateurs entemps partagé. L’interprétationétait plus commode que la compilation, car les modifications ne portaient souvent que sur quelques lignes entre deux passages successifs.
Les constructeurs des premiersordinateurs individuelsavec clavier ont eu besoin d'inclure un outil permettant aux utilisateurs d'écrire des logiciels pour leur matériel. L'une des premières entreprises,Datapoint Corporation(en)(à l'époqueTRW), avait créé son propre langage pour ses terminaux programmables Datapoint, mais l'abondance d'étudiants connaissant le Basic le conduisit à porter ce langage sur des machines comme sonDATAPOINT 2200. Une version interprétée pouvait sans difficulté tenir enmémoire morte (ROM)ou vive (RAM). Le Basic avait en 1970 un concurrent, le langageFOCAL, mais celui-ci était propre àDECet fut vite marginalisé, comme le sera leHPLdeHewlett-Packardsix ans plus tard.
Le Basic offrait aussi quelques commandes commeold, new, listet quelques autres déjà définies à l'intérieur même du langage, lui conférant ses capacités interactives.
Les instructions scalaires commençaient parLET(LET A=3) et les matricielles parMAT(MAT C = A+B). Très vite, leLETdeviendra facultatif pour alléger l'écriture des programmes.
Chaque instruction était précédée d'un nombre, en général attribué de 10 en 10, qui permettait de remplacer une instruction ou d'en intercaler d'autres sans avoir à maîtriser un complexeéditeur de texteen mode machine à écrire.
Les premiers ordinateurs individuels possédaient presque tous un interpréteur Basic enmémoire morte(TI-99/4A,Commodore 64,TRS-80,Apple II, etc.).Hewlett-Packardlaissait le choix sur sonHP 9825entre un Basic standard et son langage maison HPL plus puissant, mais moins standard. Ces langages étaient sur cartouche ROM amovible.
En1968, un article d'Edsger Dijkstradevenu très populaire avait insisté sur la nocivité de l'instruction «goto» en matière de qualité du code, et donc la productivité du programmeur. Cette critique s'appliquait alors à la plupart des langages, dont les dialectes du Basic. Dix ans plus tard, presque tous les langages avaient pris cette critique en compte, y compris le Basic. La popularité du Basic, langage de programmation grand public par excellence, fit dire à certainsque ce langage a donné naissance à plus de mauvais programmes qu'aucun autre langage.Olivier Lecarme, professeur à l'Université Laval, affirmait à l'AFCET:«BASIC programming cannot teach you any kind of programming, not even basic programming». De fait, privilégiant l'action plutôt que la méthode, ce langage aux contrôles sommaires ne convient qu'à la « petite programmation » (moins de500 lignes).
Le Basic équipa dès le milieu des années 1970 presque tous lesmicro-ordinateursdu moment (Olivetti P6060,Tektronix 4051,IBM 5100,Commodore PET, etc.). Dans lesannées 1980, la plupart desmicro-ordinateursétaient fournis avec uninterprèteBasic, parfois stocké enmémoire morte (ROM):ROM BASIC. Le premierIBM PCpouvait démarrer sansdisquetteet exécutait cette version du Basic rudimentaire.
Les versions les plus répandues ont été les interpréteurs conçus parMicrosoft, qui pratiquait une politique de prix modérés et avait fini par s'imposer comme la référence : quelles que fussent les machines source et cible, on savait qu'un programme écrit en BasicMicrosofttournerait sur un autre BasicMicrosoft.
En1977Microsoft avait sorti l'Altair BASIC(adaptation du Basic parBill GatesetPaul Allen) pour l'Altair 8800du constructeurMITS. C'était son premierlogiciel. En1979Microsoft obtient d'IBMla commercialisation de son interprète Basic avec les futursIBM PCetcompatible PC. Cette version était incluse dans la puce ROM desPC, et se lançait au démarrage en l'absence de système d'exploitation. Plus tard, Microsoft a vendu différentes versions du Basic pourDOS, dontBasica,GW-Basic,QuickBasicetVisual BasicpourMS-DOS.MicrosoftWindows 95etWindows 98incluaient un interpréteurQBasicà installer à partir duCD-ROMetWindows 98incluait un interprèteVBScript.Visual Basic for Applicationsa été ajouté dans les produitsMicrosoft Officeen1997.
À la même époque, le Basic surApple IIne connaissait que les nombres entiers ; il fallut attendre l'Apple II+ en juin 1979pour exploiter le traitement des réels.
LecompilateurWaterloo Basicfut l'un des premiers logiciels commercialisés parWatcom: il avait été programmé entre 1978 et 1979 pour l’IBM Series/1(en), un système 16 bits. En 1979, le compilateur a étéportépourVM/CMStournant sur lesIBM 370, 3030 et 4300, et un accord avecIBMa permis sa mise sur le marché. Il y eut plusieurs mises à jour de 1980 à 1983 ainsi qu'une version portée sur l’interpréteur de commandes MVS/TSOet surVM/CMS.
Borlanda publié son compilateurTurbo Basic1.0 en 1985. Les versions suivantes sont encore vendues sous le nom dePowerBasicpar une autre compagnie. Il existe toujours une version pourMS-DOS.
La nécessité d'enseigner un langage de programmation davantage structuré avait donné naissance aulangage Pascalen 1972. Ce langage, en particulier grâce au compilateurTurbo Pascalde la sociétéBorland, bien plus rapide que n'importe quel interprète Basic de l'époque, remporta un énorme succès au cours desannées 1980, et marqua un début de déclin de la popularité du Basic dans le grand public.
L’émergence desmicro-ordinateursau milieu desannées 1970a conduit au développement de plusieurs dialectes BASIC, y comprisBASIC Microsoften1975. En raison de la taille de la mémoire principale extrêmement réduite, souvent 4 Ko sur ce genre de machine, une variété de dialectes comme le Tiny BASIC a également été introduite.
À l'époque, le BASIC était disponible pour presque tous les systèmes et est devenu le langage de programmationde factopour les systèmes informatiques domestiques qui ont émergé à la fin des années 1970. Ces PC avaient presque toujours un interpréteur BASIC installé par défaut, souvent dans lefirmwarede la machine ou parfois sur une cartouche ROM.
BASIC a décliné en popularité dans les années 1990, à mesure que desmicro-ordinateursplus puissants sont arrivés sur le marché et que les langages de programmation dotés de fonctionnalités avancées (tels que Pascal et C) sont devenus plus accessibles. En1991, Microsoft a publiéVisual Basic(VB), combinant une version mise à jour de BASIC avec un générateur de formulaires visuels. Cette utilisation a relancé le langage et VB reste un langage de programmation majeur sous les formes deVBAet deVB.NET.
Au début desannées 1960, leslangages de programmationconvenaient davantage auxcartes perforéesqu'auxterminaux interactifs. Même le langageFortranII, peu développé mais déjà complexe, n'était pas adapté auxcalculs matricielsqui étaient utilisés dans le domaine dessciences humaines. Ces langages n'étant pasinteractifs, ils exigeaient que le programme utilisé soit exempt de toute erreur de syntaxe pour être exécuté.
Le langage Basic a été conçu en1964parJohn George Kemeny(1926-1993) etThomas Eugene Kurtz(1928-2006) au «Dartmouth College» pour permettre aux étudiants des filières non scientifiques d'utiliser des ordinateurs.
Les huit principes de conception du Basic étaient:
Afin d'arriver à ce résultat, plusieurs conditions furent posées. Pour que le Basic puisse être interactif et simple, il fallait :
La forme originelle dulangageBasic s'inspire duFortran, avec des ajouts pour le rendre interactif et capable de traiter en mode calcul de bureau desopérations matricielles, notamment les multiplications et inversions. Le langage a étéimplémentépar une douzaine d'étudiants, dontMary Kenneth Keller, l'une des premières personnes et la première femme à obtenir undoctoraten informatique auxÉtats-Unis.
Les concepteurs du langage décidèrent que le langage ferait partie dudomaine public, de manière à favoriser sa diffusion. L'écriture d'uninterpréteurde Basic faisait partie des projets classiques donnés aux étudiants en informatique dans le monde entier.
Le Basic est souvent interprété, mais rien ne l'empêche d'êtrecompilélà où l'interactivité avec le programmeur n'était plus nécessaire, par exemple packages de gestion. Malgré sa normalisation, plusieurs dialectes sont apparus au cours des années, partis de la même base, et proposant des améliorations diverses, par exemple dans le domaine desinterfaces graphiquesou de l'orienté objet. La référence sur PC (MS-DOS) a été leGW-Basicpuis quelque temps leQuickBasic.
La syntaxe vraiment minimale du Basic est seulement composée de l'instruction d'affectation par le signe "=" (devant autrefois être précédée du mot-cléLET),PRINT(affichage à l'écran),IF-THEN-ELSE(exécution conditionnelle) etGOTO(saut vers une zone du programme). Uninterprètequi exécute des programmes avec cette syntaxe minimale n'a pas besoin d'unepile. Nombre des premières implémentations surmicro-ordinateurn'eurent que ces instructions, les programmes n'étaient donc pas structurés. Si on ajoute une pile, l'instructionGOSUB(saut vers une séquence servant de sous-programme et terminée parRETURN) fut rapidement ajoutée.
Les premiers interprètes Basic exigeaient une numérotation des lignes à mémoriser. Une ligne non numérotée était simplement exécutée immédiatement. On ne pouvait avoir qu'un seul programme à la fois en mémoire.
Le typage était implicite : par exemple, les variables dont l'identifiant se termine par $ sont destinées à contenir des chaines de caractères alphanumériques et ne peuvent donc pas effectuer d'opérations arithmétiques.
L'usage était de numéroter les lignes de 10 en 10, afin de pouvoir éventuellement insérer des lignes supplémentaires.
Les boucles à compteur FOR...NEXT constituaient la seule forme itérative.
Avec certains interprètes il fut possible, à partir des années 1980, de mettre plusieurs commandes sur une même ligne. Toutefois, il n'était pas possible de regrouper un ensemble de commandes s'exécutant ensemble, comme après une conditionIF-THEN. Il fallait recourir à des sauts de ligneGOTO n° de ligne, ou à des appels de sous-programmes ouverts, non paramétrés, parGOSUB n° de ligne
L'ambition croissante des programmeurs, le besoin d'uneprogrammation plus structuréeamenèrent plusieurs évolutions :
Puis les Basic durent s'adapter aux environnements graphiques et au multi fenêtrage.
Les dialectes Basic modernes n'emploient plus nécessairement les numéros de lignes (qui restent possibles, mais qui n'ont plus qu'un rôle éditorial) et ont une richesse de commandes et une construction des déclarations de données identiques à d'autres langages comme lelangage Pascal.
Les récentes variantes comme leVisual Basicont introduit uneorientation objetavec gestion de l'implémentation d'interfaces et, dansVisual Basic .NET, l'héritage(simple).
Cependant la gestion des erreurs nécessite généralement l'utilisation deGOTO, ce qui casse la structuration des programmes.
Visual Basic .NET permet l'utilisation de blocs Try/Catch, mais conserve néanmoins la possibilité d'utiliser des On Error GoTo, pour conserver une certaine compatibilité avec des versions antérieures de Visual Basic.
La richesse des variantes est synonyme de non-standardisation. Cela montre comme ce langage est « organique » et comme il est plutôt une sous-culture qui traite la programmation d'ordinateur comme un ensemble fixe de règles de syntaxe. Mais la même chose s'applique tout autant aux autres « vieux »langages de programmationcomme leCobolet leFortran. Cependant le mouvement du Basic est de loin le plus important et une société commeNiakwavécut jusqu'au milieu des années 1990 très largement de son Basic sur Unix.
Le Basic n'a généralement pas debibliothèqueexterne standard comme d'autres langages, lelangage Cpar exemple. Au lieu de cela, l'interprète ou le compilateur contiennent une bibliothèque intégrée étendue de procédures intrinsèques. Ces procédures incluent plus d'outils que ce dont le programmeur a besoin pour apprendre la programmation et écrire de simples applications, dont des fonctions mathématiques, des fonctions de traitement des chaînes de caractères, d'entrée-sortieconsole, de graphisme et de manipulation de fichiers. Le QuickBasic permet d'inclure des bibliothèques écrites dans ce langage (QLB) ou en d'autres langages (LIB).
Certains dialectes Basic ne permettent pas aux programmeurs d'écrire leurs propres procédures. À cause de cela, les programmeurs sont obligés d'écrire leurs programmes avec une importante utilisation degotoet degosubrendant difficile de suivre lecode source, alors appelé couramment un «code spaghetti». Beaucoup de versions du Basic comme leQuickBasicde Microsoft ont ajouté un support des sous-routines et des fonctions (avec support de la récursivité). Il fait la distinction entre une procédure qui ne retourne jamais de valeur (appeléesous-routine ousub) et une procédure qui en renvoie (appeléefonction). Certains langages ne font pas cette distinction et considèrent tout comme une fonction dont certaines renvoient une valeur « vide ».
Le Basic est bien connu pour ses fonctions de manipulations de chaînes de caractères. Les premiers dialectes avaient déjà un ensemble de fonctions basiques (left$, mid$, right$) pour les traiter simplement. Comme elles sont souvent utilisées dans les applications de tous les jours, cela est un avantage considérable.
Chaque version de ce langage intègre les données de type entier et chaîne de caractères. Normalement, il n'est pas nécessaire de les déclarer comme telles, mais les versions modernes ont la capacité de forcer la déclaration des variables en ajoutant la directive « Option Explicit » au début du code source.
Lestypes de donnéesmodernes supportés par le Basic incluent : booléens, entiers signés sur16 bits, entiers signés sur32 bits, chaînes de caractères, nombres décimaux.
Certains dialectes commeVisual Basicont plus de types de données intrinsèques. De plus, certains dialectes permettent à l'utilisateur de définir ses propres types, appeléstypes définis par l'utilisateur, et qui sont en fait desstructures, c'est-à-dire une simple variable contenant plusieurs champs.
Le Basic est disponible pour toutes les plates-formes récentes. Une version interprétéelibrequi est conforme aux standards et hautement multiplateforme est leBywater BASIC. L'interprète est écrit enlangage C, sous licenceGPL. Il ne permet pas de faire desinterfaces utilisateur graphiques (GUI).
Une version libre, similaire auVisual Basicet tournant sous Windows et GNU/Linux, et permettant donc de faire desenvironnements graphiques (GUI), existe et s'appelle lePhoenix Object Basic. Il en existe deux autres plus récentes :GambasetK-Basicutilisant la performante et multiplateforme bibliothèqueQt.
La plus connue des versions compilées est leQuickBasicdeMicrosoftet leQBasic, une version qui ne permet pas de générer des programmes autonomes. Les dernières versions deVisual Basicsont aussi compilées, bien queMicrosoftait changé le Visual Basic en un langage compatible d'une façon minimale avec les premières versions duDartmouth Basic.
D'autres versions, dont leTrue BASICet lePowerBasic, sont compatibles avec le standard ANSI Basic.
True Basic Inc. a été fondée par les créateurs originaux du Basic, tout en lui adjoignant de nombreuses fonctionnalités.
PowerBasicInc, fondée par le concepteur deTurbo Basic, propose toujours son PowerBasic en version 16 bits pour MSDos, mais aussi en version 32 bits pour Console (PBCC) et pour Windows (PBWin). Pour ce dernier un outil graphique (PowerBasic Forms) facilite la création graphique d'interfaces utilisateurs basées sur des objets Windows. Son compilateur produit des exécutables compacts, rapides et stables de qualité industrielle.
LeGFA BASICmis au point parFrank Ostrowskiest un dialecte Basic qui permet la réalisation d'exécutables puissants pour les environnements Atari etWindows, disponible gratuitement en tant qu'abandonware.
RealBasicest une variante disponible pour lesApple Macintoshqui génère aussi des exécutables pourMicrosoft WindowsetGNU/Linux.
Une variante d'un dialecte Basic simple pour lamachine virtuelleParrotmontre comment un interprète Basic est mis en application dans un langage de typeassembleur.
LePureBasicest une variante avec une syntaxe simple mais avec une production rapide et des fichiers exécutables petits, pourWindows,GNU/Linux,AmigaOSetMac OS. Il peut aussi compiler et contenir des instructions en assembleur en-ligne.
LewxBasicest une variante, écrite en C et C++, pourWindows,GNU/Linuxet peut-être bientôt sousMac OS. Il est gratuit et peut être utilisé en compilé ou en interprété.
LeBlitzBasicet leDarkBasicsont des variantes spécialisées dans la création de jeux vidéo avec un accès simplifié auxinterfaces de programmation (API)multimédias telsOpenGLetDirectX. Lecompilateurest payant dans les deux cas. Cette variante est optimisée. On peut avoir des bons résultats rapidement pour des débutants.
Liberty Basic est spécialisé dans l'élaboration facile d'interface graphique, il est reconnu comme le successeur de QBasic.
LeSmallBasicest un dialecte qui fonctionne sur un grand nombre de plates-formes (Win32,MS-DOS,GNU/LinuxetPalm OS) et est placé sous une licenceGNU.
FreeBASIC, développé par une communauté QBasic en déclin, est un compilateur 32-bits distribué sous licence GPL. Il est multiplateforme et, bien qu'encore en version bêta, très prometteur. Sa syntaxe est calquée sur celle du QBasic de Microsoft mais il supporte les pointeurs, l'assembleurinlineet prochainement une branche orientée objet devrait être incorporée.
Il existe également une version de Basic pourLibreOfficeetApache OpenOffice, appeléeOOoBasic(c'est le même langage utilisé pourStarOffice Basic, même si son nom,StarBasic, change).
LeTI-Basicest le langage de programmation utilisé sur certaines calculatricesTexas Instruments, de même que le Basic Casio, utilisé sur les calculatrices graphiquesCasio.
Sur les TI-99, le TI-Basic est différent de celui que l'on peut trouver sur les calculatrices de la marque. Il existe également un TI-Basic étendu plus perfectionné permettant l'accès à l'extension mémoire, les commandes CALL PEEK et CALL POKE, l'amélioration de la gestion des couleurs, l'apparition dessprites, petites images auxquelles on peut donner une vitesse et un sens de déplacement.
Au nombre des modèles de matériels populaires qui utilisèrent le langage Basic figurent :
Commentaires :
Le présent article est basé sur un article originellement écrit surNupediapar Peter Fedorow, et modifié sur la version anglaise de Wikipédia, puis traduit en français.