Utilisateur:Jibe74/Brouillon

Une page de Wikipédia, l'encyclopédie libre.

Snap!
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
Typage Dynamique
Influencé par Scratch, Scheme, Logo
Licence AGPL
Site web https://snap.berkeley.edu

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é[8] et qui n'est pas disponible sur toutes les plateformes (très mal supporté sous Linux, et absent sur IOS[9],[10] et de plus en plus abandonné par les grands sites de vidéo, dont daylimotion et youtube[11]. De là est né Snap![12], la version 4 de BYOB, autonome et totalement basée sur HTML5 et javascript[13],[14], 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[15] et évalué par un magazine en ligne destiné aux programmeurs[16]. En France, il a été également évalué par l'Académie de Poitiers[17].

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

Capable de fonctionner sur n'importe quel navigateur Internet 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[18].

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. 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.

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).

Fonctionalités[modifier | modifier le code]

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[19]
  • 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[20].

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

Il est possible de transformer un projet Scratch vers Snap![21] 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[22] 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]

Reference Manual
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. Il est disponible (en anglais malheureusement... pour le moment[Note 1]) sur le site de l'Université de Berkeley[18].

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]

Notes[modifier | modifier le code]

  1. Vous pouvez me contacter pour m'encourager ou m'aider à le traduire.

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

Catégorie:Langage de programmation