Snap! (langage)

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir Snap.
Snap!
Image illustrative de l'article Snap! (langage)

Date de première version 2011
Paradigme Visuel, Éducation/enseignement, événementiel, objet
Auteur Brian Harvey, Université de Californie à Berkeley
Développeur Jens Mönig
Dernière version 4.0.6Voir et modifier les données sur Wikidata
Typage Dynamique
Influencé par Scratch, Scheme, Logo
Écrit en Squeak et JavaScriptVoir et modifier les données sur Wikidata
Licence AGPL
Site web https://snap.berkeley.edu
Extension de fichier ypr et yspVoir et modifier les données sur Wikidata

Snap! (le ! fait partie du nom) est un langage de programmation graphique et multisystème, conçu pour l'apprentissage de l'informatique et des mathématiques auprès d'élèves et de débutants. En imbriquant et en associant des blocs d'instructions élémentaires paramétrés, les étudiants créent des histoires, des animations ou des jeux qui s'exécutent ensuite à l'intérieur de leur navigateur Web.

Snap!, développé par l'université de Berkeley, est entièrement basé sur HTML5 et ne nécessite aucune installation de logiciel en local. C'est un logiciel libre sous licence AGPL.

Historique[modifier | modifier le code]

BYOB[1],[2] (Build Your Own Blocks, « construisez vos propres blocs ») a été développé conjointement par Jens Mönig[3] et Brian Harvey[4],[5] comme une extension de Scratch qui était utilisé à l'Université de Berkeley, en Californie, pour un cours intitulé « The Beauty and Joy of Computing[6] (la beauté et la joie de l'informatique) ». Selon Brian Harvey[7], Scratch pourtant dérivé de Logo, a le gros défaut de ne pas intégrer la notion de procédure, et donc de récursion, idée centrale en informatique et également centrale dès le départ dans l'enseignement par Logo. De plus, son support des structures de données est faible.

BYOB, en s'inspirant de Scheme, lui-même inspiré de Logo, visait donc à compléter Scratch. Il s'installait par-dessus Scratch et lui apportait ce qui manquait cruellement, surtout bien sûr aux étudiants plus âgés de l'Université de Berkeley, mais pourquoi pas aux plus jeunes désireux de mieux appréhender les techniques de codage et les aborder de manière plus logique et efficace.

Scratch souffre aussi d'un autre défaut, celui d'être basé sur le logiciel Adobe Flash, très controversé et qui n'est pas disponible sur toutes les plateformes (très mal supporté sous Linux, et absent sur IOS[8] et de plus en plus abandonné par les grands sites de vidéo, dont Dailymotion et Youtube[9]. De là est né Snap![10], la version 4 de BYOB, autonome et totalement basée sur HTML5 et javascript[11],[12], donc indépendante de la plateforme puisqu'entièrement exécutée dans le navigateur web.

Publications officielles[modifier | modifier le code]

Snap! a été reconnu par la fondation Logo[13] et évalué par un magazine en ligne destiné aux programmeurs[14]. En France, il a été évalué par l'Académie de Poitiers[15] . Un article de fond sur la programmation visuelle lui est consacré sur le site de l'IREM de la Réunion [16].

Compatibilité et intéropérabilité[modifier | modifier le code]

Capable de fonctionner sur n'importe quel navigateur Web compatible HTML5 et supportant javascript, ce qui est le cas de la majorité d'entre eux actuellement, Snap! Ne nécessite aucune installation et fonctionne immédiatement sur tous types de systèmes et appareils, y compris sur les tablettes utilisées par plusieurs écoles.

Les blocs et les projets développés avec Snap peuvent être enregistrés localement dans un fichier XML, qui pourra ensuite être repris sur n'importe quel autre appareil et ré-importé dans un nouveau projet. Un bloc peut ainsi facilement être utilisé par plusieurs projets[17].

Interface utilisateur[modifier | modifier le code]

Interface utilisateur de Snap!
L'interface utilisateur de Snap! ressemble beaucoup à celle de Scratch avant la version 2.

Elle est semblable à celle de Scratch (avec la disposition d'avant la version 2) et l'utilisation est la même, avec 39 langues disponibles. Elle existe toutefois en deux versions qui ne diffèrent que par le nombre d'instructions et fonctions de base. La version simplifiée est destinée aux débutants et utilisateurs de Scratch, tandis que la version étendue propose pour les utilisateurs avancés plus d'instructions et fonctions de base, qui peuvent certes être créées avec l'interface simplifiée, mais qui sont ainsi mises directement à disposition.

Comme pour Scratch, il est possible d'enregistrer son projet sur le site (ici, ce sera bien sûr le serveur de l'Université de Berkeley) après avoir créé un compte. Chaque projet peut soit rester confidentiel, soit être ouvert à tous. Un projet peut aussi être exporté au format XML et enregistré localement sur le poste de l'utilisateur.

Puisque Snap! ne nécessite aucune installation, il est possible de la voir et l'utiliser directement sur le site consacré à cet effet (voir les liens externes ou utiliser l'un de ceux des interfaces mentionnées ci-dessus).

Fonctionnalités[modifier | modifier le code]

Couverture du manuel
Image extraite du manuel de la version 3.1 illustrant la facilité qu'apporte Snap! à l'utilisation d'objets de première classe et leur intérêt

Les principales caractéristiques qui différencient Snap! de Scratch sont :

  • La programmation orientée objet
  • Les données de première classe
  • Les listes de première classe
  • Les sprites (lutins) de première classe[18]
  • Les procédures de première classe

Cela apporte des particularités appréciées même des plus jeunes ou plus débutants, par exemple le fait de pouvoir scinder un lutin en plusieurs parties pour l'animer, comme on peut le voir sur dans le projet "hélicoptère" de l'Académie de Poitiers[19].

Conversion de Scratch vers Snap![modifier | modifier le code]

Il est possible de transformer un projet Scratch vers Snap[20]! Selon les projets, il peut parfois y avoir quelques petites adaptations à faire, mais elles sont généralement minimes. Et c'est un excellent moyen d'apprendre à mettre au point un projet !

Cette facilité permet d'évoluer facilement vers ce que certains n'hésitent pas à appeler un vrai langage, alors qu'ils considèrent Scratch comme un simple outil éducatif. La personnalité des auteurs de Snap! (Brian Harvey était un enseignant très attaché à transmettre ses connaissances et sa passion) fait qu'il n'a rien perdu de son caractère ludique et éducatif au passage.

Du projet à l'exécutable[modifier | modifier le code]

Il est également possible de transformer le projet en un programme exécutable[21] qui pourra fonctionner sur le système de son choix : Linux, Windows ou OSX. Comme on peut choisir de laisser le code visible, on peut donc retrouver une version hors ligne permettant de travailler sur son projet, tout en étant « jouable ».

Manuel de référence[modifier | modifier le code]

Manuel de référence
Manuel de référence de la version 4

Les auteurs ont pris le soin d'écrire un manuel de référence de 77 pages permettant de se familiariser aussi bien avec la manipulation des blocs qu'avec les nouveaux concepts apportés par Snap! par rapport à Scratch, sur le site de l'Université de Berkeley[17].

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]

Notes[modifier | modifier le code]

Notes et références[modifier | modifier le code]