Академический Документы
Профессиональный Документы
Культура Документы
Cet article n’est pas rédigé dans un style encyclopédique (décembre 2012).
Basic
Capture d'écran d'un programme écrit en Atari Basic (en), l'un des nombreux dialectes du
Basic.
Sigles de 2 caractères
Sigles de 3 caractères
Sigles de 4 caractères
► Sigles de 5 caractères
Sigles de 6 caractères
Sigles de 7 caractères
Sigles de 8 caractères
Basic ou basic (de l'acronyme anglais BASIC pour Beginner's All-purpose Symbolic
Instruction Code, littéralement « code d'instruction symbolique multi-usages du débutant »),
est une famille de langages de programmation de haut niveau ayant pour caractéristique leur
facilité d'utilisation.
Sommaire
1 Buts
2 Histoire
3 Syntaxe
o 3.1 Interprètes à numéro de ligne
o 3.2 Interprètes modernes
4 Procédures
5 Types de données
6 Disponibilité et variantes
7 Exemples
o 7.1 Exemple 1 : Basic original non structuré
o 7.2 Exemple 2 : Basic moderne structuré
8 Documents définissant le Basic
9 Notes et références
10 Voir aussi
o 10.1 Articles connexes
o 10.2 Liens externes
Buts
Le langage Basic a été conçu en 1964 par John George Kemeny (1926-1993) et Thomas
Eugene Kurtz (1928-) au « Dartmouth College » pour permettre aux étudiants des filières non
scientifiques d'utiliser des ordinateurs. À cette époque, les langages de programmation étaient
plus adaptés aux cartes perforées qu'aux terminaux interactifs. Même le Fortran II, peu évolué
bien que déjà complexe, était inadapté aux calculs matriciels dont on faisait déjà usage en
sciences humaines. Non interactifs, ces langages exigeaient qu'un programme soit exempt de
toute erreur de syntaxe pour être exécuté.
Le Basic se voulut interactif et simple : ses sept instructions devaient pouvoir être enseignées
en une demi-journée, et des opérations matricielles être exécutables en mode calcul de bureau.
Un programme devait pouvoir s'exécuter au moins jusqu'à ce que soit rencontrée une première
erreur, facilitant ainsi l'apprentissage du langage.
L'acronyme BASIC est lié au titre d'un article de Kurtz non publié et n'a pas de rapport avec
les séries intitulées « Anglais basic » de Charles Kay Ogden. Les concepteurs du langage le
destinaient au domaine public, ce qui favorisa sa diffusion, et l'écriture d'un interpréteur de
Basic faisait partie des projets classiques donnés aux étudiants en informatique dans le monde
entier.
Le Basic équipa dès le milieu des années 1970 presque tous les microordinateurs du moment
(Olivetti P6060, Tektronix 4051, IBM 51001, Commodore PET, etc.). Dans les années 1980,
la plupart des micro-ordinateurs étaient fournis avec un interprète Basic, parfois en ROM, et
quelques calculatrices programmables en furent même dotées. Le premier IBM PC pouvait
démarrer sans disquette et donnait alors la main à un Basic rudimentaire en mémoire morte :
Cassette BASIC.
Histoire
La première version du Basic a été développée sur un ordinateur central temps réel appelé
GE-265 (General Electric), qui était un GE-225 avec une GE DataNet-305. Cet ordinateur 20
bits, conçu en 1959 au sein du département d'informatique industrielle de la société General
Electric par Arnold Spielberg (en), père de Steven Spielberg6, occupait une pièce entière,
embarquait 10 000 transistors et 20 000 diodes. Les données étaient conservées sur des bandes
magnétiques enroulé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 en temps 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 premiers ordinateurs individuels avec clavier ont eu besoin d'inclure un
outil permettant aux utilisateurs d'écrire des logiciels pour leur matériel. L'un des premiers,
TRW, 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 son 22007. Une version interprétée pouvait sans difficulté tenir en mémoire morte
(ROM) ou vive. Le Basic avait en 1970 un concurrent, le langage FOCAL, mais celui-ci était
propre à DEC et fut vite marginalisé, comme le sera le HPL de Hewlett-Packard six ans plus
tard.
Le Basic offrait aussi quelques commandes comme old, new, list et 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 par LET (LET A=3) et les matricielles par MAT
(MAT C = A+B). Très vite, le LET deviendra 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 texte en mode machine à écrire.
En 1968, un article d'Edsger Dijkstra devenu très populaire avait insisté sur la nocivité de
l'instruction « goto » en matière de qualité du code8, 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 à
certains[réf. souhaitée] que 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 de 500 lignes).
Les versions les plus répandues ont été les interpréteurs conçus par Microsoft, 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 Basic Microsoft
tournerait sur un autre Basic Microsoft.
En 1977 Microsoft avait sorti l'Altair Basic (adaptation du Basic par Bill Gates et Paul Allen)
pour l'Altair 8800 du constructeur MITS. C'était son premier logiciel. En 1979 Microsoft
obtient d'IBM la commercialisation de son interprète Basic avec les futurs IBM PC et
compatible PC. Cette version était incluse dans la puce ROM des PCs, 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 pour DOS, dont Basica, GW-Basic, QuickBasic et Visual Basic pour MS-
DOS. Microsoft Windows 95 et Windows 98 incluaient un interpréteur QBasic à installer à
partir du CD-ROM et Windows 98 incluait un interprète VBScript. Visual Basic for
Applications a été ajouté dans les produits Microsoft Office en 1997.
À la même époque, le Basic sur Apple II ne connaissait que les nombres entiers ; il fallut
attendre l'Apple II#Apple II+ (juin 1979) pour le traitement des réels.
Le compilateur Waterloo Basic fut l'un des premiers logiciels commercialisés par Watcom : 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é pour VM/CMS tournant sur les IBM 370, 3030 et 4300, et un
accord avec IBM a 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/TSO et sur VM/CMS.
Borland a publié son compilateur Turbo Basic 1.0 en 1985. Les versions suivantes sont encore
vendues sous le nom de PowerBasic par une autre compagnie. Il existe toujours une version
pour MS-DOS.
Syntaxe
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) et GOTO (saut vers une zone du programme). Un
interprète qui exécute des programmes avec cette syntaxe minimale n'a pas besoin d'une pile.
Nombre des premières implémentations sur micro-ordinateur n'eurent que ces
instructions[réf. nécessaire], les programmes n'étaient donc pas structurés. Si on ajoute une pile,
l'instruction GOSUB (saut vers une séquence servant de sous-programme et terminée par
RETURN) 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 alpha-numé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 condition IF-THEN. Il fallait recourir à
des sauts de ligne GOTO n°de ligne, ou à des appels de sous-programmes ouverts, non
paramétrés, par GOSUB n°deligne
Interprètes modernes
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 le langage
Pascal.
Les récentes variantes comme le Visual Basic ont introduit une orientation objet avec gestion
de l'implémentation d'interfaces et, dans Visual Basic .NET, l'héritage (simple). Cependant la
gestion des erreurs nécessite généralement l'utilisation de GOTO, 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.
Procédures
Le Basic n'a généralement pas de bibliothèque externe standard comme d'autres langages, le
langage C par 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-sortie console, 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 de goto et de gosub : cela fait qu'il est très difficile de suivre un tel
code source, appelé couramment un « code spaghetti ». Beaucoup de versions du Basic
comme le QuickBasic de 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ée sous-routine ou sub) et une procédure qui en renvoie (appelée
fonction). 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.
Types de données
Chaque dialecte Basic de base gère les données de type entier et chaîne de caractères.
Normalement, ils n'ont pas besoin de les déclarer comme telles, mais les dialectes modernes
ont l'option de forcer le type (typiquement en utilisant une directive appelée « Option
Explicit »). Les types de données modernes supportés par le Basic incluent : booléens, entiers
signés sur 16 bits, entiers signés sur 32 bits, chaînes de caractères, nombres décimaux.
Certains dialectes comme Visual Basic ont plus de types de données intrinsèques. De plus,
certains dialectes permettent à l'utilisateur de définir ses propres types, appelés types définis
par l'utilisateur, et qui sont en fait des structures, c'est-à-dire une simple variable contenant
plusieurs champs.
Disponibilité et variantes
Le Basic est disponible pour toutes les plates-formes récentes. Une version interprétée libre
qui est conforme aux standards et hautement multiplateforme est le Bywater BASIC.
L'interprète est écrit en langage C, sous licence GPL. Il ne permet pas de faire des interfaces
utilisateur graphiques (GUI).
Une version libre, similaire au Visual Basic et tournant sous Windows et GNU/Linux, et
permettant donc de faire des environnements graphiques (GUI), existe et s'appelle le Phoenix
Object Basic. Il en existe deux autres plus récentes : Gambas et K-Basic utilisant la
performante et multiplateforme bibliothèque Qt.
La plus connue des versions compilées est le QuickBasic de Microsoft et le QBasic, une
version qui ne permet pas de générer des programmes autonomes. Les dernières versions de
Visual Basic sont aussi compilées, bien que Microsoft ait changé le Visual Basic en un
langage compatible d'une façon minimale avec les premières versions du Dartmouth Basic.
D'autres versions, dont le True BASIC et le PowerBasic, 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. PowerBasic Inc, fondée par le concepteur de Turbo
Basic9, propose toujours son PowerBasic en version 16 bits pour MSDos, mais aussi en
versions 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és sur
des objets Windows. Son compilateur produit des exécutables compacts, rapides et stables de
qualité industrielle.
RealBasic est une variante disponible pour les Apple Macintosh qui génère aussi des
exécutables pour Microsoft Windows et GNU/Linux.
Une variante d'un dialecte Basic simple pour la machine virtuelle Parrot montre comment un
interprète Basic est mis en application dans un langage de type assembleur.
Le PureBasic est une variante avec une syntaxe simple mais avec une production rapide et des
fichiers exécutables petits, pour Windows, GNU/Linux, AmigaOS et Mac OS. Il peut aussi
compiler et contenir des instructions en assembleur en-ligne.
Le wxBasic est une variante, écrite en C et C++, pour Windows, GNU/Linux et peut-être
bientôt sous Mac OS. Il est gratuit et peut être utilisé en compilé ou en interprété.
Le BlitzBasic et le DarkBasic sont des variantes spécialisées dans la création de jeux vidéo
avec un accès simplifié aux interfaces de programmation (API) multimédias tels OpenGL et
DirectX. Le compilateur est 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.
Le SmallBasic est un dialecte qui fonctionne sur un grand nombre de plates-formes (Win32,
MS-DOS, GNU/Linux et Palm OS) et est placé sous une licence GNU.
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'assembleur inline et prochainement une branche orientée objet devrait être
incorporée.
Il existe également une version de Basic pour OpenOffice, appelée OOoBasic (c'est le même
langage utilisé pour StarOffice, même si son nom, StarBasic, change).
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 des sprites, petites images auxquelles on peut donner une
vitesse et un sens de déplacement.
Exemples
Exemple 1 : Basic original non structuré
10 INPUT "Quel est votre nom ? "; NOM$
20 PRINT "Bonjour "; NOM$
30 INPUT "Combien d'étoiles voulez-vous ? "; NOMBRE
40 LET ETOILE$ = ""
50 FOR I = 1 TO NOMBRE
60 LET ETOILE$ = ETOILE$ + "*"
70 NEXT I
80 PRINT ETOILE$
90 INPUT "Voulez-vous plus d'étoiles ? "; ETOILE$
100 IF LEN(ETOILE$) = 0 THEN GOTO 90
110 LET ETOILE$ = LEFT$(ETOILE$, 1)
120 IF (ETOILE$ = "O") OR (ETOILE$ = "o") THEN GOTO 30
130 PRINT "Au revoir ";
140 FOR I = 1 TO 200
150 PRINT NOM$; " ";
160 NEXT I
170 LPRINT
Commentaires :
Notes et références
1.
Le présent article est basé sur un article originellement écrit sur Nupedia par Peter Fedorow,
et modifié sur la version anglaise de Wikipédia, puis traduit en français.
Voir aussi
Sur les autres projets Wikimedia :
Articles connexes
Liens externes
[masquer]
v · m
Langages de programmation
Ada
Erlang
Concurrents Go
Modula-2
Clips
Prolog
Déclaratifs
Mercury
Common Lisp
Erlang
F#
Gallina
Haskell
Lisp
Fonctionnels
ML
OCaml
Opa
Scheme
Standard ML
Impératifs Algol
APL
Assembleur
Basic
BCPL
C
Cobol
Forth
Fortran
Julia
Limbo
Lua
Modula-2
Natural
NQC
NXC
OPL
Pascal
Perl
PL/I
PowerShell
Rust
Tcl
WLangage
ActionScript
AppleScript
C++
C#
CoffeeScript
D
Delphi
Eiffel
Groovy
Java
JavaScript
Lisaac
Orientés objet
Logo
Objective-C
PHP
Python
Ruby
Scala
Simula
Smalltalk
Swift
Kotlin
Visual Basic