1 points par GN⁺ 6 시간 전 | 1 commentaires | Partager sur WhatsApp
  • Dans un cours de programmation en 12 séances destiné à des collégiens et lycéens, le choix s’est porté sur Forth, un langage concaténatif à pile apparu en 1970, afin de se concentrer sur les concepts de base plutôt que sur la syntaxe
  • Après avoir manipulé physiquement une structure dernier entré, premier sorti et des opérations avec des assiettes en carton, les élèves sont passés à l’ordinateur afin de comprendre avec leur corps le fonctionnement de l’interpréteur Forth
  • Avec Easy Forth, qui ne nécessite aucune installation, les projets finaux consistaient à créer un dessin, une animation ou un jeu ; les élèves ont modifié les règles et les couleurs de Snake ou réalisé des œuvres pixel par pixel
  • Forth impose peu de contraintes syntaxiques, mais les débutants ont dû manipuler très tôt des structures bas niveau comme la pile ; pour un cours d’initiation, Scratch, qui offre un retour visuel immédiat, aurait peut-être été plus adapté
  • Plus qu’un langage précis, l’important est un environnement où l’on peut voir rapidement le résultat et explorer par soi-même ; à mesure que grandit le risque de ne pas apprendre ou conserver des compétences à cause de la dépendance aux LLM, une formation centrée sur l’humain devient encore plus nécessaire

Pourquoi avoir choisi Forth

  • Plutôt que Python ou Scratch, le choix s’est porté sur Forth, un langage concaténatif à pile, afin d’explorer une voie pédagogique rarement tentée
  • L’objectif était d’éviter le poids de l’apprentissage de la syntaxe pour aborder les concepts fondamentaux dans un temps de cours limité
    • Python se lit comme du pseudo-code pour quelqu’un qui a déjà programmé, mais reste difficile à comprendre pour un débutant
  • Les langages candidats étaient Forth et Haskell
    • Forth exécute les commandes dans l’ordre où elles sont écrites, ce qui le rendait attrayant : une fois la pile comprise, on peut créer des programmes
    • Haskell correspond bien aux notions de variables et de fonctions apprises en mathématiques, et permettait d’éviter la confusion du modèle courant qui traite les variables comme des boîtes contenant des valeurs
  • Deux raisons ont finalement conduit au choix de Forth
    • Il était facile à intégrer dans un environnement d’apprentissage personnalisé
    • Pour la démonstration finale en classe, la programmation procédurale semblait plus facile à comprendre que la programmation fonctionnelle
  • Utiliser un langage peu connu permettait aussi aux élèves ayant déjà une expérience de la programmation d’apprendre quelque chose de nouveau, sans que les débutants se sentent exclus

Conception du cursus de 12 heures

  • Le cours s’est déroulé une fois par semaine, à raison d’une heure par séance, pour un total de 12 séances, sans attendre beaucoup de travail en dehors des cours
  • L’objectif final était de créer soi-même, dans l’environnement Forth, un dessin, une animation ou un jeu
    • Il s’agissait de laisser un résultat visible et conservable après la fin du parcours
    • L’idée était d’éviter la situation où l’on apprend beaucoup de notions techniques sans avoir l’impression de repartir avec quelque chose de concret
  • Les élèves utilisant des systèmes d’exploitation différents, et certains appareils ne permettant pas d’installer de logiciel externe, il fallait pouvoir exécuter du code sur leur propre ordinateur sans téléchargement ni installation
  • Au départ, l’idée était d’implémenter Forth en Rust et de l’intégrer au site du cours via WASM, mais la correction des bugs a pris plus de temps que prévu et le plan a changé
  • Easy Forth de Nick Morgan a été adopté comme cursus et interpréteur, et les diapositives, plans de cours et une copie d’Easy Forth ont été mis en ligne sur un portail

Un cours commencé par la notion d’ordinateur

  • Le premier cours a commencé par l’histoire de l’informatique et par la question de ce qu’est un ordinateur
  • Après avoir montré plusieurs dispositifs, dont un boulier, et demandé s’il s’agissait d’ordinateurs, l’ordinateur a été défini comme “tout ce qui calcule des nombres
    • Selon cette définition, presque tout peut être un ordinateur, y compris les élèves eux-mêmes
  • Après avoir élargi la représentation habituelle de ce qu’est un ordinateur, Forth, ses domaines d’utilisation réels et ses applications embarquées ont été présentés
  • Easy Forth partait du principe que le lecteur connaissait déjà au moins un langage de programmation et la structure de données de pile, mais les élèves ne disposaient pas de ces connaissances, ce qui nécessitait des explications séparées

Comprendre la pile de données avec des assiettes en carton

  • Avant d’utiliser l’ordinateur, la pile de données, qui est la base de Forth, a été visualisée à l’aide d’assiettes en carton
  • Les nombres séparés par des espaces entrent dans la pile dans l’ordre de saisie
    • Après avoir saisi 1 2 3, si l’on affiche avec . . ., les éléments sortent en commençant par le dernier entré, ce qui donne 3 2 1
    • La pile est une structure dernier entré, premier sorti, ou Last-In First-Out, qui fonctionne principalement avec l’ajout d’éléments au sommet, push, et leur retrait depuis le sommet, pop
  • Chaque élève a reçu des assiettes en carton et a exécuté directement des opérations Forth
    • Pour push un nombre, il fallait écrire ce nombre sur une assiette et la placer au sommet
    • Pour additionner, il fallait retirer les deux assiettes du sommet, les additionner, puis placer une nouvelle assiette portant le résultat
    • 8 6 + consiste à placer les deux valeurs puis à les additionner pour pousser 14 sur la pile
    • 2 3 * pousse sur la pile le résultat 6, obtenu en multipliant les deux valeurs
  • En répétant plusieurs opérations, les élèves ont eux-mêmes joué le rôle de l’interpréteur Forth
    • Après avoir compris que l’ordinateur automatise ce travail, ils sont passés aux vraies machines

Exercices avec Easy Forth et projets finaux

  • Chaque semaine, le cours suivait Easy Forth avec explications des concepts, exercices et questions-réponses, et l’ensemble du parcours s’est déroulé sans problème particulier
  • Pour le projet final, à terminer dans les 12 heures tout en montrant les acquis, le framework graphique d’Easy Forth a été utilisé
    • Les élèves pouvaient créer un dessin, une animation ou un jeu
    • Comme le temps pouvait manquer pour terminer un nouveau jeu, il leur a été conseillé de modifier le jeu Snake intégré afin de produire un résultat original
  • Le code du playground Easy Forth a été extrait dans une page séparée et étendu pour afficher le code d’un côté et une grande zone graphique de l’autre
  • Lors du dernier cours, les élèves ont rapidement découvert que quelques changements dans le code de Snake suffisaient à modifier les règles et les couleurs
    • Ils n’avaient pas le niveau pour mener de grands refactorings, mais ils étaient devenus assez familiers avec Forth pour ne pas en avoir peur et pour l’explorer et le modifier
  • Des exemples ont montré comment dessiner des objets avec les primitives graphiques intégrées et créer de nouveaux mots permettant de dessiner facilement des formes comme des lignes
    • Tous les élèves ont choisi leur propre œuvre, la plupart réalisant des dessins pixel par pixel
  • Après la fin du cursus, l’environnement est resté en ligne pendant un certain temps afin que les élèves puissent continuer à expérimenter et apprendre s’ils le souhaitaient

Ce que l’enseignement de Forth a permis de constater

  • Forth a été un langage pédagogique intéressant, mais il n’est pas certain que ce soit le meilleur choix
  • Il n’y a pas de syntaxe difficile, mais les débutants ont dû réfléchir directement à des éléments système que beaucoup de programmeurs placent sous des couches d’abstraction
    • La pile est une structure de données fondamentale en informatique, mais elle n’a pas forcément besoin d’être placée tout au début d’une initiation
  • La possibilité d’écrire du code comme une suite de mots était puissante, et un langage concaténatif doté de composants de plus haut niveau pourrait aussi être utile pour l’enseignement
    • Un langage comme Factor, ou une approche complètement différente, pourrait aussi être envisagé
  • S’il fallait refaire un choix, un support axé sur un retour visuel clair et immédiat plutôt que sur les structures internes pourrait être envisagé
    • Scratch permet d’enseigner le flux de contrôle, les variables, les fonctions, etc., sans détails bas niveau, et de déplacer facilement des sprites
  • Le langage de programmation précis n’a pas une grande importance en soi, et même dans un parcours court, les élèves ont pu apprendre Forth efficacement
    • Le paradigme le mieux adapté peut varier selon les élèves, ce qui rend difficile un ajustement parfait du parcours d’apprentissage
    • Ce qui compte, c’est un environnement où l’on peut vérifier les résultats rapidement et de façon répétée, et explorer en autonomie
  • Les élèves ont bénéficié d’une initiation bas niveau leur permettant de comprendre en profondeur une structure de données fondamentale de l’informatique
    • Pour l’animateur du cours aussi, cela a été l’occasion d’améliorer sa pédagogie par la même forme d’apprentissage itératif demandée aux élèves

Un apprentissage centré sur l’humain à l’ère des LLM

  • Plus la programmation est pilotée par l’automatisation probabiliste, plus il devient important d’enseigner aux humains à programmer eux-mêmes
  • Même les personnes qui savent déjà programmer peuvent voir leurs compétences régresser si elles dépendent des LLM, tandis que celles qui n’ont jamais appris peuvent ne jamais développer ces compétences
  • Les personnes qui cherchent à apprendre de nouvelles compétences utilisent de plus en plus les LLM plutôt que des ressources reconnues
  • Il faut offrir à tout le monde, quel que soit son parcours, et en particulier aux enfants, des environnements centrés sur l’humain où apprendre des compétences comme la programmation
  • Des personnes aux parcours variés doivent consacrer du temps et de l’énergie à partager leurs connaissances, et aussi enseigner comment acquérir des connaissances supplémentaires en toute sécurité
  • Même sans être enseignant professionnel, il faut apprendre à enseigner et créer des espaces où le savoir circule librement entre les personnes

1 commentaires

 
GN⁺ 6 시간 전
Commentaires sur Lobste.rs
  • Exposer les enfants et les adolescents à des outils et langages informatiques non mainstream est efficace pour leur enseigner l’étendue du domaine de l’informatique et les différentes approches utilisables pour résoudre des problèmes.
  • J’aime beaucoup Forth, mais ce n’est peut-être pas le meilleur choix pour l’enseignement. Cela dit, pour un programmeur, il est important d’être exposé à divers paradigmes de programmation.
    Easy Forth semble être une bonne ressource, et je recommande à tous les programmeurs de consacrer ne serait-ce que 10 minutes à essayer Forth. C’est un langage très simple à apprendre, mais à la fois familier et capable de bousculer votre façon de penser ; il est aussi facile à implémenter lorsqu’il faut créer rapidement un langage de haut niveau à partir de zéro.
    • La majeure partie de Forth est simple, mais pas certains éléments comme DOES>.
      Implémenter Forth a été amusant, mais plus j’écrivais de code, moins je l’appréciais. Les mots parasites comme DUP, ROT et SWAP rendent le flux difficile à suivre, et le langage tend aussi à encourager l’usage de variables globales, que je n’aime pas particulièrement.
  • Comme j’aime apprendre des langages de programmation intéressants, un ami m’a recommandé Forth, et je compte effectivement m’y mettre.
  • Si vous ne pouvez pas accéder à la page actuelle, l’archive suivante est disponible :
    https://archive.ph/0ZOVa
    • En réalité, la page n’était pas hors ligne : c’était le FAI qui la bloquait.