Scratch (langage)
langage de programmation
From Wikipedia, the free encyclopedia
Scratch est un langage de programmation graphique[6] à but éducatif, manipulable et exécutable par le logiciel du 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[7].
| Scratch | ||
Interface de programmation de la version 3.0 | ||
| Date de première version | 30 juin 2003[1],[2],[3] | |
|---|---|---|
| Paradigmes | impératif, événementiel[4] | |
| Auteur | Mitchel Resnick | |
| Développeurs | MIT Media Lab, Lifelong Kindergarten Group[5] | |
| Dernière version | 3.31.1 (23 janvier 2026) | |
| Typage | dynamique, faible | |
| Influencé par | Logo, Smalltalk, HyperCard, StarLogo, AgentSheets (en), Etoys (en) | |
| A influencé | ScratchJr, Snap! | |
| Écrit en | Squeak (Scratch 1.x) ActionScript (Scratch 2.0) HTML5, JavaScript (Scratch 3.0) |
|
| 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 sprite3 | |
| modifier |
||
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 en septembre 2023[8]. Scratch s'est hissé parmi les 20 langages de programmation les plus populaires au monde, au cours de 2020, selon le classement Tiobe[9].

Présentation
Le langage Scratch est principalement orienté impératif, événementiel mais aussi dans une moindre mesure multimédia et objet[4]. Un programme codé en Scratch est nommé un projet[10] et propose une interface graphique pré-implémentée simple d'utilisation. Scratch permet la manipulation d’éléments visuels ou sonores, comme les E-Toys (en) connus sous Squeak.
Le langage Scratch a la particularité d'être modifiable pendant l'exécution, aussi bien pour le code que pour les sons ou visuels d'un projet. Les projets peuvent être exécutés en ligne et hors-ligne.
Scratch est un langage graphique utilisant des blocs de code répartis dans diverses catégories définies par une couleur classifiant leurs effets (par exemple, en jaune, les événements, en vert les opérateurs et en orange les variables) ; et différentes formes en fonction de leur utilisation (déclencheur, code, instructions impératives, données et booléens)[11]. Il vise à initier enfants et débutants à l'univers informatique et la programmation. Pour ce faire, le site et le langage sont retranscrits dans plus de 70 langues et introduit plusieurs concepts de base de la programmation, tels que les boucles, les conditions ou les affectations de variables en plus d'être ludique à utiliser pour les plus jeunes[12].
Scratch propose aussi aux enseignants la possibilité de créer des classes en ligne[13].
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. La mascotte du site et langage, le chat de Scratch, nommé "ScratchCat", est la mascotte du site et le sprite par défaut dans chaque projet au moment nouvellement créé. 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 »")[14].
Inconvénients du programme
Interprété, le langage est très peu performant. Le lecteur de projets est bloqué à 30 (ou 20) images par seconde en fonction de l'interface sur laquelle le projet tourne. Ainsi, des calculs et méthodes performantes dans d'autres langages de programmation seront inefficaces en Scratch.
La programmation orientée objet, bien que possible, est rendue compliquée par l’absence de programmation fonctionnelle[4], absence qui peut toutefois être contournée via la programmation procédurale et des listes sans profondeur.
Licence
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).
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. 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[15]. Cette bibliothèque, co-écrite avec Google, est publiée sous la licence Apache 2.0, libre également. Scratch 3.0 intègre également un éditeur de code visuel hors ligne accessible sur le site du MIT Media Lab.
Popularité
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[16]. Le 12 avril 2024 , Scratch compte 161 865 388 projets et 133 615 079 utilisateurs.
Utilisation dans l'enseignement

Les domaines d'utilisation de Scratch dépassent l'univers scolaire, mais une 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.
Scratch dans la réforme française du collège de 2015
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[17], contient d'ailleurs un exercice dont les questions portent sur des algorithmes réalisés avec Scratch[17], et depuis, chaque sujet en technologie comporte un exercice théorique sur Scratch.
Différents groupes académiques en mathématiques (au travers des travaux académiques mutualisés[18] et de l'appel à projet 2016), ainsi que des groupes d'IREM[19][source insuffisante], diffusent des scénarios d'usages de Scratch pour l'enseignement.
Utilisation de Scratch dans les mathématiques au collège
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 adapté pour répondre aux besoins des programmes de cycle 4 de mathématiques concernant le « Thème E – Algorithmique et programmation » et en technologie concernant « L’informatique et la programmation »[20], mais son usage est plus restreint en cycles 2 et 3 en raison 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é[19].
Censure en Chine
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
Le langage Scratch est constitué de multiples blocs (ou briques) permettant d'exécuter une action précise.
Il existe neuf catégories de blocs différentes (classées par couleurs)[24][source insuffisante], 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 |
Extensions
Scratch dispose d'extensions, des catégories facultatives, comme les extensions du Raspberry Pi[25], des Lego WeDo[26] et permet de programmer le robot Thymio[27].
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.
| 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 | ✘ | |
| Reconnaissance faciale | Scratch 3.0 | ✘ | |
| Traduire | Scratch 3.0 | ✘ | |
| Micro:bit | Scratch 3.0 | ✘ | |
| Makey Makey | Scratch 3.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[28][source insuffisante] | Scratch 3.0 | Scratch 3.0 | |
| LEGO Education WeDo 1.0 | Scratch 2.0 | Scratch 3.0 | |
| PicoBoard | Scratch 2.0 | Scratch 3.0 |
Modifications
ScratchJr
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)[29],[30]. 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[31].
Communautaires
La communauté Scratch a développé de nombreuses extensions et modifications du langage ou encore de l'intérpréteur.
Scratch Addons
Scratch Addons est une extension navigateur non officielle de Scratch permettant de personnaliser l'expérience utilisateur du site web, et ajoute des outils développeurs à l'éditeur.
TurboWarp
TurboWarp est un site externe non affilé à Scratch proposant un lecteur compilant préalablement le projet et permettant de supprimer la plupart des limites du langage. Le lecteur de projet TurboWarp est ainsi plus performant que le lecteur officiel de plusieurs ordres de grandeur[32].
Historique des versions
- Scratch 0.1 (2003)[1],[2],[3] est la version initiale de Scratch. Cette version est disponible sur le wiki anglophone de Scratch. 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)[33] 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 [34]. 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.
- Interface de Scratch 2.0.
- Interface de Scratch 3.0
