Logo (langage)

Logo (langage)
Logo
Remi turtlegrafik.png

Apparu en 1967
Auteur Wally Feurzeig, Seymour Papert
Développeurs Wally Feurzeig, Seymour Papert
Paradigme Programmation procédurale, Réflexion, Programmation orientée objet
Typage Statique
Dialectes Starlogo
Influencé par Lisp
A influencé Smalltalk, Etoys, Scratch, NetLogo, KTurtle, REBOL
Implémentations UCBLogo, autres...
Système d'exploitation Windows, Linux
Page d'aide sur l'homonymie Pour les articles homonymes, voir Logo (homonymie).

Logo est le nom donné à la fois à une philosophie de l’éducation et à une famille de langages de programmation en constante évolution qui aident à la mettre en pratique[1].

Le projet est né à la fin des années soixante de la rencontre entre le courant cognitiviste en intelligence artificielle et des théories sur l’apprentissage issues de travaux de Jean Piaget et de ses conceptions en matière d’éducation. Ces deux volets sont respectivement représentés par ses promoteurs, Marvin Minsky et Seymour Papert — qui sera le moteur du projet —, au sein du Computer Science and Artificial Intelligence Laboratory (Laboratoire d'intelligence artificielle et d'informatique) du MIT.

L‘appellation, inspirée du grec Logos « parole, discours, intelligence », recouvre, donc, deux concepts étroitement liés quoique distincts : un mode d’apprentissage inspiré des travaux de Jean Piaget sur le développement cognitif de l’enfant et un type d’environnement informatique, à partir d'un langage adapté du LISP spécialement conçu dans une démarche de pédagogie active inspirée des travaux de celui-ci. Il s'inscrit en réaction à une introduction de l'ordinateur dans l'éducation inspirée de l'enseignement programmé.

Sur le plan informatique, Logo est un langage de programmation orientée objet réflexif. Plus lisible que le Lisp, il en est une adaptation, ce qui lui a valu le surnom de « Lisp sans parenthèses ». Essentiellement connu pour la fameuse tortue graphique, mais est également capable de manipuler des listes, des fichiers et des entrées/sorties,... ce qui en fait un langage adapté à l'approche des concepts de l'algorithmique, ce dont on pourra trouver un exemple dans les ouvrages Computer Science Logo Style de Brian Harvey, professeur à l'Université de Berkeley.

Bien que langage complet de haut niveau, Logo a été paradoxalement victime de sa tortue - pourtant présente en Pascal - qui l'a cantonnée à une image faussement puérile, ses fonctionnalités de base étaient supérieures aux divers BASIC des années 1980. Il était, à l'époque, un bon marchepied vers la programmation structurée et modulaire et connaît encore toujours des développements dans le cadre de recherches en intelligence artificielle.

Exemple d'écran de MSWLogo

Sommaire

Philosophie du projet

Logo propose une approche de l’utilisation de l’informatique délibérément constructiviste. C’est l’apprenant, enfant ou adulte expérimenté, qui est le principal acteur de son apprentissage, et l’ordinateur n’est présent que pour lui permettre de construire des réalités dans des environnements divers : les Micromondes, à l’aide d’un langage informatique spécialement conçu à cet effet (la géométrie Tortue en est un exemple).

Il n’est nullement question ici de simulation informatique. « C’est en créant qu’on apprend », telle est la thèse piagétienne que Papert défendra dans la poursuite du projet Logo.

L’objectif va, en effet, au-delà de l’acquisition de concepts qui seraient présents à ces micromondes.

Piaget distingue quatre stades dans le développement individuel dont les apprentissages sont acquis par l’interaction entre l’enfant et son environnement. Il note, toutefois, que, faute de trouver un environnement adéquat – qui n’existe pas - , celui-ci n’atteint pas toujours le dernier stade, celui des opérations formelles. Il émet d’ailleurs cette constatation que nombre d’adultes n'y sont, en réalité, jamais arrivés.

Article connexe : Jean Piaget.

Et c’est ici que l’ordinateur entre en jeu. Papert y voit l’opportunité de créer des environnements propices au développement de ces facultés logiques, à condition qu’il soit correctement adapté à cette fin. Ce sera le cas grâce au langage informatique Logo proprement dit.

L’environnement Logo se veut, donc, imprégné de la pensée de Piaget : il offre à l’apprenant - quel que soit son niveau ou son âge - la possibilité de se représenter et de décrire les phénomènes ainsi que le déroulement de sa démarche entreprise : saisie des moyens utilisés, justification de leur choix et/ou ajustements en cours de tâche. L’objectif poursuivi est d’amener, in fine, l’apprenant à dégager lui-même les caractéristiques de ses actions et de ses propres processus cognitifs. En un mot, qu’il apprenne comment il apprend.

Dans son ouvrage[2], Papert va même plus loin : l’environnement de Logo pourrait amener l’enfant à adopter de lui-même un mode de pensée procédural, mode de pensée qu’il décrit comment étant plus efficace que tout autre.

Encore faut-il une porte d’entrée qui soit à la portée de cet enfant. Ce sera le rôle de la tortue graphique, un robot dont l’enfant pourra commander les déplacements en s’appuyant sur la connaissance de la manière dont lui-même se déplace. Paradoxalement, le langage été victime de cette tortue qui l'a cantonnée à une image puérile ainsi également d'un succès commercial qui a fait se multiplier des versions incomplètes, non conformes aux exigences fonctionnelles sur lesquelles insiste pourtant son propre concepteur, et parfois limitées à cette tortue graphique. Or, celle-ci n'est pas l'apanage de Logo : elle existe également dans Pascal 7.0.

Dans le développement du projet, l’intelligence artificielle contribuera à différents titres comme celui d’offrir un milieu propice à la recherche fondamentale, avec le Lisp un substrat au développement du langage informatique proprement dit, un premier robot d’expérimentation : la tortue de sol, le développement de la géométrie tortue, … sans oublier l’infrastructure informatique, une ressource rare et chère à l’époque.

Histoire

Un projet tel que celui porté par Logo relève d’un long processus au cours duquel, tant sous l’influence de l’évolution de la pensée de ses concepteurs – Papert en premier – que des rapides progrès dans le domaine du matériel informatique. Bien que projet et langage informatique vont évaluer de pair, il y a néanmoins parfois lieu d’effectuer une distinction dans l’évocation de leur histoire respective.

La période d’incubation : (1966 à 1980) : une tortue à petits pas

En tant que langage informatique proprement dit, Logo a été créé chez Bolt Beranek et Newman (BBN). Le concept initial émergea d’intenses discussions en 1966 entre Seymour Papert, Dan Bobrow et Wallace Feurzeig. Papert conçut les spécificités fonctionnelles essentielles du nouveau langage et Bobrow contribua à son concept et en réalisa sa première implémentation. Par la suite, contribuèrent également à son développement Richard Grant, Cynthia Solomon, Frank Frazier et Paul Wexelblat (Feurzeig).

Il succédait à une première tentative de créer un langage de programmation conçu pour les enfants, TELCOMP, basé sur le FORTRAN. A ce stade, le projet restait très orienté vers l’apprentissage des mathématiques et une familiarisation avec l’algorithmique, tout en insistant pour qu'il soit accessible aux jeunes élèves sans grande préparation. La première version de LOGO fut, d'ailleurs, une version pilote testée en 1967 avec des étudiants en mathématique de grades 5 et 6 à l’école Hanscom Field School de Lincoln, Massachusetts, sous la responsabilité de l’U.S. Office of Naval Research.

À l'issue des quatre années de recherche nécessaires aux chercheurs du BBN, il a reçu de nombreuses interfaces de simulation différentes, dont la tortue graphique, qui apparut cependant relativement tard par rapport à la première version du Logo.

Les premiers utilisateurs en milieu scolaire, eux, l'ont testée à Muzzy Jr High, Lexington, Massachusetts. La première version est sortie, sur un PDP-1, en Lisp. Il était alors appelé Ghost, et était destiné à la résolution de problèmes de base : les bugs pouvaient être mis en valeur immédiatement grâce à la tortue. Le langage n'était pas particulièrement puissant, et la conception avait plutôt été axée sur la simplicité d'utilisation pour des débutants en informatique (qui devaient alors utiliser un Teletype). La possibilité de fournir un commentaire détaillé des erreurs était également déterminante.

En 1970, Seymour Papert fonda le laboratoire LOGO au M.I.T. L’année suivante vit apparaître les premières expérimentations avec les tortues LOGO (de sol ou d'écran), considérées à tort par beaucoup pour être essentielles au projet LOGO alors qu’elles n’en représentent qu’un sous-ensemble. Plusieurs implémentations sur différents matériels et des expériences pédagogiques suivirent au cours de la décade des années 1970 au M.I.T. mais aussi ailleurs comme à l’Université d’Edimbourgh Jim Howel) ou à celle de Tasmanie, en Australie (c’est, d’ailleurs, par cette dernière que se diffusa la première tortue graphique sur Apple II sous le nom de Tasmania Logo).

Cette phase de réflexion et d'expérimentation est marquée par des recherches ponctuelles au sein d’écoles voisines (dont la Brookline Public Schools) et donnèrent lieu à des publications à diffusion restreinte (« papers »), les Logo Memos, relatant les enseignements tirés de ces expériences.

Des vidéos de cette période sont visibles sur le site de Cynthia Solomon

Apogée et désillusion (1980 à 1990) : du lièvre à la tortue

LOGO va quitter le laboratoire et connaître sa période faste au début des années 1980. Deux facteurs vont contribuer à cette engouement :

  • l’arrivée des micro-ordinateurs qui vont à la fois rendre les ressources informatiques plus accessibles et, en les individualisant, donner l’impression à ses utilisateurs de pouvoir s’approprier une informatique jusque là aux mains de spécialistes officiant dans des grandes salles interdites et climatisées. De par son approche de l’informatique, LOGO va pouvoir s’inscrire dans ce mouvement ;
  • la sortie de l’ouvrage de Papert en 1980 qui va séduire dans un premier temps le monde de l’éducation en lui offrant une alternative à l’enseignement programmé en informatique distribuée qui inquiète les enseignants qui y voient à la fois une concurrence technologique et une perte de liberté dans le choix des méthodes pédagogiques.

L’horizon de la tortue s’élargit, en effet, avec l’apparition des micro-ordinateurs. Fin des années 1970, le MIT Logo Group s’attelle à développer des versions de Logo pour le Texas Instruments TI-99/4A (vidéos le site de Cynthia Solomon) et Apple II, tous deux sortis en 1977. Si la base du langage est commune, les interfaces graphiques sont différentes eu égard aux spécificités des deux machines : du fait de son interface de type « jeux vidéo », la version pour le TI 99/4A privilégie les projets orientés vers le mouvement (les dyna-turtles ou lutins), tandis que celle pour l’Apple II donne la préférence au graphique tortue bien connu et à la manipulation de mots et de listes - bien moins connue.

En 1980 est lancé un projet pilote à la Lamplighter School de Dallas où 50 TI 99/4A sont mis à la disposition des 450 élèves. Dans la foulée est lancé un autre projet à New York avec 12 TI 99/4A auxquels s’ajouteront un peu plus tard quelques Apple II. De ces deux projets naîtront des produits commercialisés par la société Terrapin Softwares (qui commercialise également des tortues de sols depuis 1977) : le TILOGO sur le TI 99/4A et le Terrapin Logo, devenu par la suite Logo PLUS, sur Apple II.

En 1980, une nouvelle entreprise est formée, la Logo Computer System Inc. (LCSI) qui va regrouper sous l’égide et la présidence de Papert nombre de chercheurs, enseignants, développeurs et autres programmeurs embarqués dans l’aventure qu’a été le développement du projet. Dans les années qui suivent, LCSI implémentera sur la plupart des nouveaux micro-ordinateurs le langage avec ses caractéristiques fonctionnelles réclamées par son initiateur. Ainsi naquirent APPLE LOGO, Commodore LOGO, Atari LOGO, ensuite IBM LOGO, et enfin, Mac LOGO, tous construits sur les mêmes fondements, mais enrichis en fonction de l’évolution technique des matériels. Des versions pour une douzaine de langues furent développées, chose en soi très facile puisque l’architecture permettait de redéfinir aisément les primitives du langage (de même qu’il est toujours possible de « doubler » une primitive par une procédure construite avec celle-ci). En réalité, la vraie difficulté dans les traductions a résidé dans le choix des termes qui doivent être tirés du langage naturel et ne revêtir aucune ambiguïté. C’est ainsi, par exemple que Papert, après avoir longtemps hésité, donna sa préférence à la traduction canadienne DROITE ou GAUCHE plutôt qu’aux TOURNEDROITE ou TOURNEGAUCHE devenus usuels par la suite sous l’influence française. Petit détail amusant, c’est pourtant au Centre mondial informatique et ressource humaine que Papert, qui en était devenu le directeur scientifique, mettra la dernière main à la version française du Apple Logo.

Le plus digne successeur de cette série est certainement le UCBLogo développé par Brian Harvey qui ne cessera d’enrichir le langage informatique dans le strict respect du métalangage, tout en indiquant explicitement comment changer ou traduire les primitives et les messages.

D’une manière ou une autre, les nombreuses versions de Logo s’inspireront avec plus ou moins de rigueur des versions LCSI, y compris un Logo de qualité discutable pour les ordinateurs MSX qui domineront de plus en plus le marché de l’éducation, sauf aux États-Unis où Apple reste le favori. Une domination renforcée par l’échec du lancement du PC Junior d’IBM qui pouvait supporter un Logo de qualité et le choix politique en France de privilégier Thomson MO5 dans le Plan informatique pour tous. Les développeurs se tourneront alors vers ce matériel en ajoutant, par exemple, les tortues dynamiques développées sur le TI 99/4A, le tout fonctionnant avec des cartouches à insérer.

A la même période, va se manifester un certain intérêt pour utiliser Logo en tant que langage de programmation proprement dit comme ce sera le cas avec le MacLogo de LCSI et Object Logo de Coral Software, une autre version pour le MacIntosh qui comprenait notamment un compilateur et même un débuggeur. Mais Logo ne parvint jamais à intéresser les programmeurs professionnels, sans doute à cause de l'étiquette « pour enfant » qui lui collait à la peau.

En 1985, LCSI lance Logowriter qui, outre une interface simplifiée et plus intuitive, comprend un traitement de texte et réintroduit les « lutins » (sprite), des tortues qui peuvent prendre des formes et des couleurs différentes.

Parallèlement, Resnick et Steve Ocko vont développer LEGO Logo une interface entre Logo et des moteurs, lumières et autres détecteurs utilisables dans des montages avec les fameuses briques Lego. Cette idée d’utiliser des robots n’était pas neuve mais recueillit néanmoins un succès commercial.

Alors que LCSI marque le pas avec Logowriter, Terrapin Softwares et Harvard Associates, les premiers pour Macintosh, les seconds pour DOS et ensuite Windows, vont continuer à développer des versions qui, bien que bénéficiant des progrès du matériel, se cantonneront à la géométrie Tortue et à la manipulation de mots et de listes.

Par contre, même si les initiatives d'introduction de Logo se multiplient durant cette décennie, il faut bien reconnaître que le volet « projet d'apprentissage » du projet marque le pas dans un monde de l'éducation qui se révélera très vite frileux (cf supra).

Les expériences s'arrêtent souvent à une ou deux semaines, c'est-à-dire le temps de découvrir et de s'amuser avec la tortue graphique comme telle que celle menée par l'INRP en France[3], sauf dans des ateliers privés ou des écoles privilégiées par un projet pédagogique qui favorise une approche active de la part de l'apprenant.

Ce n'est d'ailleurs pas un hasard si Logo reçoit un accueil privilégié en Argentine où l'éducation est fortement imprégnée de la pensée piagétienne.

Après 1990, de Logo au constructionnisme ; les métamorphoses de la tortue

Au début des années 1990, Logo est considéré comme un produit vieillot et obsolète en Amérique du Nord. Logowriter n’a plus guère évolué depuis sa sortie. Quant au Logo classique, il n’a pas intégré les apports de la rapide évolution des ressources informatiques. En l’Europe, l’engouement des premiers temps a fait long feu après l’échec des plans informatique visant à introduire les nouvelles technologies de l’information dans l’enseignement. A l’exception de la Grande-Bretagne qui l’utilise comme un outil pédagogique sans rapport avec le projet d’apprentissage sous-jacent, son usage est devenu anecdotique dès le milieu de la décennies des 80 dans un contexte pédagogique largement défavorable à sa philosophie.

Ce n’est pas nécessairement le cas partout. Par exemple, un ambitieux programme est lancé au Costa Rica[1] par une « ancienne du MIT», Clotilde Fonseca, qui va faire école dans une douzaine de pays d’Amérique Latine. Au Japon, Logowriter va également faire son chemin au début des années 1990.

Un regain d’intérêt se manifestera vers le milieu de la décennie où l’on verra s’effacer Logo, tel qu’il était défini au début des années 1980, au profit du développement de nouveaux produits et d’un nouveau concept : le constructionisme.

En fait, si le nom de Logo va peu à peu disparaître, les idées qui en formaient le substrat, subsistent dans les grandes lignes. Même si elles intègrent de nouvelles fonctionnalités, les conceptions à la base du langage informatique restent les mêmes : un langage « naturel » avec des mots « de tous les jours », que l’on peut combiner et enrichir de nouveaux mots ;

Par contre, le projet éducatif, lui, s’est affiné. D’abord plutôt vague sur son option pédagogique dans sa description du « facilitateur » en milieu Logo, Papert opte résolument pour une pédagogie active, en insistant sur l’importance de la créer des choses - « making things - lorsqu’on apprend ainsi que sur celle de la verbalisation dans la construction de nouvelles connaissances.

Plus tard, Resnick, le concepteur des nouveaux micromondes, va encore compléter le concept en y ajoutant une dimension de travail de groupe[2].

Sur le plan informatique, MicroWorlds Logo va ajouter dès 1993 de nouvelles fonctions à l’environnement Logo en se basant sur l’interface MacIntosh : de nouveaux outils de dessins, un éditeur de formes, un générateur de musique et la possibilité d’importer des images ou des sons. De même, il prend en charge les tâches multiples de sorte que des objets peuvent être animés ou créer de manière indépendantes : la tortue n’est plus toute seule.

Au MIT, une brique programmable apparaît dans le cadre de Lego Logo qui rend inutile une liaison avec un ordinateur.

Par ailleurs, Brian Harvey va continuer à enrichir le langage de base sur le plan purement informatique :UCBLogo , dans sa version distribuée librement, comprend 344 primitives.

A l’autre extrémité, dans le domaine de la recherche, avec, Mitchel Resnick va développer avec Starlogo des environnements où des milliers de « tortues » peuvent interagir.

Plus récemment, le même Resnick proposera avec Scratch un nouveau projet de type Logo intégrant une implémentation visuelle et dynamique du langage de programmation Smalltalk basé sur Squeak. Squeak est l'héritier du Logo dans l'approche qu'il propose de l'interaction informatique-éducation. Il s'inscrit dans les cadres théoriques de la psychologie du développement et des idées de gens comme Baldwin, Piaget ou Vygotski.

Implémentations

Exemple de spirale récusive en MSWLogo

Il existe plus de 130 implémentations du Logo, aux caractéristiques variées.

Article détaillé : UCBLogo.

UCBLogo est l'implémentation la plus populaire, un logiciel libre réalisé par Brian Harvey de l'université de Californie à Berkeley. Il existe plusieurs implémentations de UCBLogo, parmi lesquelles MSWLogo, une version pour MS Windows très utilisée dans les écoles britanniques.

Autres implémentations libres

  • ELICA[4], une mise en œuvre orientée objet réalisée par Pavel Boytchev.
  • StarLogo[5], une implémentation du MIT par un dialecte de mise en concurrence utilisé pour la modélisation de systèmes décentralisés. Il s'agit d'une évolution du langage permettant de faire évoluer des agents en parallèle représentés par des milliers de tortues de mer. Outre StarLogo, il en existe deux autres avec NetLogo[6] et Logoplus Multi-Gfx[7]. Toutes ces versions permettent d'expérimenter des théories concernant les phénomènes émergents, ce qui est particulièrement intéressant en sciences sociales, en biologie, en physique, ainsi que dans de nombreuses autres sciences. Même si ces langages se concentrent sur l'interaction d'un grand nombre d'agents indépendants, il parviennent à conserver la philosophie du Logo.
  • Scratch[8], un environnement expérimental de programmation réalisé par glisser-déposer de tortues.
  • Sous KDE il existe KTurtle.
  • LIOGO[9].
  • Logo3d[10], une implémentation à l'origine développé au MIT par Seymour Papert puis maintenue sur la plateforme SourceForge.net.

Implémentations propriétaires

  • Imagine[11] de l'université Comenius, une mise en œuvre orientée objet une collaboration d'agents en parallèle sur internet.
  • Comenius Logo, une autre mise en œuvre disponible en hollandais, allemand, tchèque, etc.
  • Apple Logo, Atari Logo, IBM Logo, NSX Logo et plusieurs autres versions ont été produites par "Logo Computer Systems Inc.", soit une douzaine de plateformes et environ 18 langues parlées: grec, hébreux, arabe, italien, espagnol, etc. Logo Computer Systems Inc. est une société fondée par Seymour Papert afin de poursuivre ses développements Logo avec une version du langage de programmation basée sur un environnement entièrement graphique.
  • LogoWriter aussi été produit par Logo Computer Systems Inc. pour les plateformes Apple, IBM et NSX.
  • MicroWorlds (en)[12] de la société Logo Computer Systems Inc.
  • Terrapin Logo[13].
  • Logo S.O.L.I. était une version française de Logo produite par Logo Computer Systems Inc. (S.O.L.I. signifie Systèmes d'Ordinateur Logo Inc.) largement utilisée dans les écoles primaires dans les années 1980 par le biais des MO5 et des TO7/70[réf. nécessaire].
  • Lego/Logo était un système de contrôle de moteurs et capteurs Lego, beaucoup utilisée dans les écoles dans les années 1990[réf. nécessaire].

D'autres implémentations ont ou ont eu une importance qui mérite d'être signalée : le P_Logo, des éditions Profil ; le jLogo[14] et le XLogo, basées sur des interpréteurs écrit en Java.

Il n'existe aucune norme de Logo, mais uniquement une tradition. Ainsi, on constate des différences importantes entre les différentes évolutions du Logo. Les exemples de code donnés ci-dessous sont censés fonctionner dans la plupart des dialectes du Logo.

Logo, langage informatique

Aperçu du Métalangage

LOGO fait partie de la famille des langages de programmation orientée objet. Ses règles de syntaxe sont réduites au minimum et le vocabulaire se rapproche le plus possible du langage "naturel", des mots de tous les jours. C'est évident pour les commandes de la tortue graphique, mais également pour le traitement de mots ou de listes. Par exemple, il comprend des termes comme SAUFPREMIER, PREMIER,... aujourd'hui largement utilisés dans bases de données.

A l'origine n'existe que 2 types d'objets : les MOTS et les LISTES.

Les MOTS sont des chaînes de caractères. Formellement, les nombres ne sont que des mots particuliers reconnus et évalués automatiquement par leur valeur. Les LISTES sont des suites ordonnées d'objets.

Un mot est signalé par un guillemet, une liste par des crochets. Si un mot n'est pas précédé d'un guillemet, il est interprété comme une procédure (voir ci-dessous).

Ces objets peuvent servir d'entrées - d'ARGUMENTS - à des OPÉRATIONS ou des COMMANDES.

Une OPÉRATION sert à créer un nouvel objet à partir des objets entrant (formellement des ARGUMENTS), qu'elle retourne à une autre opération ou à une COMMANDE. Une COMMANDE dit ce qu'il (l'ordinateur ou le robot) doit faire de cet objet.

Une ligne de programmation est et ne peut être que formulée qu'en termes d'INSTRUCTION. Une instruction se compose impérativement d'une - et d'une seule - COMMANDE, suivie d'un objet ou d'une ou de plusieurs OPÉRATIONS qui retournent l'objet qu'elles créent à l'éventuelle opération qui la précède, ou à la commande.

C'est pourquoi taper simplement 5 + 5 (ou, plus formellement, SOMME 5 5) entraîne un message d'erreur du type "Ne sait que faire avec 10", puisque que l'instruction est incomplète du fait de l'absence de commande. De même ECRIS tout seul fera apparaître une message "Pas assez d'entrée pour..." puisque, cette fois-ci l'instruction est incomplète du fait de l'absence d'objet.

Par contre, dans l'instruction ECRIS 5 + 5 affiche 10, l'opération d'addition sur des mots directement évalués comme des nombres retournant son résultat à la commande d'affichage, De même, dans le micromonde "Tortue", AVANCE 5 + 5, fera se mouvoir le robot tortue de 10 pas. Par contre, ECRIS [5 + 5] produira un affichage du texte 5 + 5 puisque il s'agit d'afficher le contenu d'une liste signalée par les [...].

Un groupe d'instructions peut toutefois être écrit sur une même ligne. Sera, donc, licite :

AVANCE SOMME [5 5] DROITE 360/10

La seule exception à la règle de commande unique réside dans l'emploi de la primitive REPETE qui accepte comme entrée une liste d'instructions.

REPETE 360 [AV 1 TD 1] (formule du cercle en géométrie LOGO).

Soit une instruction qui commande de répéter 360 fois, deux instructions

Les mots prédéfinis dans le langage sont appelés PRIMITIVES du langage.

Ce langage de base peut s'enrichir de PROCÉDURES créées par l'utilisateur. Une fois définie, ces procédures font faire partie intégrante du langage et obéissent aux mêmes règles d'écriture. Leurs définitions sont écrites et corrigée dans l'éditeur ED ou, dans certaines versions, définies directement à l'aide de la commande "POUR", suivie du nom de la procédure (ce qui facilite le passage de la commande directe vers la programmation)

Une procédure comprend trois partie : son nom, les commandes et opérations que son activation déclenchera et le mot FIN. Elle peut être définie comme nécessitant une ou plusieurs entrées qui, sont, en réalité des variables pouvant stocker localement des objets. Dans ce cas, leur utilisation exigera impérativement l'introduction d'objets. Taper un mot qui n'est pas une procédure ou une primitive sera signalé comme une erreur "ne sait comment..."

LOGO se présente comme un langage évolutif : les "primitives" ne sont, en réalité que des procédures build in.

Dès lors, en toute logique, une procédure doit pouvoir comprendre des procédures, y compris elle-même', ce qui confère à LOGO la puissance d'un langage récursif.

POUR RECURSION

RECURSION

FIN

est donc licite et crée une boucle sans fin.

Toujours aussi logiquement, une procédure peut être une opération en utilisation la primitive RETOURNE. Ainsi si on définit la procédure suivante :

POUR MULTIPLICATION :X :Y

RETOURNE PRODUIT [:X :Y]

FIN

ECRIS MULTIPLICATION 5 6 affichera 30

Force est de reconnaître qu'en réalité, peu de versions de Logo intègrent ces aspects.

L'interprétation se fait de la gauche vers la droite. Par exemple,

ECRIS SOMME 7 PRODUIT 5 2

17

est interprété par Logo de la manière suivante :

  1. La commande ECRIS nécessite une entrée
  2. Le mot rencontré est une opération nécessitant deux entrées
  3. la première entrée est un nombre, soit un mot directement évalué par sa valeur ; pas de problème
  4. le seconde entrée est une opération qui nécessite également deux entrées
  5. ces deux entrées sont bien présentes et sont reconnus comme des nombres
  6. l'instruction est donc complète et, dès lors, exécutée.

Les variables ne doivent pas être déclarées au préalable. Elles ne nécessitent aucune notation particulière et peuvent être nommée par n'importe quel mot, même par le nom d’une procédure existante, et il est d’ailleurs chaudement recommandé de choisir des termes explicites. Leur contenu étant un objet, il peut être un MOT ou une LISTE.

Par défaut, les variables sont globales. Dans des versions complètes, elles peuvent éventuellement être déclarées comme locales. Lorsqu’elles servent d’arguments à une procédures, elles sont toujours locales et leur contenu ne conserve leur valeur que durant l’exécution de la procédure. Il est néanmoins possible de créer des vériables globales à l’intérieur d’une procédure.

Exemple :

DONNE "Nomdelavariable 4

ECRIS SOMME 7 PRODUIT 5 CHOSE "Nomdelavariable

27

En notation simplifiée et plus courante, on peu également écrire :

ECRIS SOMME 7 PRODUIT 5 :Nomdelavariable

27

De même, Logo comprend également des notations mathématiques préfixes ou infixes.

Exemple :

  • EC SOMME 10 3 ⇒ préfixe : l'opérateur est devant.
  • EC 10 + 3 ⇒ infixe  : l'opérateur est entre les nombres.

Formellement, seule le forme préfixe répond aux exigences de syntaxe comme quoi les objets suivent une opération à laquelle ils servent d'arguments. Tout comme l'interprétation directe d'un nombre, la forme infixe n'existe que parce que cette notation est familière.

Enfin, par défaut, Logo sauvegarde dans un seul fichier tout l'espace de travail et le restaure en une seule instruction.

Interface graphique : la tortue

Le terme "Tortue" relève d'une tradition née vers 1950 avec les premiers robots construits par le neurophysiologiste William Grey Walter, pionnier de la cybernétique avec ce qu'il appellera ses "tortoises".

Description

A l'origine un robot de sol, la "tortue" est un robot sur l'écran, prêt à explorer son espace. Dans ce cas, le plus connu, elle se présente la plupart du temps sous la forme d’un triangle orienté dans la direction qu’elle va prendre. Elle traîne à l’arrière – et non derrière elle, la nuance est d’importance d’un point de vue pédagogique – un crayon qui lui permet de laisser des traces de son passage. Ce crayon peut être levé (LC) ou remplacé par une gomme. Avec l’évolution du matériel informatique, il pourra également prendre des couleurs différentes.

Au départ, ce robot occupe une position et une orientation précises. Au départ, ce seront le milieu (position 0,0) et le haut de l’écran, c’est-à-dire vers le « Nord », au cap de 0°.

On travaille, donc, en coordonnées polaires et non pas en coordonnées cartésienne, même si le langage comprend la possibilité d’utiliser ces dernières. La Tortue se déplace comme un navire, c’est-à-dire en prenant une direction relative et en parcourant une distance à partir d’un point et d’une orientation de départ.

Mieux, elle se déplace, en réalité sur un tore, ce qui explique qu’en position normale, elle « ENROULE », c’est-à-dire que si elle disparaît par un côté de l’écran, elle réapparait à son opposé.

Le concept de la « géométrie Tortue » est issu des travaux du Logo Group du MIT et permet à l’apprenant d’explorer un univers géométrique en s’identifiant à la tortue. Ce que Papert appellera la « syntonie avec le corps »[15].

Au départ, l’utilisateur lui donne des ordres simples, « militaires » : AVANCE, RECULE, DROITE, GAUCHE pour la faire se déplacer. Elle se déplace pas à pas et s’oriente par degré ; à chaque 360°, elle fait, donc, un tour complet sur elle-même (théorème du tour complet de la tortue). Du fait de son crayon, elle laisse une trace de son passage sur l’écran (sauf, bien sûr, si on lui a donné l’ordre de la lever).

Par la suite, ces ordres pourront être rassemblés dans des PROCÉDURES qui enrichiront le langage informatique et pourront, par conséquent, elles-mêmes être appelées dans d’autres procédures.

Dans un grand nombre d'interfaces graphique de Logo, l'écran est divisé en 2 parties afin de permettre de visualiser à la fois les instructions qui lui sont données et leurs résultats :

  • l'une pour le graphique proprement,
  • l'autre pour introduire et voir les instructions déjà données.

Quelques exemples

Exemple d'image réalisable avec la tortue

Exemple de définition de procédure : la procédure CARRE devra tracer un carré à l'écran. Le texte est tapé dans l'éditeur du LOGO, puis sauvé.

POUR CARRE
AV 100 TD 90
AV 100 TD 90
AV 100 TD 90
AV 100 TD 90
FIN

ou plus simplement

POUR CARRE
REPETE 4 [AV 100 TD 90]
FIN

Emploi de CARRE dans une autre procédure :

POUR PLCARRE
REPETE 36 [CARRE TD 10]
FIN

Dans cet exemple,

  • «AV n» signifie «AVance la tortue du nombre de pas n»
  • «TD n», «Tourne à Droite de n degrés (ici de 90 degrés)»

Pour employer PLCARRE, il suffit de taper dans la zone de commande PLCARRE.

Le passage de paramètres à une procédure est possible.

POUR CARRE :LG
REPETE 4 [AV :LG TD 90]
FIN

Utilisation : CARRE 50 trace un carré de 50 pas de TORTUE.

Pour faire un CERCLE, il suffit de décrire le périmètre de celui-ci

X = 36
Y = 5
répète X [
           TOURNEDROITE 360/X   
           AVANCE Y 
         ]

En réalité, il s'agira d'un polygone régulier à 36 côtés, cette formule ne s'applique qu'au versions LOGO où la Tortue ne peut tourner que par des angles de 10°. La rosace présentée en illustration peut donc s'écrire (KTurtle)

COULEURCRAYON 255, 0, 0
X = 36
Y = 5
répète X [
        TOURNEDROITE 360/X
        répète X [
                TOURNEDROITE 360/X
                AVANCE Y 
        ]
]

pour un hexagone

REPETE 6[AV 100 TG 60]

Primitives graphiques

Principales primitives de la tortue
Français Commande ou opération Anglais Définition
AV n ou AVANCE n commande FD n ou Forward n la tortue avance de n pas
RE n ou RECULE n commande BK n ou Back n la tortue recule de n pas
TD n ou TOURNEDROITE n (DR n, DROITE n) commande RT n ou RIGHT n la tortue tourne de n degrés d'angle vers la droite
TG n ou TOURNEGAUCHE n (GA n, GAUCHE n) commande LT n ou LEFT n la tortue tourne de n degrés d'angle vers la gauche
LC ou LEVECRAYON commande PU or PENUP La tortue ne laisse pas de trace
BC ou BAISSECRAYON commande PD or PENDOWN La tortue laisse sa trace (par défaut)
CT ou CACHETORTUE commande HT ou HIDETURTLE la tortue n'est plus visible sur l'écran graphique
MT ou MONTRETORTUE commande ST ou SHOWTURTLE La tortue est visible sur l'écran graphique
ENR ou ENROULE commande WRAP Enroule l'écran graphique (valeur par défaut)
FEN commande WINDOWS La tortue peut sortir du jardin et disparaître de l'écran graphique
CLOS commande FENCE La tortue ne peut pas sortir du jardin
ORIGINE commande HOME Retour au milieu du carré de salade
VE commande CS ou CLEARSCREEN Efface toutes les traces et restaure l'état initial (tortue au centre et regardant vers le haut)
NETTOIE commande CLEAN Efface toutes traces de l'écran graphique sans changer la position de la tortue
VT commande CT or CLEARTEXT Efface l'écran de commande
FCC n commande SETPC n Change la couleur du crayon, n est un entier positif
FCFG n commande SETBG n Change la couleur du fond, n est un entier positif
FCB n commande ***** Change la couleur des bords, n est un entier positif
FCAP n commande SETH ou SETHEADING Fixe le cap de la tortue de maniere absolue, selon l'angle de n degrés
Ex : 0 CAP vers le haut de l'écran, 90 vers la droite, 180 en bas, 270 à gauche
FPOS [X Y] commande SETPOS [X Y] Fixe la POSITION de la tortue avec une LISTE de 2 nombres entiers (id : coordonnées cartésiennes).
Ex : LC FPOS [50 35] BC ou avec des variables DONNE "X 50 DONNE "Y 35 FPOS PH :X :Y
CAP n opération HEADING retourne l'orientation de la tortue exprimée en degrés
POSITION, POS opération POS retourne la position de la tortue en coordonnées cartésiennes.
Primitives Logo mathématiques
Français Anglais Définition
n1 + n2 n1 + n2 Addition de nombres réels - Ex : EC 45.124 + 11 ou EC (+ 45 10 78 23)
n1 - n2 n1 - n2 Soustraction de nombres réels - Ex :EC 5 - 1.09
n1 * n2 n1 * n2 Multiplication de nombres réels - Ex :EC 5 * 9
n1 / n2 n1 / n2 Division de deux nombres réels - Ex :EC 45 / 9
SOMME n1 n2 SUM n1 n2 Addition de nombres réels - Ex : EC SOMME 45 11
DIFF n1 n2 - n1 n2 Soustraction de nombres réels - Ex :EC DIFF 5 1
PROD ou PRODUIT n1 n2 PRODUCT n1 n2 Multiplication de nombres réels - Ex :EC PROD 5 9.45
DIV n1 n2 QUOTIENT n1 n2 Division de deux nombres réels - Ex :EC DIV 45 11
QUOTIENT n1 n2 QUOTIENT n1 n2 Division de deux nombres réels - Ex :EC DIV 45 11
RESTE n1 n2 REMAINDER n1 n2 Reste de la division
ENT n INT n Renvoie la partie entière du nombre réel - Ex :EC ENT 55.75 → 55
ARRONDI n ROUND n Arrondit un nombre réel - Ex :EC ARRONDI 55.75 → 56
ABS n ABS n Renvoie la valeur un nombre réel - Ex :EC ABS -55 → 55
HASARD n RANDOM n Renvoie un nombre entier entre 0 et n-1
RC n ou racine n SQR n Renvoie la racine carré d'un nombre réel - Ex :EC RC 25 → 5
LOG n LOG n Renvoie le logarithme naturel d'un réel
LOG10 n LOG10 n Renvoie le logarithme de base 10 d'un réel
EXP n EXP n Renvoie l'exponentielle d'un réel
SIN n SIN n Renvoie le sinus d'un réel n en degrés - Ex :SIN 30
COS n COS n Renvoie le cosinus d'un réel n en degrés
TAN n TAN n Renvoie la tangente d'un réel n en degrés
ATAN n ATAN n Renvoie tangente d'arc d'un réel n en degrés
PI PI 3.141592…
RADIANS n RADIANS n Convertit un angle en radians n en degrés
DEGRES n DEGRES n Convertit un angle en degrés n en radians

Logo, projet pédagogique

Notes et références

  1. Harold Abelson, Apple Logo, 1982
  2. Mindstorms: Children, Computers, and Powerful Ideas, 1980 (ISBN 978-0-465-04674-4) Traduction française : "Jaillissement de l'esprit. Ordinateurs et apprentissage", Flammarion, 1981, réédité en 1999 (ISBN 978-2-08-081210-0)
  3. BOSSUET, Gérard. L’ordinateur à l’école (l’éducateur). Paris: Presses Universitaires de France (PUF), 1982. 234 pg
  4. (en) ELICA
  5. (en) StarLogo
  6. (en) NetLogo réalisé par Uri Wilensky
  7. Logoplus Multi-Gfx, un compilateur LOGO libre pour Windows.
  8. (en) Scratch au sein du MIT
  9. (en) LIOGO, un compilateur Logo pour .NET et Mono.
  10. (en) Logo3d, logiciel libre distribué selon les termes de la licence ISC.
  11. (en) Imagine
  12. (en) Microworlds
  13. (en) Terrapin Logo
  14. (en) jLogo, autre version en Java de Logo
  15. ABELSON & DI SESSA, 1986.
  • Si vous disposez de GNU-Linux, et des CD-ROM Debian ou d'une connexion Internet, vous pouvez installer Logo, en tapant la commande « apt-get install ucblogo ». Pour le lancer, taper « logo » (version anglaise avec licence GPL)

Voir aussi

Sur les autres projets Wikimedia :

Liens internes

Liens externes



Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Logo (langage) de Wikipédia en français (auteurs)

Игры ⚽ Поможем написать курсовую

Regardez d'autres dictionnaires:

  • Logo (langage de programmation) — Logo (langage) Pour les articles homonymes, voir Logo (homonymie). Le Logo est un langage de programmation réflexif et fonctionnel. Il a été adapté du Lisp dans les années 1960 au Massachusetts Institute of Technology (MIT) par Wally Feurzeig et… …   Wikipédia en Français

  • Langage Logo — Logo (langage) Pour les articles homonymes, voir Logo (homonymie). Le Logo est un langage de programmation réflexif et fonctionnel. Il a été adapté du Lisp dans les années 1960 au Massachusetts Institute of Technology (MIT) par Wally Feurzeig et… …   Wikipédia en Français

  • Langage de programmation Logo — Logo (langage) Pour les articles homonymes, voir Logo (homonymie). Le Logo est un langage de programmation réflexif et fonctionnel. Il a été adapté du Lisp dans les années 1960 au Massachusetts Institute of Technology (MIT) par Wally Feurzeig et… …   Wikipédia en Français

  • LOGO — (langage) Pour les articles homonymes, voir Logo (homonymie). Le Logo est un langage de programmation réflexif et fonctionnel. Il a été adapté du Lisp dans les années 1960 au Massachusetts Institute of Technology (MIT) par Wally Feurzeig et… …   Wikipédia en Français

  • Logo (homonymie) — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Sur les autres projets Wikimedia : « Logo (homonymie) », sur le Wiktionnaire (dictionnaire universel) Un logotype (écourté logo) est un… …   Wikipédia en Français

  • logo- — ♦ Élément, du gr. logos « parole, discours ». ⇒ logie. logo élément, du gr. logos, parole, discours . ⇒LOG(O) , (LOG , LOGO )élém. formant Élém. tiré du gr. entrant avec ses différentes accept. dans la constr. de mots savants. I. [Log(o) est issu …   Encyclopédie Universelle

  • Langage de description materiel — Langage de description matériel Pour les articles homonymes, voir HDL. Un langage de description matériel (HDL pour hardware description language en anglais) est, en électronique, un langage informatique permettant la description formelle d un… …   Wikipédia en Français

  • Langage de description matériel — Pour les articles homonymes, voir HDL. Un langage de description matériel (HDL pour hardware description language en anglais) est, en électronique, un langage informatique permettant la description formelle d un circuit électronique. Celui ci… …   Wikipédia en Français

  • Langage de description matériel (HDL) — Langage de description matériel Pour les articles homonymes, voir HDL. Un langage de description matériel (HDL pour hardware description language en anglais) est, en électronique, un langage informatique permettant la description formelle d un… …   Wikipédia en Français

  • Langage de description matériel (hdl) — Langage de description matériel Pour les articles homonymes, voir HDL. Un langage de description matériel (HDL pour hardware description language en anglais) est, en électronique, un langage informatique permettant la description formelle d un… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”