Scratch (langage)

Un article de Wikipédia, l'encyclopédie libre.

Scratch
Logo.
Interface de programmation de la version 3.0
Interface de programmation de la version 3.0

Date de première version 2006
Paradigmes Objet
Auteur Mitchel Resnick
Développeurs MIT Media Lab, Lifelong Kindergarten Group[1]
Dernière version 3.29.1 (22 février 2022)
Typage dynamique
Influencé par Logo, Smalltalk, HyperCard, StarLogo, AgentSheets (en), Etoys (en)
A influencé ScratchJr, Snap!
Écrit en JavaScript
Système d'exploitation Mac OS, Windows, Linux, Chrome OS, Android
Licence GPLv2 pour une version et Scratch Source Code License
Site web https://scratch.mit.edu/
Extension de fichier sb, sb2, sb3, sprite, sprite2 et sprite3Voir et modifier les données sur Wikidata

Scratch est un langage de programmation graphique[3] à but éducatif, manipulable et exécutable par le logiciel de même nom. Ainsi, Scratch est à la fois un environnement de développement, un moteur d’exécution du langage Scratch et un site web[4].

Ce dernier était initialement programmé en Smalltalk (et donc exécuté par Squeak). Il a été réécrit en ActionScript pour sa seconde version (et donc exécuté par Adobe Air ou dans le navigateur par Flash Player) puis en JavaScript pour la troisième version. Le code est sous licence libre, de plus en plus permissive au fur et à mesure des versions.

Le logiciel est traduit en 70 langues et le site web comptait plus de 115 millions d'utilisateurs enregistrés en , et près de 138 millions de projets partagés Septembre 2023[5]. Scratch s'est hissé parmi les 20 langages de programmation les plus populaires au monde, au cours de 2020, selon le classement Tiobe[6].

Présentation[modifier | modifier le code]

  • Scratch permet de modifier le code du programme en cours d'exécution.
  • Scratch est orienté multimédia avec pour objectif l'enseignement de l'univers informatique aux enfants ou aux débutants, il est basé sur la manipulation des objets dans la pure tradition des E-Toys (en) connus sous Squeak, tout comme les sons et les vidéos.
  • Scratch fonctionne grâce à un éditeur visuel, tout le code est directement inscrit dans la langue maternelle de l'utilisateur (plus de 70 langues sont disponibles, y compris l’espéranto) sous forme de briques en couleurs (par exemple les contrôles en jaune, les variables en orange, les mouvements en bleu). Il permet de mettre en œuvre visuellement des concepts de base de la programmation tels que les boucles, les conditions, les tests, les affectations de variables. Il faut cependant noter que ces couleurs ne sont pas les mêmes entre Scratch 2 et Scratch 3.
  • Scratch permet ainsi à l'enseignant de diffuser sa pédagogie au moyen de l'interactivité quasi-ludique des objets manipulés par ces briques logicielles. Le nom de Scratch provient du Turntablism, cet art de mélanger des sons grâce aux tables de mixage, comme cette vision de réutiliser des objets.
  • Scratch permet de rendre utilisable en ligne les projets réalisés, au moyen du plugin Adobe Flash Player lequel transforme les projets Scratch en applications web.
  • Le chat de Scratch, nommé Scratch-Cat, est la mascotte du site et le lutin par défaut qu'on trouve dans chaque projet au moment de sa création. Il a aussi un miaulement caractéristique qui est intégré parmi les sons du lutin par défaut des projets nouvellement créés.

Le slogan de Scratch est « Imagine, programme, partage ! » Slogan original (anglais) : « Imagine, Program, Share ».

Inconvénients du programme[modifier | modifier le code]

Scratch force l'appel de calculs parfois très complexes pour la simulation en 360°[7]. Le lecteur de projets est bloqué à 30 (ou 20) images par seconde en fonction de l'interface sur laquelle on fait tourner le projet.

Licence[modifier | modifier le code]

Le code du logiciel Scratch est publié, jusqu’à la version 1.3, sous la Scratch Source Code Licence (libre à l’exception du logo, de la marque et du système de téléversement sur le site web officiel)[8].

La version 1.4 ainsi que les versions de la branche 2.x sont publiées sous la licence libre GPL dans sa seconde version afin de permettre une diffusion plus large du logiciel, et notamment dans les distributions Linux[9]. Cependant, la seconde génération écrite en ActionScript nécessite un moteur d’exécution Flash propriétaire et n’est donc pas incluse dans les dépôts de distributions telles que Debian.

Le code de la troisième version, désormais écrite en JavaScript est disponible en licence BSD-3-clauses, à l’exception du projet Scratch-blocks[10]. Cette bibliothèque, co-écrite avec Google, est publiée sous la licence Apache 2.0, libre également[9]. Scratch 3.0 intègre également un éditeur de code visuel hors ligne accessible sur le site du MIT Media Lab[11].

Popularité[modifier | modifier le code]

Le , le site internet héberge 95 961 590 projets (animation, simulation 3D, jeux…) avec une croissance quotidienne de 81 338 en moyenne et comptait 84 824 685 utilisateurs, pour la plupart jeunes (12 ans), enregistrés[12].

Utilisation dans l'enseignement[modifier | modifier le code]

Environnement de programmation Scratch en langue française.

Les domaines d'utilisation de Scratch dépassent l'univers scolaire, mais une forte communauté d'enseignants, d'étudiants, de passionnés, exposent et partagent sur le site de Scratch leurs créations et leurs développements. Chaque projet publié sur la plateforme l'est sous licence Creative Commons « Attribution–Partage à l’identique » et peut donc être repris et modifié pour créer une version dérivée[13].

Scratch dans la réforme française du collège de 2015[modifier | modifier le code]

Avec la réforme des collèges en France de 2015 apparaissent les notions de codage et de programmation, et la plateforme d'apprentissage Scratch peut être utilisée dans ce cadre. Le sujet 0 du DNB, disponible sur Éduscol[14], contient d'ailleurs un exercice dont les questions portent sur des algorithmes réalisés avec Scratch[14], et depuis, chaque sujet en technologie comporte un exercice théorique sur Scratch [15].

Différents groupes académiques en mathématiques (au travers des travaux académiques mutualisés[16] et de l'appel à projet 2016), ainsi que des groupes d'IREM[17], diffusent des scénarios d'usages de Scratch pour l'enseignement.

Utilisation de Scratch dans les mathématiques au collège[modifier | modifier le code]

En mathématiques Scratch permet de travailler le repérage dans le plan (briques de mouvement : aller à, etc.) ainsi que l'orientation relative (briques de mouvement : avancer, tourner à droite, tourner à gauche, etc.) lors des déplacements des lutins, contrairement à ScratchJr qui fait travailler l'orientation absolue (briques de mouvement : haut - Nord ; droite - Est ; bas - Sud ; gauche - Ouest).

Scratch est particulièrement bien adapté pour répondre aux besoins des programmes de cycle 4 de 2018 de mathématiques concernant le « Thème E – Algorithmique et programmation » et en technologie concernant « L’informatique et la programmation »[18], mais moins en cycles 2 et 3, à cause de l'utilisation possible des nombres relatifs dans le repérage et les déplacements (cycle 4) ou d'angles en degré pour l'orientation des lutins (classe de 6e, dernière classe du cycle 3), pour lesquels ScratchJr est plus adapté[17].

Le site académique ÉduBase[19] présente de nombreux exemples d'usages de Scratch[20].

Censure en Chine[modifier | modifier le code]

Alors qu'il y était pourtant très populaire, les autorités chinoises interdisent l'accès au site de Scratch à partir du [21]. Selon les dernières estimations, au moins 3 millions de Chinois[22] utilisaient Scratch au moment de l'interdiction.

L'organisme responsable de la censure évoque « un contenu humiliant, faux et diffamatoire sur la Chine », citant en exemple le fait que Macao, Hong Kong et Taïwan soient listés comme des pays par le site américain[23].

Coder avec Scratch[modifier | modifier le code]

Différentes briques de codage[modifier | modifier le code]

Le langage Scratch est constitué de multiples briques (ou blocs) permettant d'exécuter une action précise.

Il existe neuf catégories de blocs différentes (classées par couleurs)[24], et des catégories de blocs peuvent être ajoutées (cette organisation est celle décrite ci-dessous depuis la version 3.0 du ) :

Blocs "classiques" :

Couleur                  
Catégorie Mouvement Apparence Sons Événements Contrôle Capteurs Opérateurs Variables Mes blocs

Catégories pouvant être ajoutées [25] :

Catégorie Couleur Ajouté sous Retiré sous
Musique   Scratch 3.0 (avant, dans la catégorie Sons)
Stylo   Scratch 3.0 (avant, dans la catégorie Stylo)
Détection vidéo   Scratch 3.0 (avant, dans la catégorie Capteurs)
Synthèse vocale   Scratch 3.0
Traduire   Scratch 3.0
Micro:bit   Scratch 3.0
Makey Makey   Scratch 1.0
Lego Mindstorms EV3   Scratch 3.0
Lego Boost   Scratch 3.0
LEGO Education WeDo 2.0   Scratch 3.0
Go Direct Force & Acceleration   Scratch 3.0
Pilotage robot Thymio [26],[27]   Scratch 3.0 Scratch 3.0
LEGO Education WeDo 1.0   Scratch 1.0 Scratch 3.0
PicoBoard   Scratch 1.0 Scratch 3.0

Extensions[modifier | modifier le code]

Scratch dispose d'extensions, c'est-à-dire de blocs qui communiquent avec le monde réel, comme les extensions du Raspberry Pi[28], des Lego WeDo[29] et permet de programmer le robot Thymio[30].

Ainsi, dans Scratch, les extensions ajoutent des blocs et des fonctionnalités supplémentaires qui peuvent être utilisés dans plusieurs types de projets.

Dans les versions 2.0 et 3.0, les extensions étaient toutes basées sur le matériel. Puis, des extensions logicielles ont été ajoutées dans Scratch 3.0, telles que la synthèse vocale, ainsi que de nouvelles extensions matérielles comme le micro:bit.

ScratchJr[modifier | modifier le code]

Bien qu'il soit fortement inspiré de Scratch et codirigé par Mitch Resnick, créateur initial de Scratch, ScratchJr est une réécriture complète de l'outil destinée aux plus jeunes (5-7 ans)[31],[32]. ScratchJr est sorti en sur iPad, avant d'être porté en 2016 pour les tablettes et smartphones sous Android puis sur ordinateur fixe macOS et Windows par une communauté open-source[33].

Wiki officiel de Scratch[modifier | modifier le code]

Scratch dispose d'un wiki officiel, disponible à cette adresse. D'abord géré par l'équipe à la tête de Scratch, le wiki a rapidement été laissé à la communauté. Il existait en plus d'une trentaine de langues en Septembre 2023, donc 8 classées comme officielles (Anglais, Allemand, Français, Japonais, Russe, Indonésien, Hongrois et Néerlandais).

Différentes versions[modifier | modifier le code]

  • Scratch 0.1 (2003) est la version initiale de Scratch. Cette version est disponible sur le wiki anglophone de Scratch[34]. La version 1.4 sera nécessaire pour l'exécuter.
  • Scratch 0.2 (2004) est la version qui suit la version 0.1. Cette version est également disponible sur le wiki de Scratch. L'interface de celle-ci est assez similaire à celle de la version 1.0. La version 1.4 sera nécessaire pour l'exécuter.
  • Scratch 1.0 (2007) est une version téléchargeable de Scratch. Cette version n'est pas disponible en ligne. La version 1.4 est la dernière publiée de la branche 1.x.
  • Scratch 2.0 (2013) était la version utilisée jusqu'au . Elle est disponible en ligne et hors-ligne. Les projets partagés par la communauté de Scratch sont codés dans ce langage.
  • Scratch 3.0 est la version actuelle de Scratch, disponible depuis le [35]. Scratch utilise HTML5 au lieu d'Adobe Flash Player. Scratch 3.0 prend en charge les extensions. Depuis le , le site est accessible aux mal-voyants[36].

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

  1. (en) Lifelong Kindergarten : Projects, Massachusetts Institute of Technology.
  2. « Scratch 3.0 is here! » (consulté le )
  3. « decouvrir-scratch ».
  4. « Site de Scratch » (URL), sur Scratch - Imagine, Program, Share.
  5. (en) « Community statistics at a glance », Site officiel MIT Media Lab (consulté le ).
  6. Pieterjan Van Leemputten, « Scratch parmi les 20 langages de programmation les plus populaires », sur Site-DataNews-FR, (consulté le ).
  7. « Minecraft 3D v9 on Scratch », il existe un jeu publié sur le site de Scratch permettant de simuler Minecraft en 360°, sur Scratch (consulté le ).
  8. (en) « Scratch Source Code License », Scratch Wiki (consulté le ).
  9. a et b (en) « Scratch Source Code », Scratch Wiki (consulté le ).
  10. « Scratch - Developers », sur scratch.mit.edu (consulté le ).
  11. (en) Scratch Desktop, MIT Media Lab.
  12. « Scratch Statistics » (consulté le ).
  13. (en) « Scratch Project License », Scratch Wiki (consulté le ).
  14. a et b « Actualités - DNB 2017 », Éduscol (consulté le ).
  15. « Pour les Éducateurs », sur Scratch Wiki Francophone (consulté le ).
  16. « 2015-2016 : algorithmique au collège et au lycée », sur site Mathématiques d'Éduscol (ministère de l'Éducation nationale), Éduscol (consulté le ).
  17. a et b « Ressources du groupe « L’apprentissage du code informatique à l’école et au collège » », sur Irem de Lorraine, université de Lorraine (consulté le ).
  18. « Programme du cycle 4 en vigueur à la rentrée 2020 », sur Éduscol (ministère de l'Éducation nationale) (consulté le ).
  19. « Édubase », sur edubase.eduscol.education.fr (consulté le ).
  20. « Résultats de la recherche : « scratch » », sur ÉduBase (ministère de l'Éducation nationale) (consulté le ).
  21. « "scratch" is 33% blocked/censored in China | GreatFire Analyzer », sur en.greatfire.org (consulté le ).
  22. « Scratch Statistics » (consulté le ).
  23. « La Chine interdit Scratch pour apprendre la programmation - Le Monde Informatique », sur LeMondeInformatique (consulté le ).
  24. « Scratch », sur scratch.mit.edu (consulté le ).
  25. « Scratch Wiki », sur fr.scratch-wiki.info (consulté le ).
  26. « Programmer Thymio avec Scratch », sur Thymio.org (consulté le ).
  27. « Contrôler un Thymio depuis Scratch avec AsebaScratch », sur Thymio.org (consulté le ).
  28. « Scratch », sur site officiel Raspberry Pi (consulté le ).
  29. « LEGO Education WeDo 2.0 », sur site officiel Scratch (consulté le ).
  30. « Programmez Thymio avec Scratch », sur site officiel Thymio (consulté le ).
  31. (en) « About ScratchJr », Site officiel (consulté le ).
  32. (en) Marina Umaschi Bers, « Coding and Computational Thinking in Early Childhood: The Impact of ScratchJr in Europe », European Journal of STEM Education, vol. 3, no 3,‎ , p. 08 (ISSN 2468-1954 et 2468-4368, DOI 10.20897/ejsteme/3868, présentation en ligne)
  33. « Scratch Jr for Desktop - Open Source Community Port », sur ScratchJr-Desktop (consulté le ).
  34. (en) Development of Scratch 1.0, Scratch Wiki.
  35. Alexandre Laurent, « Le logiciel de programmation graphique Scratch passe à la version 3.0 », Developpez.com, .
  36. « Changements d'accessibilité », Scratch Wiki Francophone (consulté le ).

Annexes[modifier | modifier le code]

Sur les autres projets Wikimedia :

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]