Basic
- Pour les articles homonymes, voir Basic (homonymie). Image manquante
Logo_Begriffsklärung.png
</center>
| Image manquante Langage_progr.png image:Langage_progr.png |
| Cet article fait partie de la série Langages de programmation |
| Langages à objets |
| Ada 95 - C++ - C# Common Lisp Delphi - Eiffel - Java Nice - Oz - Python Simula - Smalltalk Visual Basic |
| Langages impératifs |
| APL - ASP - Assembleur BASIC - C - COBOL Forth - FORTRAN - Logo Pascal - Perl - PHP |
| Langages fonctionnels |
| Erlang - Haskell ML/OCaml - Oz Lisp/Common Lisp Scheme |
| Langages déclaratifs |
| Clips - Oz - Prolog |
| Langages concurrents |
| Ada 95 - Erlang Java - Oz |
| Langages balisés |
| HTML - SGML - XML Dialectes XML S-expressions |
| Voir aussi |
| Conception - Codage Tests - Optimisations |
Le basic est un langage de programmation de haut niveau, inventé en 1964 par John George Kemeny (1926-1993) et Thomas Eugene Kurtz (1928-) au « Dartmouth College ». Il fut conçu de façon à permettre aux étudiants des filières non scientifiques d'utiliser les ordinateurs. En effet, à l'époque, l'utilisation des ordinateurs nécessitait l'emploi d'un langage de programmation dédié, ce dont seuls les spécialistes étaient capables. Le nom « basic » est l'acronyme de Beginner's All-purpose Symbolic Instruction Code.1 Cet acronyme est lié au nom d'un article non-publié de Thomas Kurtz, et n'a aucun rapport avec les séries intitulées « Basic English » de C. K. Ogden. Les concepteurs du langage souhaitaient qu'il soit du domaine public, ce qui favorisa sa propagation.
Le basic est indissociable de l'apparition, dans les années 1980, de la micro-informatique grand public. En effet, la plupart des micro-ordinateurs vendus durant cette période étaient fournis avec un interpréteur basic, et quelques calculatrices programmables en furent même dotées.
Les huit principes de conception du basic étaient :
- Être facile d'utilisation pour les débutants
- Être un langage généraliste (general-purpose)
- Autoriser l'ajout de fonctionnalités pour les experts (tout en gardant le langage simple pour les débutants)
- Être interactif
- Fournir des messages d'erreur clairs et conviviaux
- Avoir un délai de réaction faible pour les petits programmes
- Ne pas nécessiter la compréhension du matériel de l'ordinateur
- Isoler (shield) l'utilisateur du système d'exploitation
| Sommaire |
Historique
Le basic est peut-être le langage de programmation le plus connu. La forme originelle du langage est basée sur le fortran II, avec des ajouts pour le rendre interactif et capable d'utiliser des tableaux arithmétiques. Bien qu'il y ait eu beaucoup d'interpréteurs basic produits, rien n'empêche ce langage d'être compilé, ce qui est d'ailleurs le cas dans les produits modernes. Bien qu'il ait été normalisé, plusieurs dialectes sont apparus au cours des années, avec la même base du langage et incluant des améliorations sur les interfaces graphiques et une structure de type orienté objet.
La première version du basic a été développée sur un mainframe temps réel appelé GE-256 (General Electric), qui était un GE-235 avec une GE DataNet-301. C'était le premier langage spécialement conçu pour être utilisé sur des systèmes interactifs. En dépit de sa popularité, le basic a été dédaigné par la plupart des informaticiens peu de temps après le développement de la première version.
Durant les premiers temps, il n'y eut pas de version interprétée. Cependant, avec l'arrivée des premiers ordinateurs individuels, les versions interprétées du basic ont proliféré. Les développeurs et fabricants des premiers ordinateurs individuels avec clavier ont eu besoin d'inclure un outil permettant aux gens d'écrire des logiciels pour être utilisés sur leurs ordinateurs. Le basic était fait à cette fin puisqu'il a été conçu pour l'utilisation sur un terminal, et une version interprétée pouvait s'adapter dans le petit espace de ROM disponible alors. Beaucoup de langages de programmation étaient trop gros pour être installés sur les petits espaces de ROM des machines et n'avaient aucun environnement de développement intégré de défini, alors que le basic en avait un embryon avec les commandes old, new, list et quelques autres déjà définies à l'intérieur même du langage, lui conférant ses capacités interactives.
Presque tous les premiers ordinateurs individuels possédaient un interpréteur basic en ROM (C64, TRS 80, Apple II, etc.).
En 1968, un article d'Edsger Dijkstra considéra que les langages de programmation utilisant seulement goto avaient une incidence nocive sur la productivité du programmeur et la qualité du code résultant (Communications de l'ACM n°11, p. 147-148. 1968). Cette critique s'appliquait alors aux dialectes du basic. Les dialectes et versions qui apparurent dix à vingt ans plus tard prirent cette critique en compte et elle n'eut plus de raison d'être pour le Basic. Cependant, la popularité du Basic, langage de programmation grand public par excellence, fit dire à certains que ce langage a donné naissance à plus de mauvais programmes qu'aucun autre langage.
Borland a publié le 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 DOS.
Les versions les plus répandues ont été conçues par Microsoft. En 1977 Microsoft a sorti l'Altair basic pour le MITS Altair. C'était le premier produit vendu par Microsoft. En 1979 Microsoft était en pourparlers avec IBM afin de détenir une licence de l'interpréteur BASIC des futurs PC. Cette version était incluse dans la puce ROM du bios des PCs, et était chargée au démarrage. Plus tard, Microsoft a vendu différentes versions du basic pour DOS, dont Basica, GW-Basic, Quick Basic et Visual Basic pour DOS. Microsoft Windows 95 et 98 incluaient un interpréteur Quick Basic pour l'installation à partir du cédérom et Windows 98 incluait un interpréteur VBScript. Visual Basic for Applications a été ajouté dans les produits Microsoft Office en 1997.
Entre temps, vers la fin des années 1970, la nécessité d'enseigner un langage de programmation fondé sur des bases plus saines, a donné naissance au Langage Pascal. Ce langage, en particulier grâce au compilateur Turbo Pascal de la société Borland, beaucoup plus rapide que n'importe quel interpréteur Basic de l'époque, remporta un énorme succès, et marqua le début du déclin de la popularité du Basic dans le grand public.
Syntaxe
La syntaxe vraiment minimale du basic a seulement besoin de LET, PRINT, IF et GOTO. Un interpréteur 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 cela, les programmes n'étaient donc pas structurés. Si on ajoute une pile, la boucle FOR et la commande GOSUB peuvent être ajoutées. (La pile est nécessaire pour le GOSUB, mais pas pour le FOR.)
Les premiers interpréteurs basic étaient basés sur des numéros de ligne, comme le fortran.
Les dialectes basic modernes n'emploient plus les numéros de lignes et ont une richesse de commandes et une construction des déclarations de données identiques à d'autres langages comme le langage Pascal ou le Modula 2.
Les récentes variantes comme le Visual Basic ont introduit une orientation objet et, dans la dernière version, l'héritage (simple). La gestion de la mémoire est simple car basic inclut un ramasse-miettes. Cependant la gestion des erreurs nécessite l'utilisation de GOTO, ce qui casse la structuration des programmes.
La richesse des variantes est synonyme de non-standardisation. Cela montre comme ce langage est un langage « 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 programmation comme le cobol et le fortran. Cependant le mouvement de basic est de loin le plus important.
Procédures
Le basic (sauf le Visual Basic ou le Visual Basic .NET) n'a pas de bibliothèque externe standard comme d'autres langages, le C par exemple. Au lieu de cela, l'interpréteur 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.
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. Ce qui 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 Microsoft Quick Basic ont ajouté un support des sous-routines et des fonctions. 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 explicite »). 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 actuellement des structures, c'est-à-dire une simple variable contenant plusieurs champs.
Disponibilité et variantes de dialecte
Le basic est disponible pour toutes les plates-formes récentes. Une version interprétée libre qui est conforme avec les standards et hautement multiplates-formes est le ByWater Basic. L'interpréteur est écrit en C et est sous une licence GNU. 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 GUI existe et s'appelle le Phoenix Object Basic. Il en existe une autre plus récente : Gambas.
La plus connue des versions compilées est le Quick Basic 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 version du Dartmouth Basic.
D'autres versions, dont le PowerBasic de PowerBasic, le True Basic de True Basic, sont conformes avec le dernier standard officiel du basic (True Basic Inc. a été fondée par les créateurs originaux du basic).
RealBasic est une variante disponible pour les Apple Macintosh qui génère aussi des exécutables pour Microsoft Windows.
Une variante d'un dialecte basic simple pour la machine virtuelle Parrot montre comment un interpréteur 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 et GNU/Linux. Il peut aussi compilé et contenir des instructions en assembleur en-ligne.
Le SmallBasic est un dialecte qui fonctionne sur un grand nombre de plates-formes (Win32, DOS, GNU/Linux et PalmOS) et est placé sous une licence GNU.
Le FreeBASIC développé par une http://www.qbasicnews.com, est un compilateur 32-bits distribué sous licence GPL. Il est multi-plateforme et, bien qu'encore en version béta, très prometteur. Sa syntaxe est calqué sur celle du QBasic de Microsoft mais il supporte désormais les pointeurs, l'assembleur in-line et prochainement une branche orientée objet devrait être incorporée. [[1]]
Exemples
Exemple 1 : basic original non structuré (Applesoft Basic)
10 INPUT "Quel est votre nom"; A$ 20 PRINT "Bonjour "; A$ 30 INPUT "Combien d'étoiles voulez-vous"; S 40 FOR I = 1 TO S 50 S$ = S$ + "*" 55 NEXT I 60 PRINT S$ 70 INPUT "Voulez-vous plus d'étoiles"; Q$ 80 IF LEN(Q$) = 0 GOTO 70 90 Q$ = LEFT$(Q$, 1) 100 IF (Q$ = "O") OR (Q$ = "o") THEN GOTO 30 110 PRINT "Au revoir "; 120 FOR I = 1 TO 200 130 PRINT A$; " "; 140 NEXT I 150 PRINT
Exemple 2 : basic moderne structuré
INPUT "Quel est votre nom"; UserName$
PRINT "Bonjour "; UserName$
DO
INPUT "Combien d'étoiles voulez-vous"; NumStars
Stars$ = ""
Stars$ = REPEAT$("*", NumStars) '<-ANSI BASIC
'Stars$ = STRING$(NumStars, "*") '<-MS BASIC
PRINT Stars$
DO
INPUT "Voulez-vous plus d'étoiles"; Answer$
LOOP UNTIL Answer$ <> ""
LOOP WHILE UCASE$(LEFT$(Answer$, 1)) = "O"
PRINT "Au revoir ";
FOR A = 1 TO 200
PRINT UserName$; " ";
NEXT A
PRINT
Dialectes
Dialectes fonctionnant sur plusieurs plates-formes
- BASIC/Z (ou ZBASIC) (CP/M, MDOS)
- BBC BASIC (Acorn(Electron, BBC, Archimede, RISC PC), MS-DOS, CP/M)
- Blitz Basic (AmigaOS, PC)
- Bywater BASIC (aka bwBASIC) — Basic-Interpreter pour MS-DOS et POSIX. C'est un peu comme GWBasic.
- C-BASIC (CP/M, MS-DOS) — Successeur de BASIC-E
- FreeBasic (MS-DOS, Windows, GNU/Linux) — GPL
- GfA Basic (Atari ST, AmigaOS, MS-DOS, Windows)
- HiSoft Basic (Atari ST, ZX Spectrum)
- HotBasic (Win32, Linux)
- Microsoft BASIC (plusieures plateformes)
- PowerBasic (MS-DOS et Win32) — successeur de Turbo Basic
- PureBasic (Windows, GNU/Linux et AmigaOS)
- RapidQ (Windows, Linux, Solaris/Sparc et HP/UX)
- REALbasic (Macintosh, Windows, Win32)
- sdlBasic
- SmallBasic (Windows, GNU/Linux, et PalmOS) — GNU
- True BASIC (MS-DOS, Windows, Macintosh)
- wxBasic (Linux et Windows)
- XBasic (Windows, Linux) — (GNU)
- YaBasic (Windows et GNU/Linux) — GPL
Dialectes qui fonctionnent sur une plate-forme unique
- Altair BASIC
- AmigaBasic (AmigaOS)
- AMOS (AmigaOS)
- Applesoft BASIC (Apple II)
- BASIC09 (OS9)
- BASICA (Advanced BASIC) (MS-DOS)
- DarkBASIC (Windows)
- Dartmouth BASIC
- FutureBASIC (Macintosh)
- Gambas (GNU/Linux; GPL)
- GW-BASIC (MS-DOS)
- IBasic (Windows)
- Liberty BASIC (Windows)
- Locomotive BASIC (Amstrad)
- Phoenix Object Basic (GNU/Linux)
- QBasic (MS-DOS) — Soyez venu avec des versions de MS-DOS de 5.0 à 6.22.
- Quick BASIC (MS-DOS) — QBasic-variante étendus (pour être plus précis, QBasic est un QuickBasic réduit). Était la version commerciale de Qbasic. Soyez venu avec un compilateur.
- Simon's BASIC (Commodore 64)
- STOS (Atari ST)
- Turbo Basic (DOS) — (voir PowerBasic)
- Visual Basic (Windows)
- Visual Basic .NET (Windows avec la plateforme .NET)
BASIC intégrée / Langages de scripts basées sur BASIC
- Caché Basic — Un des deux langages de script dans le Caché base de données
- LotusScript (Lotus Notes)
- ScriptBasic (Windows et GNU/Linux) — un variant langage de script de BASIC. GPL
- StarOffice Basic (aka StarBasic) (OpenOffice.org, StarOffice)
- Visual Basic for Applications (VBA) (MS Office sur Windows et Macintosh)
- Visual Basic Script (VBS) (AKA VBScript) (Windows)
- WordBasic (MS Word avant MS Word 97)
Autres / inconnu / non trié
- ROM BASIC
- THEOS Multi-User Basic *
Documents définissant le basic
- ANSI Standard for Minimal Basic (ANSI X3.60-1978 "FOR MINIMAL BASIC")
- ISO Standard for Minimal Basic (ISO/IEC 6373:1984 "DATA PROCESSING - PROGRAMMING LANGUAGES - MINIMAL BASIC")
- ANSI Standard for Full Basic (ANSI X3.113-1987 "PROGRAMMING LANGUAGES FULL BASIC")
- ISO Standard for Full Basic (ISO/IEC 10279:1991 "INFORMATION TECHNOLOGY - PROGRAMMING LANGUAGES - FULL BASIC")
- ANSI Addendum Defining Modules (X3.113 INTERPRETATIONS-1992 "BASIC TECHNICAL INFORMATION BULLETIN # 1 INTERPRETATIONS OF ANSI 03.113-1987")
- ISO Addendum Defining Modules (ISO/IEC 10279:1991/ Amd 1:1994 "MODULES AND SINGLE CHARACTER INPUT ENHANCEMENT")
Au nombre des modèles populaires qui l'utilisèrent figurent :
- La série CPC de Amstrad
- Les modèles de la marque Commodore
- Les Apple I, II, III et variantes
- Le TI99-4 de Texas Instruments
- Les modèles To de Thomson
- Certaines calculatrices Casio
- L'incontournable ZX-81
- Le Tektronix 4051 (BASIC graphique sur écran rémanent)
- L'Olivetti P6060
- L'Olivetti M10 (ordinateur ayant 24 Ko ou 32 Ko de RAM non volatile avec BASIC en ROM, et pas de disque dur ni de disquettes)
- L'IBM PC dont les premiers modèles avaient un BASIC en ROM
Une opinion sur BASIC
« BASIC is unusable to teach any kind of programming, even basic programming! ». Olivier Lecarme, Université Laval, Québec.
Références
1 En correspondance avec Thomas E. Kurtz.
Le présent article est basé sur un article originellement écrit sur Nupedia par Peter Fedorow fedorowp@yahoo.com, et modifié sur la version anglaise de Wikipedia, puis traduit en français.
Hello World
Étant donné l'extrême simplicité du BASIC, "Hello World !" peut s'écrire sans autre définition qu'une commande de type Afficher HELLO WORLD. Le code est donc le suivant:
PRINT "Hello World !"
| Image manquante Symbole-ordinateur.png | Portail Informatique - Accédez d'un seul coup d’œil à toute la série des articles de Wikipédia concernant l'informatique. |
