Scratch, Snap et Arduino : synthèse des échanges sur la liste du groupe de travail éducation

Cet article est une synthèse de discussions sur la liste de diffusion du groupe de travail éducation de l’April. Il ne reflète pas les positions officielles de l’association. Rejoignez le groupe de travail éducation de l'April, en vous inscrivant à la liste de discussion (cette inscription est ouverte à tout le monde)

Cet article est une comparaison de deux logiciels d'apprentissage graphique de la programmation utilisables dans l'enseignement primaire et secondaire

Évolution du côté de Scratch

Scratch 3.0 pointe le bout de son nez
Première nouvelle, l’utilisation du logiciel privateur Flash ne sera plus requise. Une raison supplémentaire de cesser d’utiliser Flash qui devrait disparaître des internets. A priori, ici, tout serait conforme aux standards avec du HTML/JavaScript. À terme, il n’y aura donc plus besoin d’installer le logiciel privateur Adobe Air, ce qui va faciliter le travail des personnels en charge des réseaux des établissements scolaires. À noter que la version 2 sortie en 2013 n'est pas utilisée par tout le monde à cause de son emploi de Flash. Ainsi, la distribution Debian est restée à la version 1 qui repose sur Smalltalk. Cette version, bien que plus ancienne, bénéficie de plus de 10 années de maturation et donc reste largement utilisable pour les activités scolaires.

Logo Scratch

La future version supportera une syntaxe horizontale comme dans ScratchJr et une autre verticale comme dans le Scratch dit classique. Pour l’instant, seule l’horizontale est présente dans les codes sources publiés, l’arrivée de la syntaxe verticale étant prévue dans les mois à venir. Les tablettes sont une cible privilégiée. Ce projet est en phase de développement. C’est le fruit d’un partenariat avec Google. Le code soutenant les nouveaux "Scratch Blocks" est basé sur les Blocky de Google. Pour le MIT, ce partenariat est avant tout une opportunité importante d’augmenter la diffusion de Scratch.

Un nouvelle intéressante est le choix de la licence, Apache 2.

Pour le moment, les développeurs en sont à la partie langage visuel principalement. Pour la partie sauvegarde/partage des projets en ligne (ou sur un serveur), il est difficile d’évaluer dans quelle direction ils souhaitent aller. Une refonte du site web de Scratch sur le MIT est en cours, avec là encore le choix de licences libres, et c’est également libre comme on peut le voir sur le
dépôt github. Peut-être aura-t-on la posibilité de gérer nous-mêmes la partie stockage des projets ? Ceci serait intéressant en contexte éducatif pour mutualiser des projets Scratch à l’échelle d’un établissement scolaire ou d’un bassin, voire d’une académie. L’avenir nous le dira mais, pour l’instant, nos autorités sont plus occupées à signer des partenariats avec Microsoft, voire se laisser instrumentaliser pour leur communication d’entreprise, qu’à vraiment essayer de développer l’innovation et l’ouverture.

Snap!

Une alternative à Scratch existe depuis longtemps, elle s’appelle Snap!. Il est possible de la tester sur le serveur mis à disposition par Abulédu. Un gros avantage est que tout fonctionne avec un navigateur web et utilise des logiciels libres. Inutile de devoir utiliser ce que Richard Stallman qualifie, à raison, de « malware » : Flash (voir sa conférence transcrite par le groupe Transcriptions de l'April). Snap! est sous licence libre (GNU Affero General Public License).
Lors d’échanges sur la liste de diffusion du groupe éducation de l’April, un intervenant a signalé : « J'ai l'impression que Snap! est beaucoup plus riche, évolutif et "libre" que Scratch. Il y a un github qui paraît très actif . Il suffit de télécharger le fichier master.zip, de le dézipper et il fonctionne "out of the box", cela me semble lever les réticences autour de Scratch et cela semble fonctionner de façon identique ». Un autre a ajouté : « La richesse de Snap! vient de la possibilité de créer ses propres blocks. Une nouvelle version est sortie il y a environ une semaine dans laquelle les objets sprites peuvent être des arguments de fonctions… Plus je l'utilise, plus je me dis que ses applications sont sans limite ». Enfin, une dernière intervenante souligne : « Quand je ne comprends pas quelque chose, je pose mes questions sur le forum Github dédié et les développeurs y répondent très vite ».
Logo Scratch
Pour information, Nathalie Carrié, enseignante de mathématiques, a présenté Snap! à l’IREM de la Réunion le 14 juin. Il devrait être possible de récupérer la présentation sur le site de cette institution. Une autre présentation est prévue aux RMLLd de Saint-Joseph de la Réunion entre le 7 et le 10 juillet.

Avec Snap!, il est possible de faire des appels HTTP ! Cela ouvre des possibilités intéressantes d’un point de vue pédagogique sur le fonctionnement du Web. Autre fonctionnalité intéressante, on peut également exécuter du code JavaScript, il y a un bloc spécial pour cela. On peut donc mélanger code visuel et code texte. Cela semble une bonne manière pour faire la transition entre les deux : on commence à apprendre les blocs et petit à petit on peut se mettre à la programmation texte. Et on peut choisir le mode qui est le plus adapté suivant ce que l’on souhaite faire. Autre avantage : cela ouvre de nouvelles possibilités d’extension.

Toujours selon un intervenant de la liste, « Snap! a vraiment beaucoup plus de possibilités que Scratch. Surtout en termes de blocs disponibles. C'est plus riche et on peut faire des choses un peu plus complexes qu'avec Scratch. Il me semble que c'est une volonté de l'équipe de développeurs de Scratch de ne pas trop en mettre pour ne pas "noyer" les scratcheurs, ce qui peut se défendre mais cela fait qu'il manque des choses essentielles, comme par exemple la possibilité de définir des blocs qui renvoient quelque chose (ce qu'on peut faire avec Snap!). Personnellement je préfère un outil qui offre plus de possibilités quitte à ce que chacun pioche uniquement ce qu'il a envie d'utiliser et à son rythme. Par contre, l'avantage de Scratch version online est le partage en ligne, le remix, les studios, etc. (mais tout le monde n'a pas forcément besoin de ça). Bémol, je viens de voir qu'avec Snap! on pouvait enregistrer ses projet en ligne et soit les garder privés soit les rendre publics, dans ce cas un lien permet d'y accéder. Par contre j'ai l'impression qu'il n'y pas de page "profil" où on pourrait voir tous les projets de quelqu'un et les remixer (comme avec Scratch). »

Un autre intervenant a eu la chance de discuter avec le créateur de Snap! Jens Mönig lors du dernier colloque Robotique et Education. Les démos qu'il a faites sur les dernières fonctionnalités étaient remarquables. On ne voit plus les limites du logiciel.
Selon le créateur de Snap!, il y a différents niveaux d'accès :

  • "low floor" -> accessible très facilement au plus grand nombre
  • "no ceiling" -> on peut faire des choses très, très complexes (cf lambda calcul)
  • "wide walls" -> plein d'approches différentes sont possibles.

À noter qu'un atelier sur Snap! aura lieu lors des prochaines journées de l'APMEP à Lyon en octobre. Le nom de ce atelier est « Robotique au lycée avec le robot PoppyErgo ».

Un participant signale : « Par contre, il y a quelque chose qui me manque dans les deux, c'est la possibilité de travailler à plusieurs sur un même projet. »

Dans Snap! , il est possible d’avoir des lutins/scènes en vectoriel (SVG…) comme dans Scratch. Il suffit de les glisser-déposer dans la zone des costumes. Par contre à la différence de Scratch il n'est pas possible de dessiner et de modifier des lutins en vectoriel. Il n'y a pas non plus d'outil texte afin de créer un lutin qui contient du texte.

D’un point de vue technologique, en se basant sur Flash, Scratch 2.0 s’était engagé dans une impasse. Scratch 3.0 cherche à en sortir en se basant uniquement sur des standards Web. Les développeurs de Snap! ont, eux, choisi ces technologies dès le départ. Cependant, ils ont également fait un choix technologique structurant qui risque d’être un frein pour le développement de Snap!. En effet, Snap! redessine tout dans un canvas au lieu d’utiliser des objets "HTML" (DOM pour être plus précis). Les développeurs ont donc dû recoder tout ce qui est rendu graphique de l’interface au lieu de se reposer sur les moteurs de rendu efficaces des navigateurs, ce qui est une grande perte d’énergie et une grosse contrainte pour les futurs dévelopements.

Création d’un fichier exécutable à partir d’un projet Snap!

Il existe aussi la possibilité de créer un exécutable à partir d’un projet Snap!. Pour cela, il suffit d’exporter le projet en XML, puis de suivre ce lien. Ensuite on y charge le XML, on sélectionne la plateforme et cela produit un fichier zip qu’il suffit de décompresser pour utilisation. Cette fonctionnalité a vraiment été appréciée. Selon un animateur d’ateliers : « C’est une demande qu’on a régulièrement de la part des enfants lors de nos ateliers : certains veulent pouvoir donner leurs jeux à leur entourage sans forcément avoir à passer par un site ».

Arduino

On peut interfacer les cartes Arduino avec Snap!. Voir sur le site de S4A (Scratch for Arduino) (licence GNU GPL et MIT). Pour connecter d’autres matériels, voir la section "Use devices with Snap!:" du site officiel de Snap!

Si vous souhaitez aussi participer ce type de discussions, profiter des échanges ou peaufiner votre activité de veille, alors rejoignez le groupe de travail éducation de l'April, en vous inscrivant à la liste de discussion (cette inscription est ouverte à tout le monde)