Loading AI tools
langage de programmation De Wikipédia, l'encyclopédie libre
PILOT (acronyme de Programmed Inquiry, Learning, Or Teaching (en français Recherche, Apprentissage, Enseignement Programmés) est un langage de programmation précurseur de l’apprentissage en ligne (E-learning) développé dans les années 1960[1].
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 |
PILOT est un langage de programmation impératif, similaire dans sa forme et sa structure aux langages Basic ou Fortran. Ses mots-clefs sont généralement abrégés sur un seul caractère pour les mots-clefs principaux, comme T
pour "TYPE" pour afficher du texte ou A
pour "ACCEPT", pour traiter des valeurs entrées par l'utilisateur.
PILOT a été développé par John Amsden Starkweather, un professeur en psychologie au centre médical de l'Université de Californie à San Francisco. En 1962 il développe un langage simple pour automatiser les tests d'enseignement appelé Computest.
À partir de 1968, il développe une suite à ce projet, nommée PILOT, pour différents ordinateurs de l'époque comme le SDS 940[2].
Une ligne de code en PILOT contient les éléments de syntaxe suivants, de gauche à droite :
Y
pour oui ("Yes"), ou N
pour non ("No"):
)Aucun élément n'est obligatoire, pas même la commande. On peut donc utiliser des lignes vides pour aérer le code.
*
), suivi d'un identifiant. (Exemples: *F
, *LOOP
, *CALC
)#
), suivi d'un identifiant. (Exemples: #X
, #Toto
, #X1Y2
)$
), suivi d'un identifiant. (Exemples: $A
, $NOM
, $P1L0T
)%
), suivi d'un identifiant. (Exemples: %ANSWER
, %MATCHED
, %LEFT
) Dans les premières implémentations, les variables systèmes ne sont que des variables numériques, les variables systèmes chaînes de caractères sont un ajout de la norme IEEE.Un identifiant est constitué d'une suite de lettres et de chiffres et commence obligatoirement par une lettre. Le langage n'étant pas sensible à la casse, #toto
, #ToTo
et #TOTO
désignent la même variable, tandis que #ANSWER
, $ANSWER
et %ANSWER
sont trois variables différentes.
Afin de distinguer la fin d'une étiquette du début de la commande, il faut séparer les deux avec au moins un espace. Pour améliorer la lisibilité, l'usage est de placer les étiquettes sur leurs propres lignes, sans commande.
Dans la norme IEEE, les principales commandes (core PILOT) peuvent toutes être abrégées à leur première lettre. Dans les premières implémentations, seules ces raccourcis d'une lettre sont reconnus par l'interpréteur. (Les lignes commençant par R:
sont des commentaires)
R:La prochaine ligne entrée au clavier remplace le contenu du tampon A: R:La prochaine ligne entrée remplace le tampon, et la variable chaîne de caractères 'FREE' A:$FREE R:Les 3 prochaines lignes entrées sont assignées aux variables 'X', 'Y' et 'Z' A:$X,$Y,$Z R:La prochaine entrée numérique est assignée à la variable numérique 'Q' A:#Q
Dans les versions IEEE, le tampon d'entrée est disponible dans la variable système %ANSWER.
R:Assigne la moyenne arithmétique de #X et #Y dans #AM C:#AM=(#X+#Y)/2 R:Crée une chaîne $DATE à partir des valeurs numériques #DAY et #YEAR et de la chaîne $MONTH C:$DATE=#DAY/$MONTH/#YEAR
Les opérateurs numériques reconnus sont les 4 opérations de base: +
addition, -
soustraction, *
multiplication et /
division entière.
La seule opération disponible sur les chaînes de caractères est la concaténation, qui peut être utilisée avec des variables ou des chaînes constantes. Il n'y a pas de délimiteurs pour les chaînes constantes, donc en dehors des noms de variables, tous les caractères entre le =
et la fin de la ligne sont considérés comme des chaînes constantes, y compris les caractères d'espacement avant la fin de la ligne.
Aucune notion de fonction n'existe, ni fonction prédéfinie, ni fonction utilisateur.
R:Calcule la moyenne de 2 valeurs. R:Entrées: #X et #Y contiennent les 2 valeurs. R:Sortie: #MOY contient la moyenne calculée. *MOYENNE C:#MOY=(#X+#Y)/2 E:
J:*RESTART
R:Cherche dans le tampon le mot "VRAI", la valeur de MEXICO, ou le mot "JEUNE", dans cet ordre M:VRAI,$MEXICO,JEUNE
La première chaîne trouvée (s'il y en a une) est assignée à la variable système %MATCH ($MATCH sur les premières implémentations). Les caractères à gauche de cette chaîne dans le tampon sont assignés à la variable %LEFT, et les caractères à droite à la variable %RIGHT. ($LEFT et $RIGHT sur les premières implémentations.) Ce découpage de la chaîne de caractère en trois est la seule opération de recherche de sous-chaînes sur les chaînes de caractères, et elle n'est disponible que sur le tampon d'entrée.
Le drapeau de comparaison est positionné à 'oui' ou 'non', selon le résultat de la recherche. Toute instruction qui a un Y
après la lettre de commande ne sera exécutée que si le drapeau est sur 'oui', autrement dit, si la dernière recherche a trouvé une des chaînes. Les instructions avec N
ne sont exécutés que si le drapeau est sur 'non'. Pour les implémentations IEEE, le drapeau de comparaison est disponible dans la variable système %MATCHED, qui vaut 1 pour 'oui' et 0 pour 'non'.
R:Exemple de programme d'apprentissage. T:Quelle est la capitale de la France? A: M:paris Y:Gagné! N:Perdu!
R:Cette commande ne fait rien, à part commenter le code qui l'entoure...
R:La prochaine ligne affiche une chaîne littérale T:Merci pour votre aide. R:La prochaine ligne combine une chaîne littérale avec une chaîne variable et une variable numérique T:Bravo, $NOM, votre score est de #SCORE.
R:Appelle le sous-programme *MOYENNE U:*MOYENNE
R:Exemple de programme d'apprentissage. T:Quelle est la capitale de la France? A: M:paris Y:Gagné! N:Perdu!
Ce jeu de commandes étant très limité, la plupart des implémentations fournissent des commandes supplémentaires, souvent abrégées sur deux lettre au lieu d'une.
S'il y a une expression entre parenthèses dans une instruction, c'est une expression conditionnelle, et l'instruction n'est exécutée que si le test est vérifié. Par exemple:
R:Affiche un message en fonction de #score T(#SCORE>=10):Bravo! Vous avez #SCORE/20, c'est très bien! T(#SCORE<10) :Vous avez obtenu #SCORE/20. Encore un effort, vous pouvez faire mieux!
Les extensions au langage de base comprennent les tableaus et les nombres à virgule flottante (Apple PILOT) et une tortue graphique inspirée du langage Logo (Atari PILOT)[4],[5].
Entre 1979 et 1983 le Groupe d'Utilisateurs de PILOT du Royaume-Uni est dirigé par Alec Wood, un enseignant de la Wirral Grammar School for Boys. Plusieurs versions d'un mini PILOT en code machine sont produites pour les micro-ordinateurs de l'époque et une école en Écosse développe un tutoriel interactif en langue étrangère dans lequel les élèves se promenaient dans une ville en posant et en répondant à des questions en allemand, en français, etc. Un article paru dans le numéro de de "Computer Age" traite d'une première implémentation appelée Tiny Pilot et donne un listing complet des codes machine.
Des versions de PILOT implémentées sur les interpréteurs Basic des premiers micro-ordinateurs sont courantes vers la fin des années 1970s et le début des années 1980 et une variante de PILOT non-Turing-complète est publiée dans le magazine Byte sous le nom Waduzitdo par Larry Kheriarty comme une démonstration de ce dont un ordinateur est capable[6],[7].
En 1983, Vanilla PILOT pour le Commodore 64 ajoute la tortue graphique[8], de même que Super Turtle PILOT qui est publié sous forme de listing dans le numéro d' du magazine Compute![9].
En 1990, Tom Nielsen, EdD, développe eSTeam PILOT pour Atari ST. Basé sur la préversion (draft) de la norme IEEE, il inclut des fonctionnalités spécifiques Atari telles que le contrôle de périphériques Laserdisc et CDROM[10].
En 1991, l'Institute of Electrical and Electronics Engineers (IEEE) publie une norme pour PILOT: IEEE Std 1154-1991. Il a été abandonné en 2000[11]. Une implémentation de référence basée sur cette norme est implémentée par Eric Raymond, et maintenue pendant les 20 années suivantes[12].
En 2018, une implémentation amateure, psPILOT, basée en partie sur la norme IEEE, est codée en utilisant le langage de script PowerShell de Microsoft[13].