Scratch est un langage de programmation visuel de haut niveau basé sur des blocs et un site Web destiné principalement aux enfants en tant qu'outil éducatif, avec un public cible de 8 à 16 ans. Les utilisateurs du site peuvent créer des projets sur le site Web à l'aide d'une interface de type bloc. Scratch a été conçu et conçu grâce à des subventions collaboratives de la National Science Foundation accordées à Mitchel Resnick et Yasmin Kafai . Scratch est développé par le MIT Media Lab et a été traduit dans plus de 70 langues, étant utilisé dans la plupart des régions du monde. Scratch est enseigné et utilisé dans les centres périscolaires, les écoles et les collèges, ainsi que dans d'autres institutions publiques du savoir. Au 15 février 2023, les statistiques communautaires sur le site Web officiel du langage montrent plus de 123 millions de projets partagés par plus de 103 millions d'utilisateurs et plus de 95 millions de visites mensuelles sur le site Web. Au total, plus d’un milliard de projets ont été créés (y compris les projets non partagés), le site atteignant son 1 000 000 000e projet en avril 2024.
Scratch tire son nom d'une technique utilisée par les disc-jockeys appelée « scratching », où des disques vinyles sont clipsés ensemble et manipulés sur une platine pour produire différents effets sonores et musicaux. Comme le scratching, le site Web permet aux utilisateurs de mélanger différents médias (y compris des graphiques, du son et d'autres programmes) de manière créative en créant et en « remixant » des projets, comme des jeux vidéo , des animations , de la musique et des simulations .
Scratch 3.0
Interface utilisateur

L'interface Scratch est divisée en trois sections principales : une zone de scène , une palette de blocs et une zone de codage pour placer et organiser les blocs dans des scripts qui peuvent être exécutés en appuyant sur le drapeau vert ou en cliquant sur le code lui-même. Les utilisateurs peuvent également créer leurs propres blocs de code, qui apparaîtront dans la section « Mes blocs ».
La zone de scène présente les résultats (par exemple, les animations , les graphiques de tortue , soit en taille petite ou normale, avec une option plein écran également disponible) et les vignettes de tous les sprites répertoriées dans la zone inférieure. La scène utilise les coordonnées x et y , 0,0 étant le centre de la scène.
Avec un sprite sélectionné en bas de la zone de préparation, des blocs de code peuvent être appliqués en les faisant glisser de la palette de blocs vers la zone de codage. L'onglet Costumes permet aux utilisateurs de modifier l'apparence du sprite avec un éditeur vectoriel et bitmap afin de créer divers effets, y compris l'animation. L'onglet Sons permet d'attacher des sons et de la musique à un sprite.
Lors de la création de sprites et d'arrière-plans, les utilisateurs peuvent dessiner leurs propres sprites manuellement, choisir un sprite dans la bibliothèque ou télécharger une image.
Le tableau ci-dessous présente les catégories de blocs de programmation :
Édition hors ligne

Un « éditeur de bureau » hors ligne pour Scratch 3.0 est disponible pour Microsoft Windows 10 et versions ultérieures dans le Microsoft Store, macOS d'Apple, ChromeOS et Android ; cela permet la création et la lecture de programmes Scratch hors ligne. L'éditeur hors ligne peut également être téléchargé dans les versions précédentes, telles que Scratch 2.0 et Scratch 1.4 (une archive des anciennes versions est disponible ici).
Extensions
Dans Scratch, les extensions ajoutent des blocs et des fonctionnalités supplémentaires qui peuvent être utilisés dans les projets. Dans Scratch 2.0, les extensions étaient toutes basées sur le matériel et Pen était une catégorie normale. Des extensions basées sur le logiciel ont été ajoutées dans Scratch 3.0, telles que les voix de synthèse vocale, ainsi que de nouvelles extensions basées sur le matériel comme le micro:bit . Les extensions sont répertoriées ci-dessous.

Physique
- LEGO Mindstorms EV3 – Contrôlez les moteurs et recevez les données des capteurs du Lego Mindstorms EV3
- Makey Makey – Utilisez Makey Makey pour contrôler les projets
- LEGO Education WeDo 2.0 – contrôlez les moteurs et recevez les données des capteurs du Lego WeDo
- micro:bit – Utilisation d'un micro:bit pour contrôler des projets
- LEGO BOOST – Donnez vie à vos créations robotiques
- Go Direct Force & Acceleration – Détectez la traction, la poussée, le mouvement et la rotation
Numérique
La plupart des extensions numériques de Scratch 3.0 étaient auparavant des catégories de blocs classiques qui ont été déplacées vers la section des extensions pour réduire l'encombrement. Il s'agit notamment de :
- Musique – Jouez des instruments numériques (batteries, trompettes, violons, pianos, etc.). Précédemment dans la catégorie Son.
- Stylo – Dessinez sur la scène avec une variété d'épaisseurs et de couleurs. Auparavant une catégorie de bloc normale.
- Détection vidéo – Détectez les mouvements avec la caméra. Précédemment dans la catégorie Détection.
De nouvelles extensions numériques ont également été ajoutées en collaboration avec des entreprises commerciales. Il s'agit notamment de :
- Texte en parole – Convertit les mots d’un texte en sortie vocale (variété de voix, fournies par Amazon)
- Traduire – Utilise Google Translate pour traduire du texte d'une langue vers plusieurs autres langues, notamment l'arabe, le chinois, le néerlandais, l'anglais, le français, le grec, le norvégien et le japonais
- Makey Makey – Options pour mieux appuyer sur les touches et appuyer sur plusieurs touches dans l'ordre. Vous pouvez saisir un bloc de jonction si vous souhaitez plus de contrôle sur l'extension.
Un article publié en 2019 par NYU soutient et illustre, pour le codage de la musique avec Scratch, « que les blocs de musique et de son tels qu'ils sont actuellement implémentés dans Scratch peuvent limiter et frustrer la création musicale significative pour les enfants, la base d'utilisateurs principale de Scratch. »
Laboratoire Scratch
Le Scratch Lab présente les expériences de l'équipe Scratch, destinées à déterminer si de nouvelles fonctionnalités peuvent être ajoutées au site Web complet à l'avenir. Les fonctionnalités expérimentales actuellement en cours de développement comprennent :
- Sprites vidéo – Remplissez les sprites avec une vidéo en direct.
- Détection du visage – Créez des costumes animés et des jeux qui interagissent avec votre visage.
- Texte animé – Donnez vie aux mots avec des couleurs, des polices et des animations.
Communauté d'utilisateurs

Scratch est utilisé dans de nombreux contextes différents : écoles, musées , bibliothèques , centres communautaires et foyers. Scratch est conçu principalement pour les utilisateurs âgés de 8 à 16 ans, mais il est utilisé par tous les âges et dispose d'une base d'utilisateurs adultes importante depuis 2009. Cette large diffusion a créé de nombreuses communautés environnantes, à la fois physiques et numériques. En avril 2020, le classement Tiobe des langages de programmation mondiaux incluait Scratch dans le top 20. Selon Tiobe, il y a 50 millions de projets écrits en Scratch, et chaque mois, un million de nouveaux projets sont ajoutés.
Utilisateurs éducatifs
Scratch est utilisé comme langage d'introduction car la création de programmes intéressants est relativement facile et les compétences acquises peuvent être appliquées à d'autres langages de programmation tels que Python et Java .
Scratch ne sert pas uniquement à créer des jeux. Grâce aux éléments visuels fournis, les programmeurs peuvent créer des animations, du texte, des histoires, de la musique, des œuvres d'art et bien plus encore. Il existe déjà de nombreux programmes que les étudiants peuvent utiliser pour apprendre des sujets en mathématiques, en histoire et même en photographie. Scratch permet aux enseignants de créer des leçons conceptuelles et visuelles et des travaux pratiques scientifiques avec des animations qui aident à visualiser des concepts difficiles. Dans le domaine des sciences sociales, les instructeurs peuvent créer des questionnaires, des jeux et des tutoriels avec des éléments interactifs. L'utilisation de Scratch permet aux jeunes de comprendre la logique de la programmation et de savoir comment construire et collaborer de manière créative.
Scratch est enseigné dans plus de 800 écoles et 70 collèges de l' organisation DAV en Inde et dans le monde entier.
Dans l'enseignement supérieur, Scratch est utilisé pendant la première semaine du cours d'introduction à l'informatique CS50 de l'Université de Harvard .
Communauté en ligne


Les utilisateurs de Scratch sont appelés « Scratchers ». Les Scratchers ont la possibilité de partager leurs projets et de recevoir des commentaires. Les projets peuvent être téléchargés directement depuis l'environnement de développement sur le site Web de Scratch et tout membre de la communauté peut consulter et télécharger le code source complet pour l'étudier ou le remixer dans de nouveaux projets. Les Scratchers peuvent également créer des studios de projets, commenter, mettre en favoris et « aimer » les projets des autres, suivre d'autres membres pour voir leurs projets et leurs activités et partager des idées. Les projets vont des jeux et animations aux outils pratiques. De plus, pour encourager la création et le partage entre les utilisateurs, le site Web organise fréquemment des défis « Scratch Design Studio ».
L'équipe Scratch du MIT veille à ce que cette communauté maintienne un environnement convivial et respectueux pour tous.
Les enseignants disposent de leur propre communauté en ligne appelée ScratchEd, développée et soutenue par la Harvard Graduate School of Education. Dans cette communauté, les enseignants Scratch partagent des histoires, échangent des ressources et posent des questions.
Wiki Scratch
Le wiki Scratch est une ressource de support pour Scratch et des informations sur son site Web, son histoire et les phénomènes qui l'entourent. Bien qu'il soit soutenu par l'équipe Scratch (les développeurs de Scratch), il est principalement écrit par des utilisateurs de Scratch (les Scratchers) et est hébergé indépendamment du site Web principal de Scratch. Il existe d'autres wikis dans d'autres langues que l'anglais disponibles sur le domaine de base du wiki Scratch.
Rôles
Les rôles sont affichés sous forme d'étiquette sous le nom d'utilisateur d'un utilisateur sur les pages de profil et sur les messages du forum. Pour éviter le vandalisme , les nouveaux comptes ont le rôle « Nouveau Scratcher », par opposition au rôle habituel « Scratcher ». Certaines restrictions sont imposées aux comptes New Scratcher, notamment l'impossibilité d'utiliser les données cloud et une période de refroidissement minimale de 30 secondes entre la publication de commentaires. Après une période d'interaction et de création de projets, un compte sera éligible pour obtenir le rôle Scratcher.
Les modérateurs et développeurs officiels de Scratch sont étiquetés comme faisant partie de la « Scratch Team » et ont généralement un astérisque à la fin de leur nom d'utilisateur. Le site dispose également de types spéciaux de comptes pour les étudiants et les enseignants qui peuvent utiliser Scratch en classe.
Censure
En août 2020, GreatFire a annoncé que le gouvernement chinois avait bloqué l'accès au site Scratch. À l'époque, on estimait que plus de trois millions de personnes en Chine l'utilisaient. Le média a cité le fait que Macao , Hong Kong et Taiwan étaient répertoriés comme pays sur le site Web. Ils contiennent également l'Abkhazie , le Somaliland , l'Ossétie du Sud et les îles Féroé , mais ils ne semblent apparaître que dans les statistiques Scratch dans la section Scratchers Worldwide, et personne n'a créé de compte dans ces pays.
Base de code
Le code source de l'éditeur de projet dans les trois versions principales, ainsi que la majorité du site Web actuel, sont hébergés publiquement sur GitHub dans divers référentiels . Scratch 3.0 est basé sur JavaScript , 2.0 est programmé en ActionScript , et les versions 1.x étaient basées sur Squeak, qui est lui-même basé sur Smalltalk -80.
2.0 disposait d'un interpréteur expérimental basé sur JavaScript qui était développé parallèlement à la version ActionScript.
Dans la version 3.0, les blocs Scratch sont implémentés à l'aide de Blockly , une bibliothèque JavaScript développée par Google pour créer des langages de programmation visuels basés sur des blocs .
Le 13 mai 2014, un an après la sortie de Scratch 2.0, un développeur a annoncé sur les forums Scratch que Scratch 2.0 deviendrait open source.
Événements
Les enseignants Scratch peuvent se réunir en personne lors des rencontres Scratch Educator Meetups. Lors de ces rassemblements, les enseignants Scratch apprennent les uns des autres et partagent des idées et des stratégies qui favorisent la créativité informatique.
Une « Semaine Scratch », autrefois connue sous le nom de « Journée Scratch », est déclarée chaque année en mai. Les membres de la communauté sont encouragés à organiser un événement autour de cette journée, grand ou petit, qui célèbre Scratch. Ces événements sont organisés dans le monde entier et une liste est disponible sur le site Web de la Journée Scratch. La Semaine Scratch est une série axée sur les activités Scratch sur le site Web Scratch.
Chaque 1er avril , l'équipe Scratch fera des farces aux utilisateurs et ajoutera des œufs de Pâques, un exemple étant que tous les blocs d'événements dans les projets se transforment en versions chat des mêmes blocs.
Histoire
Au début des années 2000, le groupe Lifelong Kindergarten (LLK) du MIT Media Lab développait des langages de programmation visuels destinés aux enfants. En 2003, Mitchel Resnick , Yasmin Kafai et John Maeda ont reçu une subvention de la National Science Foundation pour le développement d'un nouvel environnement de programmation permettant aux enfants de s'exprimer avec du code. Le LLK, dirigé par Mitchel Resnick, en partenariat avec l'équipe de Yasmin Kafai à l'UCLA, a travaillé en étroite collaboration avec les Computer Clubhouses de Boston et de Los Angeles pour développer Scratch, en fondant sa conception sur les pratiques et la dynamique sociale de ces centres de jeunesse après l'école. Il a commencé comme un langage de programmation de base, sans catégories étiquetées et sans drapeau vert. Similaire à AgentSheets Scratch a utilisé des concepts de programmation tactile connus plus tard sous le nom de programmation par blocs. Scratch a été créé dans le but d'apprendre aux enfants à programmer.
La philosophie de Scratch encourage le partage, la réutilisation et la combinaison de code, comme l'indique le slogan de l'équipe, « Imaginez, programmez, partagez ». Les utilisateurs peuvent créer leurs propres projets ou choisir de « remixer » le projet de quelqu'un d'autre. Les projets créés et remixés avec Scratch sont sous licence Creative Commons Attribution-Share Alike License . Scratch attribue automatiquement le crédit à l'utilisateur qui a créé le projet et le programme d'origine dans la partie supérieure de la page du projet.
Scratch a été développé à partir d'une interaction continue avec les jeunes et le personnel des centres informatiques. L'utilisation de Scratch dans les centres informatiques a servi de modèle à d'autres centres périscolaires, démontrant comment les environnements d'apprentissage informels peuvent soutenir le développement de la maîtrise technologique.
Scratch 2.0 est sorti le 9 mai 2013. La mise à jour a changé l'apparence du site et a inclus à la fois un éditeur de projet en ligne et un éditeur hors ligne. Des blocs personnalisés peuvent désormais être définis dans les projets, ainsi que plusieurs autres améliorations. L'éditeur hors ligne Scratch 2.0 peut être téléchargé pour Windows, Mac et Linux directement à partir du site Web de Scratch, bien que la prise en charge de Linux ait été abandonnée par la suite. La version mobile non officielle devait être téléchargée à partir des forums Scratch.

Scratch 3.0 a été annoncé pour la première fois par l'équipe Scratch en 2016. Plusieurs versions alpha publiques ont été publiées entre cette date et janvier 2018, après quoi les versions pré-bêta « Preview » ont été publiées. Une version bêta de Scratch 3.0 a été publiée le 1er août 2018. pour une utilisation sur la plupart des navigateurs ; à l'exception notable d' Internet Explorer .
Scratch 3.0, la première version 3.x, est sortie le 2 janvier 2019. Le 28 juin 2023, l'en-tête et les liens sur le site Web de Scratch sont passés du bleu au violet, et de nouvelles couleurs de blocs à contraste élevé en option ont été introduites, pour rendre le site plus facile à lire et à utiliser pour les personnes daltoniennes.
Le 11 mars 2019, Scratch s'est séparé du MIT Media Lab .
Types de fichiers
Dans Scratch 1.4, un fichier *.sb était le format de fichier utilisé pour stocker les projets.
Un fichier *.sb est divisé en quatre sections :
- "header", cet en-tête de 10 octets contient la chaîne ASCII "ScratchV02" dans les versions supérieures à Scratch 1.2 et "ScratchV01" dans Scratch 1.2 et inférieur
- « infoSize » encode la longueur des infoObjects du projet. Un entier big-endian de 4 octets de long et 32 bits .
- "infoObjects", une section de données au format dictionnaire. Elle contient : "thumbnail", une miniature de l'étape du projet ; "author", le nom d'utilisateur du créateur du projet ; "comment", les notes du projet ; "history", le journal de sauvegarde et de téléchargement ; "scratch-version", la version de Scratch utilisée pour sauvegarder le fichier ;
- « contenu », une table d'objets avec la scène comme racine. Tous les objets du programme sont stockés ici sous forme de références.
Scratch 2.0 utilise le format de fichier *.sb2. Il s'agit de fichiers zip contenant un fichier .json ainsi que le contenu du projet Scratch, y compris les sons (stockés au format .wav) et les images (stockées au format .png). Chaque type de fichier, à l'exception du fichier project.json, est stocké sous forme de numéro, commençant à 0 et augmentant à chaque fichier supplémentaire. Le fichier image étiqueté « 0.png » est toujours une image blanche de 480x360, mais « 0.wav » sera toujours le fichier non supprimé le plus ancien.
La version expérimentale de ScratchX utilisait le format de fichier .sbx.
Scratch 3.0 utilise le format *.sb3, qui est très similaire à *.sb2, la seule différence étant le son.
Versions plus anciennes
Bien que le site Web principal de Scratch ne fonctionne désormais que dans la version actuelle (Scratch 3.0), les éditeurs hors ligne de Scratch 2.0 (et de Scratch 1.4) sont toujours disponibles en téléchargement et peuvent être utilisés pour créer et exécuter des jeux localement. Il est toujours possible de télécharger des projets depuis le lanceur Scratch 2.0, qui sont immédiatement convertis en Scratch 3.0 lorsqu'ils sont téléchargés sur le site principal. Il existe également une version hors ligne de Scratch 3.0.
Technologie
L'éditeur de Scratch 1.4 et des versions antérieures a été écrit en Squeak , tandis que son visualiseur de projet en ligne a été écrit en Java , et un lecteur écrit en Adobe Flash a été ajouté ultérieurement. Scratch 2.0 s'appuyait sur Adobe Flash pour la version en ligne et sur Adobe AIR pour l'éditeur hors ligne. Ces derniers sont tombés en disgrâce et Adobe a abandonné leur prise en charge à la fin de 2020.
Interface

Dans Scratch 2.0, la zone de travail se trouve sur le côté gauche, avec la palette des blocs de programmation au milieu et la zone de codage sur la droite. Les extensions se trouvent dans la section « Plus de blocs » de la palette.
La version Web de Scratch 2.0 a introduit la sauvegarde automatique des projets.
La palette de blocs dans Scratch 2.0 est composée de sections discrètes qui ne peuvent pas défiler de l'une à l'autre ; le tableau ci-dessous montre les différentes sections :
Scratch 2.0 a introduit le sac à dos, qui peut être utilisé pour transférer des scripts, des sprites, des costumes et des sons entre les projets.
1.4 sons
Scratch 2.0 a modifié la manière dont les sons étaient importés, de sorte que de nombreux sons de Scratch 1.4 ont cessé de fonctionner. (Le fichier de projet a été modifié de *.sb à *.sb2).
Caractéristiques
Scratch utilise une programmation pilotée par événements avec plusieurs objets actifs appelés sprites . Les sprites peuvent être dessinés, sous forme de graphiques vectoriels ou bitmap , à partir de zéro dans un éditeur simple qui fait partie de Scratch, ou peuvent être importés à partir de sources externes. Scratch 3.0 ne prend en charge que les tableaux unidimensionnels , appelés « listes », et les scalaires à virgule flottante et les chaînes sont pris en charge, mais avec une capacité de manipulation de chaînes limitée. Il existe un fort contraste entre les puissantes fonctions multimédias et le style de programmation multithread et la portée plutôt limitée du langage de programmation Scratch.
Fonctionnalités de Scratch 2.0
Scratch 2.0 ne traite pas les procédures comme des structures de première classe et dispose d'options d'E/S de fichiers limitées avec le protocole d'extension Scratch 2.0, une fonctionnalité d'extension expérimentale qui permet l'interaction entre Scratch 2.0 et d'autres programmes. Le protocole d'extension permet l'interfaçage avec des cartes matérielles telles que Lego Mindstorms ou Arduino . Scratch 2.0 présente également les fonctionnalités suivantes :
- Commutation de bloc intelligente
- Menu de catégories à deux colonnes
- Ordre inverse des contrôles du projet
- Scène d'affichage sur le côté gauche
- Entrées de blocs carrés
- Éditeur compact
- Réduire les propriétés des sprites
- Thèmes Scratch 2.0
Instantané!(Construisez vos propres blocs)
Un langage de programmation visuelle plus avancé inspiré de Scratch est Snap ! , qui propose des procédures de première classe (leurs fondements mathématiques sont également appelés calcul lambda ), des listes de première classe (y compris des listes de listes) et des sprites véritablement orientés objet de première classe avec héritage de prototypage et des sprites imbriqués, qui ne font pas partie de Scratch. Snap ! (anciennement "BYOB") a été développé par Jens Mönig avec une documentation fournie par Brian Harvey de l'Université de Californie à Berkeley et a été utilisé pour enseigner le cours d'introduction "La beauté et la joie de l'informatique" en informatique pour les étudiants non spécialisés en informatique. Tous deux étaient membres de l'équipe Scratch avant de concevoir "Snap ! ".
Scratch Jr.
En juillet 2014, ScratchJr est sorti pour iPad et en 2016, ScratchJr pour Android. Bien que fortement inspiré par Scratch et codirigé par Mitch Resnick, il s'agit néanmoins d'une réécriture complète conçue pour les plus jeunes enfants, ciblant les enfants de 5 à 7 ans.
Modifications apportées par la communauté
En raison de la nature open source de Scratch, de nombreux forks et extensions de navigateur ont été créés par la communauté dans le but d'améliorer ou de modifier l'expérience utilisateur. ScratchTools et Scratch Addons sont quelques exemples d'extensions de navigateur open source qui ajoutent de nombreuses mises à niveau et de nouvelles fonctionnalités au site Web et à l'éditeur Scratch.
TurboWarp est un fork de l'éditeur Scratch 3.0 qui compile les blocs Scratch en code JavaScript lors de l'exécution d'un projet, ce qui signifie que les projets peuvent s'exécuter jusqu'à 200 fois plus rapidement, avec l'option 60 FPS, les résultats variant fortement en fonction du projet, des paramètres et des modules complémentaires. TurboWarp peut également exporter des projets vers des fichiers HTML5 autonomes , Bundle (macOS) et EXE .
Les utilisateurs peuvent également créer leurs propres extensions pour Scratch 3.0 en utilisant JavaScript. Bien que l'intention de Scratch 3.0 était de permettre aux utilisateurs de développer des extensions JavaScript non officielles, elle a été abandonnée en raison de risques de modération. En conséquence, le site officiel ne permet pas l'ajout d'extensions JavaScript, mais plusieurs modifications de Scratch le permettent.
Avant la version 2.0, un certain nombre de forks de Scratch ont été créés à l'aide du code source de Scratch 1.4. Ces programmes ne comprenaient généralement que quelques blocs supplémentaires non présents dans Scratch.