Penser petit
Histoire du Langage Basic
Ordinateur
Dans un essai très commenté de 2006 publié en ligne dans le magazine Salon intitulé "Why Johnny Can't Code" (le titre est une pièce de théâtre sur le livre classique de Rudolf Flesch Why Johnny Can't Read), le scientifique et auteur de science-fiction David Brin a déploré la perte d'un BASIC facile à utiliser et prêt à tout moment.
Rejetant les langages d'entrée de gamme comme Perl, Python et même Visual Basic comme des boîtes noires inaccessibles pour un débutant - plus précisément, pour quelqu'un comme son fils, Ben, qui était en cinquième année - Brin aspirait à l'époque d'une « lingua logicielle ». franca ", un langage de programmation commun, qui confrontait efficacement les utilisateurs directement parce que le langage était encodé en ROM - comme BASIC l'était aux débuts de l'informatique personnelle.
À l'époque, BASIC dirigeait la machine ; il n'y avait tout simplement pas moyen de l'éviter. Les faiblesses de cette première génération d'implémentations ROM BASIC d'ordinateur personnel étaient en fait des forces déguisées. "[BASIC] était grossier. C'était sec. C'était inadapté au monde de l'interface utilisateur graphique. BASIC avait beaucoup de mauvaises habitudes", admet-il. "Mais cela a libéré plusieurs millions d'esprits brillants pour fouiller [et jeter un coup d'œil] et explorer et aspirer comme jamais auparavant." L'écriture de programmes en BASIC permettait à un utilisateur de tracer la logique, les étapes d'exécution, d'un algorithme, de voir que les points à l'écran se déplaçaient pour s'accorder "des mathématiques, et non de la magie".
L'impulsion de l'essai était, en partie, une question récurrente de Ben à son père : pourquoi les entrées de type BASIC ont-elles été trouvées dans les manuels scolaires de mathématiques ?
BASIC, et l'accès des élèves à celui-ci, avaient autrefois été si universels que les auteurs de manuels de mathématiques tenaient pour acquis que les enseignants pouvaient, s'ils le souhaitaient, attribuer des saisies au clavier comme exercices d'apprentissage; non seulement ces saisies enrichiraient leur compréhension des mathématiques, mais ces étudiants seraient également exposés à une petite dose de programmation informatique.
Mais sans lingua franca, ces exercices BASIC ont pratiquement disparu. (Et avec des manuels ayant une durée de conservation d'environ dix à quinze ans, pratiquement aucun étudiant ne rencontre d'anciens manuels de mathématiques à cette date tardive.)
Qu'avons-nous perdu avec la perte de BASIC ? Beaucoup, soutient Brin avec force. Comme la plus grande génération qui a bricolé avec des automobiles avant d'être expédiée à la guerre et qui connaissait ensuite les véhicules qu'ils devaient utiliser pendant la Seconde Guerre mondiale, la dernière génération d'innovations techniques était présentée au public par des programmeurs qui avaient réduit leur dents sur BASIC.
À titre d'exemple, Brin cite l'artiste technologique Sheldon Brown, qui, dans un cours d'électronique pour les arts, a travaillé avec le Parallax BASIC Stamp, un microcontrôleur doté d'un interpréteur BASIC appelé PBASIC estampé dans la ROM. Un autre exemple similaire de l'influence précoce de BASIC sur un programmeur, qui n'est pas mentionné par Brin, est celui de Linus Torvalds, mieux connu pour avoir aidé à créer le système d'exploitation Linux.
La première exposition de Torvalds au BASIC a eu lieu au début des années 1980 à l'âge de onze ans alors qu'il programmait sur le Commodore VIC-20 de son grand-père. "Ma sœur dit que la première chose que je lui ai montrée était celle avec laquelle tout le monde commence quand vous faites BASIC : 10 PRINT, et vous imprimez une chaîne, puis 20 GOTO 10", se souvient Torvalds. "Et cela revient essentiellement à dire, imprimez cette chaîne pour toujours." Plus précisément, sa sœur Sara affirme qu'il s'agissait du premier programme BASIC de Torvalds :
10 PRINT "SARA IS THE BEST"
20 GOTO 10
Mais Torvalds conteste son affirmation – "parce que nous n'étions pas toujours nécessairement les meilleurs amis du monde", a-t-il déclaré.
David Brin termine son essai par un plaidoyer sensé : que quelqu'un construise un nouveau BASIC accessible. "Il serait trivial pour Microsoft de fournir une version de BASIC que les enfants pourraient utiliser, quand ils le souhaitent, pour taper tous ces exemples de manuels", écrit-il.
Quelque chose qui ne prendrait pas beaucoup de mémoire, qui aurait des didacticiels intégrés et faciles à exécuter, et qui "peut-être [encouragerait] même beaucoup d'entre eux à passer au niveau supérieur. Vers (par exemple) Visual Basic !"
Microsoft écoutait – enfin, plus précisément, le développeur de Microsoft de l'époque, Vijaye Raji, écoutait. (Il a ensuite quitté l'entreprise pour rejoindre Facebook.) Enfant, Raji était un programmeur BASIC passionné. Il a commencé sur le Sinclair ZX Spectrum d'une bibliothèque en utilisant Sinclair BASIC, puis est passé au Turbo BASIC plus puissant. Ces incursions dans la langue dans sa petite enfance ont laissé une trace : il a décidé de devenir ingénieur logiciel.
Après avoir lu l'essai de Brin, Raji, il a demandé à certains de ses collègues de Microsoft : Avec quel langage avez-vous commencé à programmer ? La plupart lui ont dit BASIC. Puis il a posé une question de suivi : comment allez-vous, ou allez-vous, enseigner la programmation à vos enfants ?
Là, les réponses qu'il a reçues étaient mitigées, allant des langages de programmation de haut niveau comme Python et Ruby à la programmation évènementielle comme Alice et Scratch jusqu'à la pure confusion ; plusieurs employés ont même pris une ligne dure contre l'enseignement du BASIC, qu'ils aient ou non une meilleure suggestion, soulignant un point évident : tout le monde ne partageait pas la nostalgie du BASIC non structuré.
Notez que Kemeny et Kurtz n'étaient pas d'accord avec le fait d'appeler le BASIC à numéro de ligne "non structuré" puisqu'il était techniquement possible de donner à ces programmes un semblant de structure ; peut-être, par conséquent, devrions-nous considérer "non structuré" comme un terme relatif, plutôt qu'un un absolu.
Mais Raji était nostalgique, disant que "nous avons perdu le charme de [boot to] BASIC alors que nous sommes passés à des langages plus avancés et plus sophistiqués". Raji interrogeant ses collègues "m'a fait réfléchir à la raison pour laquelle il n'y a pas de "petite" variante de BASIC qui apporte la simplicité de la langue d'origine à l'époque moderne".
Ainsi, il a recherché comment les jeunes apprennent la programmation ; ce qu'il a découvert, c'est que la plupart des étudiants, lorsqu'ils sont arrivés à l'université, ont été initiés à Java, un langage orienté objet.
Raji a décidé de construire un nouveau BASIC pendant son temps libre - il l'a appelé Small Basic - dans le but exprès de garder les choses simples et invitantes pour le débutant. Il devait y avoir un "très petit ensemble de concepts" avec Small Basic ; "c'est impératif, ça commence par le haut et ça va vers le bas, et il y a des instructions de branchement que vous pouvez utiliser pour dire au programme quoi faire.
Vous n'avez pas à vous soucier de la programmation orientée objet, ou du masquage, de l'encapsulation , ou l'héritage... [choses] qui ne sont pas destinées aux débutants et aux enfants", a-t-il expliqué dans une interview. "[Small Basic] est intentionnellement limité."
Si ces jeunes utilisateurs voulaient plus de capacités et moins de limitations, Small Basic les inciterait, espérons-le, à rechercher des langages de programmation plus puissants, servant ainsi son objectif de susciter l'intérêt pour le codage.
En outre, a déclaré Raji, la possibilité de télécharger des images à partir des médias sociaux et d'importer de simples mises à jour de la bibliothèque a rafraîchi BASIC pour les jeunes, qui ont la main dans un barrage constant de médias en ligne ; il serait insensé de ne leur proposer qu'une programmation textuelle au XXIe siècle.
La première version de Small Basic, un langage Microsoft .NET, est sortie en 2008. Raji a certainement gardé le langage petit : il n'y avait que quatorze mots-clés, le même nombre disponible dans Dartmouth BASIC the First. Mais contrairement à BASIC the First, une grande partie de Small Basic se conformait à un paradigme orienté objet, et Small Basic ressemble à un environnement de développement moderne et intensif en interface graphique (y compris une fonctionnalité appelée "Intellisense", qui présente dynamiquement les propriétés et les méthodes des objets).
Par exemple, la bibliothèque standard (intégrée) comprend une classe graphique Turtle, rappelant le langage de programmation Logo. Par exemple, les déclarations:
Turtle.Move(50)
Turtle.TurnLeft ()
déplace la tortue (le curseur) de cinquante pixels vers l'avant, puis la tourne de quatre-vingt-dix degrés vers la gauche, le code lui-même ressemblant à une réinterprétation moderniste d'un ancien concept. Le logo est devenu connu sous le nom de "langage de tortue" parce que ses utilisateurs ont programmé des instructions mathématiques pour déplacer une "tortue", qui prenait la forme d'un petit robot ou d'un objet virtuel sur un CRT qui dessinait des lignes dans son sillage.
Il y a aussi une classe Small Basic Math avec un certain nombre de méthodes, y compris la valeur absolue, la racine carrée, les fonctions trigonométriques et la génération de nombres pseudo-aléatoires. Les bibliothèques tierces sont également prises en charge.
Small Basic autorise les types de données chaîne, numérique et booléen (vrai ou faux), bien que les variables n'aient pas besoin d'être déclarées. Des tableaux de plusieurs dimensions sont également possibles, et tous les tableaux sont indexés à zéro (c'est-à-dire que le premier élément est l'indice zéro).
Small Basic inclut même un composant de publication en ligne ; tout programme créé dans Small Basic peut être téléchargé en ligne, auquel cas l'utilisateur reçoit un numéro d'identification pour accéder et exécuter le code dans un navigateur Internet. De plus, le code Small Basic peut être transféré vers Visual Basic.
Et, dans un retour résolument à l'ancienne, Kidware Software a reçu l'autorisation de republier BASIC Computer Games (2010) de David Ahl, mis à jour avec les versions Small Basic des programmes originaux. Cette fois, cependant, le livre est au format électronique, sans qu'il soit nécessaire de taper les lignes de programme.
Small Basic n'est pas parfait. Par exemple, il est souvent fastidieux d'effectuer les tâches les plus simples. Alors qu'une instruction BASIC de première génération pour imprimer du texte pourrait ressembler à ceci :
PRINT "ALTAIR 8800"
Le code Small Basic équivalent est
TextWindow.WriteLine("ALTAIR 8800")
bien que, pour être honnête, le code soit d'une pièce avec la programmation moderne, ce qui est le point: Small Basic devrait servir de tremplin aux environnements de programmation d'aujourd'hui, pas d'hier, s'il veut vraiment continuer l'héritage de BASIC.
Mais Small Basic a d'autres problèmes systémiques. Contrairement à QBASIC et Visual Basic, les variables ne peuvent techniquement pas être transmises aux sous-routines car toutes les variables ont automatiquement une portée globale.
Majed Marji et Ed Price, auteurs de Learn to Program with Small Basic: An Introduction to Programming with Games, Art, Science, and Math (2016), plaident pour les avantages de cette approche : "Cette fonctionnalité est utile car elle vous permet de définir des variables juste au moment où vous en avez besoin (au lieu d'avoir à mettre toutes vos variables en haut de votre programme)." Ce qui n'a pas de sens, puisque Small Basic utilise des objets prédéfinis qui ont des méthodes - et beaucoup de ces méthodes ont des paramètres.
Sur le site I Programmer, l'auteur Mike James va au cœur de cette contradiction : Par exemple, la méthode pour produire une sortie texte est :
TextWindow.WriteLine(MyString)
cela oblige donc à introduire au moins des paramètres ne serait-ce que de manière limitée. Plus important encore, sans la possibilité de passer des paramètres et d'obtenir des valeurs de retour, les sous-programmes n'ont pas vraiment le pouvoir nécessaire pour convaincre le débutant qu'ils sont une très bonne idée. En bref, vous feriez mieux de préparer une bonne réponse à "pourquoi utiliser un sous-programme alors que toutes les variables sont globales".
Tout comme dans les versions non structurées de BASIC, telles que GW-BASIC, les étiquettes de sous-programmes dans Small Basic servent de simples signets vers des blocs de code informels, et non des sous-programmes fonctionnels. Ainsi, les apparences peuvent être trompeuses : le Small Basic peut ressembler à un langage moderne, mais la ressemblance n'est — plutôt surprenante — que superficielle à bien des égards.
De plus, Small Basic n'a pas vraiment résolu le dilemme présenté par David Brin dans "Why Johnny Can't Code", car contrairement aux ROM BASIC à leur apogée, Small Basic n'est pas omniprésent, nécessite plusieurs étapes pour être téléchargé et installé, et ne fonctionne pas, ne vous oblige pas à l'utiliser.
En fait, Brin pense que beaucoup de gens ont raté le but de son essai ; pour certains, ses paroles n'ont fait qu'attiser les passions des fidèles de BASIC et des ennemis de BASIC. "Je n'ai jamais reçu autant de courrier haineux que j'en ai reçu pour cet article, pas même pour mes infâmes attaques contre Star Wars", a-t-il déclaré plus tard.
C'était presque entièrement des gens qui ont raté le point, avec toute la rage dirigée contre Basic. Permettez-moi de préciser que je ne défends pas Basic. C'était un programme de codage en ligne primitif, mais tout le monde l'avait. Les manuels comportaient des exercices écrits en Basic, et les enseignants pouvaient compter sur une grande partie de leurs élèves pour effectuer ces devoirs.
Mais le BASIC d'aujourd'hui est devenu facultatif, un produit de niche alimenté par les vapeurs de la nostalgie. Tout comme les diffuseurs ne peuvent plus compter sur le public qui regarde l'un des trois réseaux (ABC, CBS ou NBC) en raison de la prolifération massive des chaînes câblées et des médias en ligne, les auteurs de manuels de mathématiques ne peuvent plus supposer que les élèves ont accès au BASIC.
Il est peut-être surprenant que les programmes de saisie dans les manuels plus anciens n'aient pas été reformatés pour fonctionner avec TI-BASIC, la simple implémentation BASIC disponible sur la série de calculatrices graphiques Texas Instruments omniprésente ; bien que les manuels de mathématiques modernes aient généralement des encadrés décrivant comment utiliser ces calculatrices graphiques, peu de ces manuels contiennent des listes de programmes.
Par conséquent, peu importe à quel point les implémentations rétrogrades de BASIC sont intelligentes - et il en existe de nombreuses brillantes en ligne, sous la forme de versions téléchargeables et basées sur un navigateur, certaines même inspirées par l'essai de Brin (comme BASIC-256) ; en fait, il y a plus d'implémentations de BASIC disponibles aujourd'hui (y compris des émulateurs en ligne pour de nombreux BASIC mentionnés dans cette section, que jamais auparavant - à moins que nous n'acceptons de redonner le contrôle de nos systèmes d'exploitation à un langage de programmation de haut niveau comme BASIC , l'époque où il y avait une lingua franca de programmation est révolue et le restera.