Apprendre à programmer aux jeunes

 

Apprendre à programmer aux jeunes

David Cobac 03 oct 04 : L'idée est d'enseigner la programmation (niveu de base) aux enfants de collège. Je suis preneur d'idées.

À voir : http://wiki.tcl.tk/9058

AM (4 oct 2004) J'ai commencé il y a un an et demi à écrire un petit livre dans ce but: http://tcl.projectforum.com/young/Home Malheureusement, tant d'autres choses intéressantes m'ont occupées depuis ce temps et je n'ai pas fini ce travail.

La vraie difficulté : qu'est-ce que c'est qui les intéresse, ces jeunes programmeurs ? Faut-il se concentrer sur des jeux ? Faut-il se concentrer sur des applications graphiques ? Du logiciel communicant à l'Internet?


VWa (entre 4 et 7 oct 2004...) Mon point de vue : quand je repense à mes débuts en programmation (Basic Level I sur TRS-80, j'avais 14 ans) et que je me projette mon état d'esprit de l'époque dans les environnements actuels, et la connaissance qu'ont "les jeunes" de la chose informatique

j'aimerai bien un environnement tout intégré (éditeur + exécution + librairies + des exemples : tout qui s'installe en une seule fois sans galérer, tout dans une seule fenêtre avec des onglets) j'aimerai bien pouvoir commencer avec le moins possible de niveaux d'abstraction, et en particulier surtout pas "package require" et "namespace eval" ... que ça ait un look sympa; très sympa, même, moderne façon look aqua en rigolo qui permette de réaliser des trucs amusants que je pourrais envoyer par mail à mes amis ce serait sympa d'avoir une librairie capable de faire des animations en 2D (comme ce qui se fait en flash, par exemple) Après, quand j'y pense d'un point de vue technique (et notamment tcl) je me dis que ce n'est pas facile. Dans cet esprit, il y a "squeak" une distribution de smalltalk mais... trop compliqué, trop "tout est dans tout et réciproquement".

En l'absence de "tout intégré" je trouve que mon environnement actuel (textpad + activetcl) est présentable pour qui veut faire l'effort. Mais ceux qui le font sont souvent plus tentés par VBA ou par JavaScript.


Kroc Je suis assez d'accord avec Vincent : proposer dès le départ du tout intégré sera un vrai plus. Pour ma part, je pense qu'Editt + Tclkit + tkcon + quelques librairies en starkit ça serait pas mal. Au moins il n'y aurait rien à installer puisque tout peut fonctionner directement depuis un CD Rom.

Quant au contenu lui-même, quelques whizzlets à la Suchenwirth seraient parfaits, non ?


David cobac J'ai jeté un petit coup d'oeil à Squeak, j'ai même fait fonctionner la chose et j'avoue ne pas avoir compris grand chose (d'après ce que j'ai compris, je me suis amusé avec les E-toys, c'est très plaisant mais je comprends pas trop comment coder avec ce truc...car les tutoriels parlent beaucoup de code mais ça a l'air très étrange et je me vois mal expliquer cela à des jeunes).

Ce que dit VWa est particulièrement intéressant. La solution Editt+Tclkit est séduisante mais pour des enfants, cela me semble trop peu orienté "fun"...le petit côté Flash et multimedia me semble attractif. Pourrait-on imaginer un [Editt4Kids] ?


AM (7 octobre 2004) J'ai écrit un petit script qui peut illustrer assez facilement un genre de programme pour des enfants - http://wiki.tcl.tk/12607.

L'idee est simple : il y a des animaux ou des "agents" qui habitent un monde simple. Ils réagissent les uns aux autres selon des règles assez simples, ou plus juste non-detaillées ("high level"). Comme par exemple :

Une bulle qui suit la souris, mais avec un peu de distance:

Détermine la distance entre la bulle et la souris, ainsi que la direction Déplace la bulle dans la direction de la souris, mais pas trop proche Ça veut dire : quelques calculs basiques, quelques commandes en Tcl et un effet visible.


David Cobac J'ai fait fonctionner ton programme Arjen et j'avoue que cela me semble encore obscur (j'ai pas tout compris mais je vais me plonger attentivement dans le code).

Toujours en réflexion à une sorte d'IDE pour les enfants, j'en suis venu à me demander ce qu'on pouvait finalement attendre d'eux (en supposant qu'on veuille les évaluer). Il faudrait établir une liste de capacités et pour chacune une liste de compétences, à moins qu'une liste de compétences puissent suffire. Dans la même idée, attend-on d'eux de savoir programmer en Tcl ou s'agit-il de les initier à une analyse d'un problème avec une solution en langage de description algorithmique puis un codage en Tcl ?

Il est clair que Tcl/Tk en tant que langage interprété est un atoût pour apprendre à s'en servir... Peut-on imaginer un tkcon moins austère ?

AM Avec Tcl/Tk on a la possibilité de limiter les problèmes de syntaxe au minimum. Il faut bien sûr avoir un IDE attractif et ça veut dire aussi, à mon avis, un langage performant et algorithmique qui donne des résultats immédiatement. Le petit script que j'ai publié est seulement la première version d'un tel environnement. L'idée est simple : quelques commandes algorithmiques (pas de détails) qui ont un effet visuel. Le "user-interface" (non existant pour le moment) doit rendre possible le changement de code (en portions) des "agents" et l'exécution du nouveau systeme.

Avec des widgets comme "ctext" (voir Editt), il est facile de supporter l'édition par de la coloration syntaxique et d'offrir une information contextuelle. Mais ce sont les problèmes concrets avec beaucoup de consignes précises qui vont aider l'enfant sur les premiers étapes de l'apprentissage de la programmation - peut-être un système comme http://wiki.tcl.tk/10569 ?


VWa (10 octobre 04) Je vous ai lu, j'ai essayé mathbook et arena, c'est sympa et je conçois bien les choses comme ça : un environnement "résultat-centrique" qui donne accès à des librairies qui font déjà pas mal de choses..

Une idée qui me vient, ce serait une adaptation du "wikit.kit" ou du notebook de wjduqette (des outils basés sur le principe de "l'auto-édition"), pour le rendre programmable, et compléter de librairies graphiques et programmes amusants.

Quand tu parles de forme de projet pédagogique pour les enfants, David, pour ma part j'aime surtout l'idée d'un truc fun même pour les grands.

Mmm note de dernière minute : le notebook est w.j.duquette est déjà programmable http://www.wjduquette.com/notebook/

David Cobac J'ai attentivement regardé l'arena d'Arjen et je suis emballé ! C'est très prometteur, par contre je trouve que c'est trop (très) ambitieux pour des gamins de 11-15 ans. Plus j'y pense plus Squeak me paraît d'une simplicité inégalable...pour aborder pas à pas certaines notions (tests et boucles notamment) avec beaucoup de fun.

L'idée de faire évoluer un monde créé par soi-même est géniale (on peut même (j'ai essayé ce week-end) essayer de trouver des systèmes stables avec contraintes). On pourrait essayer d'ajouter à l'arena une interface qui prévoit d'insérer facilement des tests, et fait évoluer automatiquement le système sans "start ...", voire sans instancier de classe d'agents qui me paraît trop compliqué... bref yapuka !!

GS (041011) Puisqu'il est question de Squeak, il y a un projet intéressant basé dessus http://opencroquet.org/

AM Est-ce qu'il y a un site pour s'informer sur Squeak? En référence à mon script, je suis d'accord que nous devons étudier l'éventualité d'une interface utilisateur simple et intuitive. J'ai expérimenté avec plusieurs types d'"objets" et ça marche agréablement. Une interface qui va captiver les jeunes serait un merveilleux résultat.

David Cobac Il y a les incontournables http://www.squeak.org et http://www.squeakland.org mais aussi ce petit article avec plein de jolis liens : http://www.framasoft.net/article1790.html

Vincent Wartelle (30 octobre 04) Voilà que je découvre Beanshell sur http://www.beanshell.org. C'est un langage de script pour Java écrit en Java avec la syntaxe de Java, littéralement "l'équivalent pour Java de ce qu'est Tcl/Tk pour le C". Qui apporte à Java des objets non typés, et l'interactivité, dans un environnement graphique intégré. Essayez et vous verrez qu'il y a des idées à prendre. Notamment la structure multi-fenêtres, dont l'une est une console. d'ailleurs, Java n'est il soudain pas plus sympathique maintenant que .NET existe ?


Robert Abitbol Voici ce que j'ai écrit sur le Wikit anglais. Si vous voulez une traduction en français, aucun problème! J'étais (entre autres) traducteur dans le temps mais je ne me suis jamais traduit!

Wolf-Dieter, if you want your kids to learn how to program, this is what I suggest:

• Get them a stack of index cards and on each card, write one TCL function. One simple one. Such as: how to create a window. Get the biggest size of index cards. In North-America the biggest size is: 8 X 5 inches. I don't know about Germany. Cards are very handy and fun to play with. I still have the ones I used to learn C!

Example: the children will copy the code and will create a window on the screen. Sounds boring? Well not quite, believe me! They'll be thrilled at simply making a window on the screen and playing around with the index cards. Remember when you started programming. The same happened to you. Everything was magic!

• Go very slowly. One function a week. That is 52 a year! Or one every two weeks.

• Then you move on to more complex stuff. Combining simple functions. Still using index cards.

For each card, write the objective: ex: Creating a window.

You'll see how fast kids learn when learning is done slowly, systematically and gradually. I know so, for I have been a teacher before and I still teach myself stuff. German for example.

You'll see that you don't have to come up with a game to interest them. Anything they will be able to do well will keep them entertained!

If you want to type in the contents of your tutorial here ona WikiT page, I could also learn since I am also a beginning beginner.

Le texte complet est ici: http://wiki.tcl.tk/12731

Globalement, je dis qu'il faut enseigner chaque fonction en faisant exécuter un petit programme à l'étudiant. Il faut écrire le petit programme sur une grande fiche.

Il ne faut pas avoir peur de faire faire des petits programmes tout bêtes: ex: pour enseigner le string map, changer un o par un a. Et c'est tout! Les profs ont trop souvent peur d'être trop simplets et ils compliquent leur enseignement à l'excès. Ce qui est une erreur!

Ce sont les principes de l'enseignement graduel. Je ne pense pas qu'il faille faire nécessairement des jeux pour intéresser les enfants.

A chaque fois, un petit script qu'on colle dans tcl.exe ferait parfaitement l'affaire!

En prime, l'élève collectionnera des cartes dont il se servira toute sa vie. L'aspect ludique de cet enseignement est justement dans la collection de cartes!