Fonctionnalités

Voici une liste générale des fonctionnalités. Pour tout voir, il vous faudra parcourir la référence.

turtleSpaces repose sur une implémentation complète de l’environnement Apple (LCSI) Logo. On a dit de Logo qu’il était « le langage informatique le plus puissant et le plus convivial jamais implémenté sur un ordinateur personnel ». (David Thornburg)

Logo est un langage « fonctionnel » fondé sur des « primitives » (des commandes) qui se renvoient mutuellement leur sortie – on peut les enchaîner pour récupérer, calculer et transformer des données de diverses manières avant de les stocker ou d’agir en conséquence.

Les utilisateurs peuvent créer des « procédures » qui se comportent exactement comme des primitives (et peuvent les remplacer). Une procédure peut prendre des paramètres et renvoyer une sortie, tout comme une primitive. Prenons la primitive product , qui multiplie deux nombres :

Nous avons de fait remplacé product par notre propre procédure.

Logo a été conçu au départ comme un terrain de jeu linguistique pour les enfants. De ce fait, il gère très puissamment les chaînes et les « listes » (un tableau d’« éléments »), comme [pig duck cow] ou [[Bob 53][Frank 22][Sue 34]]. Diverses primitives permettent de construire, trier et réordonner les listes et les chaînes, appelées « mots » en Logo.

  • Nous avons ajouté des listes « souples », qui sont « résolues » (évaluées) à l’exécution. Ces listes sont entourées d’accolades au lieu de crochets : {xpos ypos zpos} {hours minutes seconds}
  • Nous avons ajouté des tableaux plus traditionnels sous la forme de tables. Les tables sont des tableaux prédéfinis en x y (z). On lit et écrit leur contenu avec cell et putcell.
  • Il existe aussi un stockage de données positionnel, sous la forme de zones et de sectors.
  • Vous pouvez stocker et relire des données depuis des fichiers.
  • Vous pouvez afficher du texte dans différentes polices, tailles et couleurs.

La tortue a été ajoutée à Logo plus tard, mais elle en est devenue la caractéristique la plus reconnaissable. La tortue est un « curseur » graphique qui se déplace relativement à lui-même, contrairement aux autres systèmes graphiques « absolus » (même si l’on peut aussi travailler en absolu en Logo). Vous dites à la tortue d’avancer et de tourner, et elle le fait par rapport à sa position et à son orientation.

Dans turtleSpaces, nous avons ajouté aux tortues des capacités considérables :

  • La tortue peut se déplacer en trois dimensions. Cela signifie qu’en plus de forward , back , left et right , il y a up , down , rollleft , rollright. Par commodité, nous avons aussi ajouté raise , lower , slideleft et slideright.
  • position renvoie l’emplacement de la tortue avec trois coordonnées, le pos traditionnel en renvoyant 2 (x, y)
  • À côté de heading , setheading , nous avons ajouté pitch , setpitch et roll , setroll
  • orientation , setorientation règle les trois à la fois, selon setorientationorder , qui précise l’ordre dans lequel les trois paramètres d’orientation (heading , pitch et roll) sont appliqués (maudit sois-tu, Euler !)
  • Pour une orientation plus fiable, on peut utiliser vectors , setvectors – nous avons aussi toute une série de primitives liées aux vecteurs.
  • Vous pouvez définir un anchorpoint d’orbite puis orbit er autour en degrés. C’est extrêmement utile pour les caméras et pour dessiner des motifs intéressants.
  • Vous pouvez créer de nouvelles tortues, soit « persistantes » avec la primitive newturtle , soit éphémères avec hatch , dont la sortie peut être merge ée avec celle de son parent**.** Vous pouvez déterminer où les tortues se trouvent les unes par rapport aux autres avec near , inside ,facingp , location et d’autres.
  • Vous pouvez définir le « modèle » d’une tortue à partir de n’importe quel code de dessin Logo grâce aux tags , qui permettent de « baliser » des portions de la « piste » d’une tortue (sa sortie graphique), pour en faire des modèles ou pour les afficher ou non. Les pistes peuvent aussi être copiées, chargées et enregistrées. Des commandes arbitraires peuvent être insérées avant les modèles avec setpremodel , ce qui permet de modifier l’orientation du modèle selon les besoins.
  • Vous pouvez annuler la dernière action d’une tortue avec backtrack , et faire une procédure à partir de la piste d’une tortue avec assemble , ce qui permet de créer des modèles « à la volée ».

Les tortues peuvent occuper plusieurs space s, et elles peuvent être réparties entre ces espaces (newspace selectspace). Chaque espace est une toile tridimensionnelle infinie.

N’importe quelle tortue peut servir de caméra, sélectionnée avec setview. Vous pouvez changer la position de la caméra par rapport à sa tortue avec setviewpoint. Les tortues font aussi office de lumières – elles peuvent être une lumière directionnelle, une lumière ponctuelle, ou pas de lumière du tout.

Les procédures et les variables (containers), ainsi qu’un certain nombre de réglages, sont propres à chaque tortue. Vous pouvez share des conteneurs entre tortues, et partager des procédures grâce à la tortue spéciale libby (bibliothèque).

Les tortues sont « conduites » par des workers , qui sont des fils d’exécution. Un worker peut conduire plusieurs tortues (l’une après l’autre), ou plusieurs workers peuvent conduire plusieurs tortues. Plusieurs workers peuvent même (essayer de) conduire la même tortue ! Les workers et les tortues ne sont pas la même chose. Voyez les tortues comme des voitures, et les workers comme des conducteurs.

Vous pouvez vous connecter en telnet à turtleSpaces et piloter un worker depuis un terminal ou une autre application (API).

Là où les tortues Logo traditionnelles ne savent que tracer des lignes ou remplir des surfaces, turtleSpaces s’appuyant sur OpenGL, nous disposons de bien d’autres shapes que l’on peut créer, dont :

  • shard
  • pinshard
  • voxel
  • voxeloid
  • ramp
  • tent
  • sphere
  • sphereslice
  • cutsphere
  • cutsphereslice
  • spheroid
  • spheroidslice
  • cutspheroid
  • cutspheroidslice
  • icosphere
  • icospheroid
  • amigaball
  • amigaballoid
  • cylinder
  • cylinderslice
  • cylinderarc
  • cylinderarcslice
  • cylindroid
  • cylindroidslice
  • cylindroidarc
  • cylindroidarcslice
  • duocylindrdoid
  • tube
  • tubearc
  • tubeslice
  • tubearcslice
  • tuboid
  • tuboidarc
  • tuboidslice
  • tuboidarcslice
  • duotuboid
  • cone
  • coneslice
  • cutcone
  • cutconeslice
  • conoid
  • conoidslice
  • cutconoid
  • cutconoidslice
  • duocutconoid
  • funnel
  • funnelslice
  • cutfunnel
  • cutfunnelslice
  • cutfunneloidslice
  • funneloid
  • funneloidslice
  • cutfunneloid
  • duocutfunneloid
  • pyramid
  • pyramoid
  • dome
  • domoid
  • torus
  • torusslice
  • toroid
  • toroidslice
  • tetrahedron
  • tetrahedroid
  • octahedron
  • octahedroid
  • dodecahedron
  • dodecahedroid
  • mark
  • inscribe
  • typeset

Vous pouvez speckle (ou pixelliser à la Minecraft) des voxels et des quads. Vous pouvez créer des tracés à base de pixels (en 2 et en 3 dimensions) et vous en servir comme speck

Les primitives sonores comprennent la traditionnelle toot (tone), noise (qui produit un bruit blanc), playnotes , et vous pouvez playmusic pour jouer de la musique créée avec le tracker intégré. Vous pouvez aussi utiliser le synthétiseur vocal de votre système d’exploitation avec say (macOS et Linux)

turtleSpace a des utilisateurs. Vous vous « connectez » en tant qu’utilisateur pour utiliser turtleSpaces.

Les espaces de travail des utilisateurs sont enregistrés sous forme de dossiers « turtleSpace » (TSP). Ces dossiers enregistrent chaque modification apportée aux procédures et permettent de revenir à n’importe quelle étape du développement (undo , redo). Ce que vous tapez à l’invite interactive est également enregistré.

Des instantanés sont créés lors d’un save ou d’un takesnapshot – le point de sauvegarde est l’état dans lequel l’espace de travail est restauré lors de son chargement. Mais vous pouvez continuer à développer et revenir à l’état « courant » avec load autosave. Vous pouvez créer une « couverture » persistante (utilisée dans le cat alogue) avec takecover

L’invite interactive possède un historique lisible par programme (historycount historyitem historylist).

La visite de bienvenue

La première fois que vous ouvrez l’IDE, Shelly la tortue vous le fait visiter : la barre de menus, l’espace de travail, les commandes d’exécution, la console, la vue 3D et les Exemples. Cela prend environ une minute, et Shelly peut le lire à voix haute. Pour la revoir, choisissez Aide → Bienvenue. Vous pouvez aussi lire la même visite sur le site.

Shelly, l’assistante d’erreurs

Quand un programme s’arrête sur une erreur, Shelly apparaît et propose de demander à Claude de l’expliquer. Qu’est-ce que ça veut dire ? explique l’erreur en général. Explique-le dans mon code explique ce qui n’a pas marché dans votre propre programme. Essayez une faute de frappe :

L’aide de Shelly sur les erreurs apparaît quand vous êtes connecté.

Demander à Claude

Une fois connecté, l’éditeur a un onglet Claude, l’assistant de code par IA, où vous pouvez poser des questions sur Logo et sur votre programme. Le bouton rond de Claude, en haut à droite de l’éditeur de texte et de l’espace Blocs, propose trois choix : Comment procedure ajoute des commentaires à la procédure, Explain with Claude explique la procédure ou tout le programme en langage simple, et Teach Me How en fait un Turtorial.

Les réponses de l’IA peuvent être fausses : vérifiez-les. Voir AI features dans la Politique de confidentialité pour savoir ce qui est envoyé.

Le Turtorial

Un Turtorial est une leçon que Shelly prépare à partir d’un programme. Au lieu de vous donner la réponse, il vous guide pour construire le programme vous-même, étape par étape, avec des indices, de petites questions et un bouton Vérifier mon travail. Il est adapté au niveau de l’apprenant d’après les badges obtenus ; sans information, il suppose un débutant.

Le Turtorial démarre dans un espace de travail vide : si vous avez des modifications non enregistrées, il vous propose d’abord de les enregistrer. Si vous vous arrêtez en cours de route, choisissez Aide → Resume pour reprendre là où vous en étiez, dans le même navigateur. Il faut être connecté.

La consigne du jour

Besoin d’une idée ? Chaque jour, un nouveau mot créatif s’affiche dans la console au démarrage de l’IDE. Il change à minuit UTC. Créez quelque chose sur ce thème, ajoutez l’étiquette Consigne du jour en publiant, puis parcourez la galerie pour voir ce que les autres ont fait aujourd’hui.

Cinq langues

L’IDE et ce site sont disponibles en English, Español, Français, 日本語 et Polski. Choisissez la langue dans Réglages → Langue. Les commandes Logo restent en anglais dans toutes les langues, les exemples de code fonctionnent donc partout.