La création de BASIC
Dans la course folle de John Kemeny pour marquer de son empreinte le département de mathématiques de Dartmouth, il a effectivement utilisé les étudiants de premier cycle de l'école comme monnaie d'échange avec la NSF pour se procurer certains des matériels informatiques les plus avancés au monde à l'époque, puis s'est appuyé sur ces mêmes étudiants de premier cycle ( qui étaient plus qu'heureux d'obliger, intéressés comme ils l'étaient par l'exploitation du matériel), avec son subordonné direct, Thomas Kurtz, pour aider à construire un système de temps partagé et créer le langage de programmation qui le populariserait : pas ALGOL ou FORTRAN, comme la bourgeoisie technocratique aurait pu le prévoir, mais un langage généraliste pour le prolétariat : le BASIC, le code d'instruction symbolique polyvalent du débutant.
Kemeny a proposé à Kurtz d'écrire un nouveau langage à utiliser avec le DTSS ; pourtant, ce ne serait pas leur première chance de créer un nouveau langage informatique.
En 1956, ils avaient programmé DARSIMCO (DARtmouth SlMplified COde), conçu pour raccourcir une partie de l'ennui nécessaire lors du codage dans le langage d'assemblage SAP pour l'IBM 704. Leurs collègues, cependant, ne l'ont pas utilisé.
Il y avait aussi DOPE (Dartmouth Oversimplified Programming Experiment) pour le LGP-30 que Sidney Marshall, alors lycéen, a écrit avec Kemeny tout en prenant des cours de calcul sur le campus; DOPE, bien qu'il présageait BASIC de plusieurs manières (par exemple, les conventions de dénomination des variables), était trop limité pour parvenir à une utilisation généralisée.
« Nous pouvons sûrement faire mieux que FORTRAN à des fins pédagogiques ? Kemeny a demandé de manière rhétorique à Kurtz, bien que Kurtz ne croyait pas initialement qu'ils pouvaient faire mieux.
Et si personne n'adoptait le langage que nous créons ? pensa Kurtz. Kurtz a pensé qu'ils pourraient plutôt enseigner aux étudiants de premier cycle la programmation sur le DTSS en utilisant certains des sous-ensembles les plus faciles d'ALGOL ou de FORTRAN, simplifiant essentiellement d'énormes pans d'un langage établi.
Mais cette approche s'est avérée être un non-démarrage: peu importe la quantité d'ALGOL que Kurtz a dépouillé, il se retrouvait toujours avec des règles de ponctuation originales - mais disposait également de la syntaxe, et une langue tout à fait différente émergerait.
Et FORTRAN n'était pas mieux, chargé d'une série d'éléments syntaxiques qui étaient au mieux ésotériques, au pire frustrants et erronés (FORTRAN était censé être si pointilleux qu'une seule faute de frappe dans un programme a entraîné la destruction involontaire du vaisseau spatial NASA Mariner 1 à destination de Vénus , bien que cette histoire soit probablement apocryphe); néanmoins, la suppression de ces éléments, comme avec ALGOL, a fondamentalement changé le langage.
Peut-être qu'au lieu d'éliminer un sous-ensemble d'ALGOL ou de FORTRAN, il y avait un langage assez simple pour être adapté à des fins d'enseignement. Kurtz est tombé sur JOSS (JOHNNIAC Open Shop System), un langage de système de partage de temps conçu pour l'ordinateur JOHNNIAC à RAND. Mais JOSS, lui aussi, avait une syntaxe contre nature ; par exemple, les points décimaux n'étaient pas autorisés avec les nombres.
Si Kemeny et Kurtz avaient vraiment l'intention de rendre la programmation accessible à tous les étudiants de premier cycle, alors ils devaient écrire quelque chose de convivial. Kemeny était tellement concentré sur la convivialité qu'il avait insisté pour utiliser les mots HELLO et GOODBYE à la place de LOGON et LOGOFF sur le DTSS. Kurtz était finalement d'accord avec Kemeny sur le fait qu'une nouvelle langue était la seule solution viable.
En construisant ce nouveau langage, ils emprunteraient certaines des meilleures fonctionnalités des langages établis - tels que les variables indicées et l'instruction GOTO de FORTRAN, et les structures de boucle d'ALGOL (la syntaxe de boucle de FORTRAN n'était pas particulièrement intuitive) - mais repensez-les, en mettant une prime sur la facilité d'utilisation, la cohérence et la compréhensibilité, en particulier pour le profane.
« Pourquoi un nouvel utilisateur devrait-il être obligé d'apprendre un langage complexe juste pour communiquer avec l'ordinateur ? » Kemeny a demandé, en continuant : "Pourquoi ne pas enseigner à l'ordinateur un langage qu'il peut comprendre et en même temps facile à apprendre et à utiliser pour les êtres humains ?"
Par exemple, Kemeny a insisté sur le fait que toutes les instructions en BASIC doivent commencer par un mot anglais afin que l'utilisateur sache précisément quelle opération est censée se produire sur chaque ligne.
Les autres langues n'avaient pas cette exigence. Par exemple, ALGOL et FORTRAN utilisaient des opérateurs d'affectation dans des instructions qui pouvaient tout aussi bien passer pour des équations algébriques.
Prenez cette ligne :
T=X+1
Mais l'énoncé ne peut pas être réorganisé, comme vous pourriez le faire en utilisant l'algèbre, en ceci :
X=T-1
Au lieu de cela, T = X + 1 est une déclaration d'affectation de variable, ce qui signifie que la variable à gauche du signe égal - le T - a sa valeur égale à la valeur de la variable X plus une unité. Ainsi, une déclaration comme la suivante - qui serait valide algébriquement - n'est pas une déclaration valide d'affectation de variable dans FORTRAN ou ALGOL :
1=T-X
Kemeny voulait un mot-clé explicite pour désigner l'affectation de variable, il a donc choisi LET. En BASIC, au lieu de T=X+1, l'instruction se lirait:
LET T=X+1
ce qui, à l'oreille de Kemeny, ressemblait plus à un mathématicien prototypique "laissant" une variable égale autre chose et était donc un choix logique. (Dans les implémentations ultérieures non Dartmouth de BASIC, LET est devenu facultatif, assouplissant la règle stricte de Kemeny et Kurtz d'une seule instruction BASIC commençant à chaque ligne.
De plus, pour économiser de la
mémoire dans les premières implémentations de micro-ordinateurs, les
programmeurs étaient autorisés à concaténer plusieurs instructions BASIC dans
une ligne, également antithétique à la vision de Kemeny et Kurtz.)
Il y avait un total de quatorze déclarations dans la première mise en œuvre de Dartmouth BASIC. Tous étaient des mots anglais, délibérément choisis - ou extraits de FORTRAN ou d'ALGOL - pour être aussi faciles à retenir que possible. Outre le LET, il y avait:
• DATA, pour stocker des données immuables (« immuable » signifie ici inchangeable pendant l'exécution ; les données pour DATA devaient être codées en dur dans le programme lui-même) ;
• DEF, pour la définition de la fonction ;
• DIM, pour dimensionner un tableau (un groupe de variables, systématiquement indexées) ;
• END, un mot-clé obligatoire signalant la fin du programme (l'apparition de END alertait les utilisateurs qu'ils avaient atteint la dernière ligne d'un programme) ;
• FOR/TO/STEP, spécifiant la disposition d'une boucle (c'est-à-dire parcourir la boucle du numéro x au numéro y, en passant par STEP
• GOSUB, un saut inconditionnel du programme principal à un sous-programme ; transfère le contrôle du programme à la première instruction du sous-programme ; analogue à l'instruction d'appel du code assembleur ;
• GOTO, un saut inconditionnel vers une instruction à un numéro de ligne spécifié ; analogue à l'instruction de saut du code assembleur ;
• IF/THEN, une structure de contrôle pour la prise de décision ; si une condition particulière est vraie, alors effectuez une action (par exemple, sauter);
• NEXT, spécifiant la fin des boucles ;
• PRINT, pour la sortie de caractères, soit sur le téléimprimeur, soit sur un écran d'affichage ;
• READ, pour lire des données immuables (grâce à l'instruction DATA) et stocker ces données dans des variables ;
• REM, une remarque ou un commentaire (c'est-à-dire des caractères ignorés par le compilateur, qui servent de notes au programmeur) ;
• RETURN, renvoie le contrôle au programme principal à partir d'un sous-programme ; analogue à l'instruction de retour du code assembleur ;
• STOP, arrête un programme ; fonctionnellement identique à l'instruction END mais pas obligatoire.
Les opérations arithmétiques comprenaient l'addition (+), la soustraction (-), la multiplication (*), la division (/) et l'élévation à une puissance (A).
Il y avait aussi des commandes du système d'exploitation telles que HELLO, pour démarrer une nouvelle session utilisateur; NEW, pour démarrer un nouveau programme ; OLD, pour charger un programme ; LIST, pour sortir le code d'un programme chargé en mémoire ; SAVE, pour stocker le programme en mémoire non volatile ; CATALOGUE, pour voir une liste des programmes en mémoire non volatile ; RUN, pour exécuter le programme chargé en mémoire ; et BYE ou GOODBYE, pour mettre fin à la session utilisateur. L'utilisateur a interagi avec le DTSS via une interface de ligne de commande.
Basé sur les conceptions de Kemeny et Kurtz pour BASIC, Kemeny a commencé à écrire le premier compilateur BASIC - qui traduisait les programmes BASIC en code machine - sur des cartes perforées en 1963, bien avant que le DTSS ne soit fonctionnel; pendant ce temps, Kurtz a supervisé les étudiants qui travaillaient sur le DTSS.
Kemeny, qui n'avait jamais écrit de compilateur auparavant, avait besoin de tester son compilateur BASIC sur du matériel GE, qui n'était pas encore arrivé à Dartmouth. Ainsi, cet été là, Kemeny a embauché William M. "Bill" Zani, de la Tuck School of Business, pour l'aider en tant qu'assistant (Zani avait un lien avec GE : son frère était vendeur pour l'entreprise).
Kemeny présentait des notes manuscrites à Zani tous les matins, passant en revue le code avec lui, puis Zani était chargé de transcrire les notes sur des cartes perforées. C'était un travail difficile, pour eux deux. Il y avait des milliers de lignes de code.
Certaines parties du compilateur manuscrit de Kemeny ont fonctionné, mais d'autres non. Autant de débogage que lui et Zani ont fait - ils ont été obligés de déboguer le code à l'aide d'une installation informatique GE à Boston - il y avait encore plusieurs erreurs dans la première implémentation de BASIC, à savoir des calculs incorrects de certains carrés et des problèmes avec la fonction l'INT, ou entier.
Certains programmes ont fonctionné comme prévu tout de suite; en fait, Zani affirme qu'il a été la première personne à avoir vu un programme BASIC fonctionner.
Rappelons que Zani a travaillé pour Kemeny à l'été 1963, bien avant le bientôt célèbre 1er mai 1964, date marquant la naissance de BASIC ; cependant, même Kurtz qualifie cette date de naissance de "plutôt bon mythe" car ni lui ni Kemeny n'étaient sur place et il n'y a pas de photos commémorant l'évènement.
Quoi qu'il en soit, dans la nuit du 1er mai 1964, vers 4 heures du matin, les étudiants de premier cycle John McGeachie et Mike Busch ont finalement fait fonctionner le système d'exploitation DTSS et ils ont réussi à exécuter simultanément des programmes BASIC légèrement différents sur des téléscripteurs séparés. L'un de ces premiers programmes, produisant une sortie de 5, se lisait comme suit :
10 LET X=(7+8)/3
20 PRINT X
30 END
Le compilateur BASIC en un seul passage a fonctionné; le système de temps partagé a fonctionné. Et "les cris de naissance des nourrissons, bien sûr, étaient en BASIC !"
Kemeny a écrit avec enthousiasme. (Fait intéressant, malgré l'accusation ultérieure de création de mythes de Kurtz, le livre de Kemeny et Kurtz de 1985 intitulé Back to BASIC déclare que ce n'était pas McGeachie et Busch qui exploitaient les terminaux le premier matin de mai, mais que "... John Kemeny et un étudiant programmeur étaient assis à des terminaux voisins et tapaient des programmes en BASIC.
Ils tapaient RUN en même temps et étaient délirants quand ils obtenaient les bonnes réponses. Seuls McGeachie et Busch sont décrits stationnés sur des terminaux exécutant des programmes BASIC cette nuit-là, mais Kemeny est introuvable.)
Kemeny et Kurtz ont été très délibérés et méthodiques lorsqu'ils ont assemblé BASIC. Le moins possible était laissé au hasard ; ils se disputaient à chaque étape, s'assurant que les meilleurs choix étaient faits à chaque tournant.
Ils ont conçu le langage ensemble, s'accordant sur les fonctionnalités indispensables :
BASIC devait être polyvalent et facile à utiliser ; donner des messages d'erreur compréhensibles ; garder l'utilisateur isolé du matériel et du système d'exploitation ; et être capable d'exécuter rapidement de petits programmes.
L'utilisateur ne devrait pas avoir à compiler individuellement, puis à lier, puis à charger et enfin à exécuter un programme ; au lieu de cela, toutes ces étapes doivent être prises en charge automatiquement dans les coulisses chaque fois qu'un programme BASIC est exécuté.
Pour garder les choses accessibles au débutant, ils ont décrété que chaque ligne de BASIC ne contienne qu'une seule instruction ; contrairement à JOSS ou ALGOL, les instructions de programme ne se terminaient pas par des signes de ponctuation tels que des points-virgules.
L'arithmétique était entièrement exécutée en virgule flottante (décimales) afin que les utilisateurs n'aient jamais à spécifier explicitement entre les types numériques (par exemple, entier ou virgule flottante); les ordinateurs GE avaient déjà un matériel arithmétique à virgule flottante intégré.
Comme de nouvelles fonctionnalités BASIC ont été ajoutées plus tard par les étudiants programmeurs, Kemeny et Kurtz ont veillé à ce que ces fonctionnalités dites avancées restent hors de vue, accessibles uniquement lorsque l'utilisateur était prêt pour elles.
BASIC sélectionnerait les "options par défaut" les plus simples, faisant des choix pour le débutant - par exemple, avec le format de sortie des nombres - laissant les détails désordonnés dans les coulisses ; les utilisateurs plus experts pourraient jouer avec ces options par défaut à leur guise, en les modifiant en fonction de leurs besoins.
« Une fois que vous avez appris à programmer, les nouveaux langages informatiques sont faciles à apprendre », réfléchit Kurtz des années plus tard. « Le premier est le plus difficile, plus la première langue est simple, plus l'élève moyen l'apprendra facilement."
Les déclarations de départ avec des numéros de ligne - les étudiants étaient encouragés à numéroter les lignes par dizaines, au cas où des lignes devaient être insérées plus tard - permettaient l'interactivité mais étaient en fait une caractéristique héritée des cartes perforées, où les numéros de ligne permettaient à un utilisateur de trier correctement les cartes d'un long programme s'ils devenaient en quelque sorte non triés.
FORTRAN utilisait également des numéros d'instruction (c'est-à-dire de ligne), mais uniquement comme adresses pour les instructions de transfert de contrôle (par exemple, des sauts conditionnels, qui étaient implémentés, comme dans BASIC, en utilisant des instructions IF ); la plupart des lignes en FORTRAN ne nécessitaient donc pas de numérotation.
Si un utilisateur avait besoin de corriger une ligne en BASIC, il n'avait pas à retaper tout le programme, seulement la ligne.
Dès la première implémentation de BASIC, la saisie d'un seul numéro de ligne sans aucune instruction sur la ligne indiquait que l'utilisateur souhaitait supprimer la ligne entière du programme. L'insertion d'espaces n'avait pas d'importance ; BASIC était indépendant de l'espace et ignorait les espaces entre les jetons (i.e. avait une marge d'erreur (de frappe)).
Mais l'indépendance spatiale était probablement une autre idée tirée de FORTRAN. John Backus, dont le groupe IBM a développé FORTRAN, a retracé les origines de la pratique à un problème connu des membres du groupe d'utilisateurs IBM 704 SHARE : celui des perforateurs qui comptaient mal les espaces.
Backus a également estimé qu'un programmeur devrait être capable de styliser son programme sous une forme convaincante et lisible, et un compilateur FORTRAN qui ignore les espaces favoriserait cet objectif.
En BASIC, les messages d'erreur, qui ne seraient pas autorisés à submerger l'utilisateur, faisaient référence au numéro de ligne contenant l'erreur.
Quelques exemples de messages d'erreur :
DIMENSION TOO LARGE, ILLEGAL LINE NUMBER, ILLEGAL FORMULA—"[p]eut-être le message d'erreur le plus courant", lisez le premier manuel Dartmouth BASIC - et FOR WITHOUT NEXT.
Le compilateur signalerait au plus cinq erreurs . De plus, contrairement aux implémentations ultérieures de BASIC, qui étaient généralement des interpréteurs, le BASIC compilé n'exécuterait pas de programme contenant des erreurs de syntaxe.
Toutes les implémentations Dartmouth BASIC étaient des compilateurs; les interpréteurs BASIC nécessitaient moins de mémoire et de puissance de calcul que les compilateurs et sont ainsi devenus la norme sur les premiers micro-ordinateurs sous-alimentés.
Lors de la troisième implémentation de Dartmouth BASIC, l'instruction INPUT a été ajoutée.
INPUT met le programme en pause, attendant que l'utilisateur fournisse des informations. INPUT a élargi la portée de BASIC - des programmes faisant également office de calculatrices avancées à des jeux impliquant des entraîneurs et des adversaires interactifs ; sans INPUT, il n'y a pas de jeux BASIC, et l'intérêt pour la langue aurait probablement décliné rapidement.
Une telle interactivité, une fonctionnalité sur laquelle Kemeny et Kurtz n'étaient pas initialement vendus, n'a été possible que grâce au DTSS, qui n'exécutait qu'une petite partie du programme de chaque utilisateur à la fois.
Il avait fallu plusieurs années pour ajouter INPUT car la déclaration mettait en pause l'un des deux ordinateurs à temps partagé GE; un "échange" sur disque a été conçu pour permettre au système de continuer à exécuter les programmes d'autres utilisateurs.
La convivialité des instructions INPUT et PRINT de BASIC contrastait fortement avec la complexité des instructions I / O de FORTRAN, qui obligeaient le programmeur à spécifier à l'avance des règles de formatage.
En 1966, le DTSS a déménagé au centre de calcul Kiewit dans le bâtiment Kiewit nouvellement construit, nommé en l'honneur de Peter Kiewit, un donateur millionnaire qui a fréquenté Dartmouth pendant une courte période. C'est sa femme, Evelyn, qui a aidé à convaincre son mari de se séparer de l'argent nécessaire à la construction des installations modernes.
L'emplacement des ordinateurs GE à College Hall était devenu insoutenable en raison de la demande accrue d'accès en temps partagé. Kemeny a rédigé une brochure présentant le Kiewit Computation Center aux étudiants de Dartmouth, qui énumérait les nombreux avantages du système de temps partagé.
Étrangement, la brochure fait référence à BASIC en tant que "Code d'instruction simplifié polyvalent pour débutants" plutôt que "Symbolique". Notez également la forme plurielle possessive de "Débutants" plutôt que le singulier "Débutant".
Chez Kiewit, la quincaillerie était située dans une grande salle aux parois de verre ; un sergent de marine à la retraite nommé Henry Robert Schramm, qui avait servi à Okinawa, a été embauché comme premier opérateur de salle des machines pour le nouveau GE-635, avec ses 160K de mémoire de stockage principale ainsi que 768K de stockage de tambour.
Le compilateur BASIC n'occupait qu'environ 5 Ko du stockage principal. ("K" fait référence à un kilo-octet, qui correspond à 210 ou 1024 octets.)
"Avec un ordinateur à temps partagé, quand j'ai un problème à résoudre sur la machine, je peux m'asseoir devant une console de téléscripteur et avoir l'ordinateur à ma disposition jusqu'à ce que j'aie fini", écrit Kemeny, malgré les dizaines d'utilisateurs simultanés sur campus ainsi que des téléscripteurs dans des dizaines d'autres collèges et lycées exploitant le DTSS, y compris à Hanover High School (dont Kemeny a siégé au conseil scolaire) et à la Phillips Exeter Academy.
Dan Rockmore, alors lycéen puis professeur de mathématiques et d'informatique à Dartmouth (il deviendra finalement le John G. Kemeny Parents Professor of Mathematics, une chaire dotée créée en 1981), se souvient de sa première expérience avec BASIC :
" J'étais dans la classe de M. Bullman au lycée de Metuchen et je suis presque sûr que j'ai écrit un programme pour jouer au poker."
La compagnie de téléphone a dû installer de nouvelles lignes principales pour répondre à la demande du DTSS, malgré les lignes téléphoniques de Dartmouth utilisant le multiplexage par répartition en fréquence afin d'optimiser la connexion.
"En conséquence, chaque utilisateur de notre ordinateur a l'illusion que la machine est là juste pour lui servir et qu'il a le contrôle complet de l'ensemble du système", a expliqué Kemeny.
De plus, l'utilisation de l'ordinateur était entièrement gratuite. Kurtz a comparé le système d'accès libre à une "bibliothèque à pile ouverte", refusant de mettre en place des barrières à l'utilisation telles que des charges monétaires ou une autorisation écrite ; "L'informatique [comme la bibliothèque] était un coût fixe - elle coûtait la même chose qu'elle soit utilisée ou non - alors pourquoi ne pas laisser les étudiants l'utiliser? Kurtz a demandé rhétoriquement.
Dans une interview post-présidence, Kemeny a attribué la part du lion du mérite à Kurtz pour avoir convaincu les administrateurs de voir le centre informatique comme s'ils regardaient la bibliothèque : après tout, vous ne factureriez pas aux étudiants pour sortir des livres de la bibliothèque, a-t-il déclaré.
Kemeny a désigné la connexion ordinateur-bibliothèque comme la "plus grande contribution" de Kurtz. Par conséquent, le DTSS révolutionnaire a également inauguré la révolution de l'ordinateur personnel - ou, à tout le moins, a été un facteur clé qui y a conduit.
Et tout comme Dartmouth n'a pas tenté de tirer parti du DTSS pour un gain financier, le langage de programmation BASIC n'était pas protégé par le droit d'auteur, une marque déposée ou un brevet; de telles protections juridiques auraient pu empêcher la propagation et la mise en œuvre de BASIC sur les réseaux de partage de temps et ainsi être contre-productives pour la mission de Kemeny et Kurtz : celle de rendre l'informatique accessible à tous les étudiants.
Lorsque les gens ont demandé à Kemeny et Kurtz s'ils étaient autorisés à copier la langue, les professeurs de Dartmouth ont répondu : « Très bien ».
Quand IBM leur a demandé s'ils pouvaient réécrire le BASIC pour l'un de leurs systèmes de partage de temps, Kemeny et Kurtz ont de nouveau répondu: "Très bien. Tout ce que vous avez à faire est de nous donner le crédit au début de votre manuel."
Avant même que Microsoft ne commence à vendre des interpréteurs BASIC, Kurtz estime qu'environ cinq millions de personnes dans le monde étaient exposées à la programmation BASIC. Cela ne serait pas arrivé sans la sortie de BASIC dans le domaine public.
Bien sûr, une grande partie de cette première exposition s'est produite à Dartmouth. Des dizaines d'étudiants de Dartmouth ont pu travailler simultanément sur le DTSS.
Au début, Kemeny a encouragé son personnel à inclure une composante de programmation BASIC dans chaque classe de mathématiques. Le BASIC est alors devenu une partie obligatoire de tous les cours de mathématiques de première année. Kurtz a noté plus tard qu'il ne fallait qu'une heure environ pour enseigner aux étudiants de première année comment écrire des programmes simples en BASIC. De plus en plus de terminaux ont été ajoutés sur le campus.
En quelques années, la grande majorité des étudiants de premier cycle de Dartmouth (peut-être jusqu'à quatre-vingt-cinq pour cent, montant en flèche à plus de quatre-vingt-dix pour cent au début des années 1970), en mathématiques, en sciences, en sociologie et en sciences sociales, et même en cours d'art et de musique, utilisaient le DTSS ; près de la moitié du corps professoral a également utilisé le DTSS, bien que Kemeny ait rencontré des réticences :
lors d'un entretien post-présidence, il a déclaré que certains membres du corps professoral en mathématiques lui avaient dit qu'ils avaient "bien enseigné [leurs cours] pendant 25 ans et qu'ils voyaient aucune raison pour laquelle [ils] devraient y apporter des changements spectaculaires ...
Certains de mes meilleurs amis [parmi les professeurs] correspondent à cette description. Kemeny a ajouté que "sous-jacente à leur arrogance [ces membres du corps professoral] peut être la peur... Ils détestent admettre qu'ils ne savent pas utiliser un ordinateur". Pour convaincre ceux qui résistaient, Kemeny a suggéré de convertir un petit groupe de professeurs enthousiastes aux avantages de l'utilisation de l'ordinateur, puis de les "laisser] être les missionnaires".
Quoi qu'il en soit, Kemeny et Kurtz avaient vu leur vision devenir réalité : chaque étudiant sur le campus avait accès à un ordinateur et chaque membre du corps professoral avait accès à un ordinateur à des fins pédagogiques.
Dartmouth, un campus d'arts libéraux, était tombé sous le charme de l'informatique. En ce qui concerne ceux qui découvrent la programmation en BASIC, le premier manuel BASIC de Dartmouth offrait un conseil clé tiré du mathématicien Richard Hamming : la dactylographie ne remplace pas la réflexion.
Les étudiants de Dartmouth créaient également des jeux BASIC interactifs à jouer, non pas dans le cadre de leurs cours, mais uniquement pour le divertissement.
Kemeny a finalement soutenu l'utilisation de BASIC de manière récréative. L'un des jeux BASIC les plus populaires sur le campus a en fait été écrit par Kemeny : appelé Dartmouth Championship Football, il s'agissait d'un jeu vidéo basé sur du texte (tous les jeux étaient en texte uniquement à l'époque ; aucune commande graphique BASIC n'existait pour les téléscripteurs qui, indépendamment , imprimé à des vitesses lentes d'environ dix à quinze caractères par seconde) qui opposait Dartmouth à son rival Princeton, qui était contrôlé par l'ordinateur.
Il y a eu des plaqués, des touchés, des échappés, des interceptions et des buts sur le terrain, et les décisions d'un utilisateur ont affecté le résultat du match.
Plus que la simple instruction INPUT était nécessaire pour la simulation de football.
La fonction RND, seule parmi un ensemble de fonctions mathématiques intégrées étendues (d'autres comprenaient ABS, pour les valeurs absolues ; LOG, pour les logarithmes ; SQR, pour les racines carrées ; INT, pour la partie entière des nombres ; et un ensemble de fonctions trigonométriques fonctions prenant des mesures d'angle en radians), produisaient des nombres à virgule flottante "aléatoires" entre 0 et 1.
Les nombres n'étaient pas vraiment aléatoires - d'où les guillemets effrayants dans la phrase précédente - mais pseudo-aléatoires, générés selon une fonction mathématique déterministe. RND a pris un "argument factice", ce qui signifie que le caractère ou le nombre à l'intérieur des parenthèses de la fonction a été ignoré par le compilateur ; par exemple, RND(5) produirait toujours un nombre aléatoire entre 0 et 1, et non entre 0 et 4, 0 et 5 ou 1 et 5.
Jetez un œil à une poignée de lignes BASIC de Dartmouth Championship Football.
0 REM * FTBALL *
...
50 LET T=0
60 LET S(0)=0
70 LET S(2)=0
100 PRINT "TOSS OF COIN. (TYPE A NO. FROM 1 TO 300)";
120
INPUT Z1
140 FOR 1=1 TO Z1
160 LET X=RND(X)
180 NEXT I
190 IF
RND(Z)>1/2 THEN 195
191 PRINT "PRINCETON WON THE TOSS"
193 GOTO 2180
195 PRINT "DARTMOUTH WON THE TOSS"
La ligne 0 est une remarque, ou un commentaire, ignoré par le compilateur.
La ligne 50 initialise la valeur d'une nouvelle variable, T, à 0 (la ligne a un opcode, LET, et deux adresses, le T et le 0 ; la plupart des lignes BASIC suivent cette forme), tandis que les lignes 60 et 70 créent une variable tableau , appelé S, et initialiser deux des éléments de S à 0.
Une instruction PRINT génère des instructions utilisateur sur la ligne 100.
La ligne 120 rassemble les entrées de l'utilisateur, en particulier un entier de 1 à 300, et stocke ces entrées dans une variable appelée Z1. Il s'agit en fait d'une valeur de départ aléatoire générée par l'utilisateur, utilisée pour exécuter une boucle Z1 fois (voir les lignes 140 à 180) afin d'atterrir sur un nombre (espérons-le surprenant), entre 0 et 1, que la fonction RND renvoie.
La ligne 190 contient une instruction conditionnelle : si la valeur RND est supérieure à 1/2, alors Dartmouth remporte le tirage au sort ; sinon, Princeton gagne. Le jeu continue en nature à partir de là.
Kemeny et Kurtz ne se sont jamais fait un devoir d'enquêter sur ce que les étudiants faisaient au DTSS ; après tout, comme l'a écrit Kemeny, "[T]out étudiant peut entrer dans le centre de calcul Kiewit, s'asseoir à une console et utiliser le système de temps partagé.
Personne ne demandera s'il résout un problème de recherche sérieux, fait ses devoirs en toute simplicité, jouer au football ou écrire une lettre à sa petite amie." En effet, les étudiants de Dartmouth ont même écrit une application de rencontres BASIC, un ancêtre des applications de rencontres modernes.
La démocratisation de l'informatique, et pas seulement à Dartmouth, était en cours, grâce à l'effort à deux volets du temps partagé et de la mise en œuvre d'un langage de programmation accessible, BASIC, qui fonctionnait sur le système. Kemeny était si fier de sa création numérique qu'il a commandé une plaque d'immatriculation de vanité pour son cabriolet qui ne lisait qu'un seul mot : BASIC.