XD blog

blog page

scratch


2014-04-10 La programmation pour les enfants

Comment initier les enfants à la programmation ? Je commence à croire que les langages de programmation ne s'appellent pas langages par hasard et que leur apprentissage doit démarrer tôt si on veut avoir une chance d'être bilingue ou trilingue français/anglais/python. Même si passer d'un langage à l'autre est plus facile que d'une langue à l'autre, on aurait tort de penser qu'il n'existe pas de figure de style. Le site codecrap recense les plus beaux contresens programmatiques et permet même de voter pour les plus esthétiques.

Je reviens au sujet principal qui est l'initiation des enfants à la programmation. Il est plus facile de faire rêver un enfant devant un train électrique. Je n'en disconviens pas mais cela n'empêche pas d'essayer de rendre cette abstraction accessible de plein de façons possibles.

Si vous savez programmer, vous pouvez considérer l'ordinateur comme votre esclave personnel. Il ne comprend que les ordres simples (très simples) ce qui en fait un esclave parfois récalcitrant (allez lire Trolls dans la brume pour comprendre ce qu'est un esclave récalcitrant). Mais... si vous ne savez pas programmer, il n'est pas trop tard pour apprendre. Vous avez tout d'abord la programmation ludique : le décor est un jeu et programmer est la seule façon de s'en sortir: erase all kittens, robozzle.

Vous avez aussi des jeux toujours au décor imposé dans lequel la programmation vous sert à définir le jeu. codecombat, rubywarrior.

D'autres se sont dit qu'il fallait apprendre à programmer avec un outil qui peut presque tout faire mais de manière graphique, donc quasiment sans clavier. Dans ce domaine, le plus abouti est Scratch (voir aussi snap). Il y a aussi blocky. Les deux se ressemblent beaucoup, la différence vient sans doute des extensions. Par exemple, avec Scratch et Enchanting, vous pouvez piloter le robot Lego Mindstorm.

Moins ludique, moins graphique mais forcément plus compliqué, on a des langages très simples permettant de dessiner : livecodelab, code-monster, kojo.

Certains ont aussi pensé qu'en français, ce serait plus facile : linotte. D'autres ont ajouté kids devant un langage connu : kidsruby, python for kids.

Et si vous avez aimé, vous pouvez passer au niveau supérieur avec des applications qui permettent de faire des jeux gamesalad, de concevoir des objets 3D openscad ou d'avoir une vision un peu plus mathématique de la chose : Loria PLM.

Et pour finir, allez voir Hello Processing ou comment programmer une oeuvre d'art. Ne me dites que ce prof ne vous fait pas envie. Si vous avez toujours perçu l'informatique comme quelque chose d'austère, allez lui rendre visite. Il s'éclate complet ! La science est l'aventure de demain : Théorème vivant.

2014-05-13

Faut-il introduire la programmation à l'école ? Quand ? Ce blog regroupe de nombreux articles et réflexion autour du sujet : Coder à l’école… vous n’arrivez pas à suivre les débats ?. L'un d'eux précise que la notion de variable n'est vraiment assimilable qu'à partir de dix ans et qu'elle est essentielle. Le fait de désigner un objet inconnu par une lettre et de le manipuler sans savoir ce qu'il est intervient en mathématiques en sixième-cinquième avec la résolution des équations.

2014-12-27

Un article paru en décembre 2014 sur différents outils La programmation pour les non-programmeurs.

2014-03-08 Programmer un robot Lego

J'ai acheté un robot Lego Mindstorms. Je me suis que si des enfants arrivent à le faire dans des coding goûters, je devrais bien y arriver aussi. Je suis donc allé dans un magasin Lego à Levallois pour dénicher l'objet (ici).

Je l'ai laissé mariner quelque temps afin de penser à aller acheter des piles (6 piles R6, 2 piles R03). Et j'ai commencé à monter l'engin, une occupation qui m'amuse beaucoup d'habitude, mais étant donné que j'étais plus intéressé par le robot fini que le fait de le construire, l'heure d'assemblage m'a paru longue. Lorsque j'ai eu fini, il me restait la moitié des pièces. J'ai compris que j'aurais dû télécharger l'application d'abord ! Cela prend une heure et on a le choix entre pas mal de modèles différents (avec les mêmes pièces je suppose). Si vous suivez le même chemin, il vaut mieux procéder dans cet ordre, télécharger d'abord, monter ensuite. Je vous montre une photo de mon petit n'importe quoi car je n'ai pas eu le courage de terminer un des assemblages proposés. L'essentiel était pour moi d'avoir un n'importe quoi qui bouge tout seul.


more...

2013-06-08 Apprendre la programmation avec la souris (avec Scratch)

Je cherchais des livres récents sur Python et je suis tombé là dessus : Super Scratch Programming Adventure!: Learn to Program by Making Cool Games!. Le livre est en anglais mais il présente un outil qui se décline dans toutes les langues et qu'on peut trouver ici : Scratch et qu'on peut télécharger sur toutes les plateformes ici : téléchargement.

Je suis toujours un peu sceptique sur les outils comme celui-ci. Ils sont soit très simples mais on ne peut pas faire grand chose, soit aussi complexe que d'autres (Apprendre à coder en Python : illustration) avec le désavantage de ne pas pouvoir utiliser plus tard ce qu'on apprend aujourd'hui (tout du moins pas en l'état car c'est une autre syntaxe). Malgré tout, c'est un outil intéressant, il offre une vue plus visuelle sur ce qu'est un algorithme comme cet exemple sur le calcul du PGCD (plus grand diviseur commun) : PGCD avec Scratch. Avec Scratch, on peut créer une scène et animer relativement facilement plusieurs objets dans cette scène : minotaure. On peut y ajouter des extensions : S4A : un projet pédagogique. On peut même trouver une traduction française du tutoriel : tutoriel en français. Et si vous avez la flemme de l'installer, vous pouvez l'utiliser en ligne : Scratch en ligne.

Tout est fait pour y être intuitif et ça marche plutôt bien. Cela dit, comme tout langage de programmation, il faudra quelques heures pour arriver à faire vraiment ce qu'on avait en tête au moment de commencer. Il manque selon mon avis deux fonctionnalités. La première serait de pouvoir aisément animer un personnage avec une séquence d'images. Dans scratch, chaque image serait un objet ce qui rend les choses un peut compliquées. L'autre option est de créer des costumes différents mais je ne sais pas trop comment Scratch gère la transparence des images. Il manque aussi les fonctions même s'il est encore possible de contourner l'obstacle : Creating a Function in Scratch using a Variable. Ce n'est pas l'idéal. L'autre option est d'utiliser Snap qui permet de créer ses propres blocs. Je n'ai pas réussi à télécharger l'outil, il est seulement disponible en ligne pour le moment (et en anglais). J'attendrais un peu.

Il n'est pas facile d'apprendre à programmation. Je n'ai pas encore trouvé de représentation qui ne soit pas abstraite. On comprend aisément ce que veut dire répéter une suite d'opérations mais un algorithme comprend souvent plusieurs répétitions, chacune d'entre elles pilotée par une condition différente. Les premiers pas sont plutôt simples comparés à l'assemblage de pas d'un programme qui fait quelque chose d'utile. Cette multitude devient nécessairement abstraite au-delà d'un certain point.

Il y a vingt ans, on enseignait la programmation au lycée avec le LSE dont la syntaxe était en français. Il n'a pas survécu probablement parce qu'il était dédié l'enseignement mais ne permettait pas vraiment de faire quoi que ce soit d'utile. Espérons que Scratch suive un destin différent. Et si on n'est pas convaincu, il est toujours possible de créer son propre langage A simple interpreter from scratch in Python, part 2, part 3, part 4.


Xavier Dupré