Scratch peut même faire le noyau Linux

Est-il possible d’écrire un module Kernel dans Scratch, le langage de programmation basé sur des blocs utilisé principalement par les enfants ? C’est peut-être absurde, mais oui, c’est tout à fait possible !

Scratch est le langage de programmation original basé sur des blocs et reste le plus connu et le plus largement utilisé. Il a été inventé en 2003 au MIT pour rendre l’initiation des enfants au codage beaucoup plus fluide. Cela dit, la valeur éducative des langages basés sur le bloc par rapport au texte régulier est très débattue avec des arguments solides de part et d’autre.

J’ai rencontré le cas de l’utilisation de langages d’opinion basés sur du texte lors de l’examen de CodeGuppy, une plate-forme qui enseigne aux enfants (et aux adolescents et aux “adultes créatifs”) à coder en écrivant Javascript.

Les langages Visual Blocks tels que Scratch ont leurs propres mérites pour initier les très jeunes enfants au monde du coding. Cependant, notre opinion est que les enfants devraient passer dès que possible aux langages textuels. Un langage textuel aidera les enfants à développer non seulement de véritables compétences en codage, mais également d’autres compétences importantes telles que l’orthographe. Si les enfants des années 80 ont pu apprendre à coder en utilisant BASIC (un langage textuel écrit dans des éditeurs rudimentaires), nous pensons que les enfants contemporains peuvent également apprendre JavaScript en utilisant l’environnement avancé Codeguppy.

En outre, un récent rapport officiel de recherche effectué pour le gouvernement britannique a révélé que :

Les langages de programmation basés sur des blocs peuvent être utiles dans l’enseignement, car ils réduisent le besoin de mémoriser la syntaxe et sont plus faciles à utiliser. Cependant, ces langages peuvent inciter les élèves à développer certaines habitudes de programmation qui ne sont pas toujours utiles. Par exemple, une recherche à petite échelle de 2011 a mis en évidence 2 habitudes qui « sont en contradiction avec la pratique acceptée de l’informatique ».La première est que ces langages sont une approche ascendante de la programmation, qui se concentre sur les blocs du langage et non sur un algorithme plus large encourageant la conception. La seconde est qu’elles peuvent conduire à une approche fine de la programmation qui n’utilise pas les constructions de programmation acceptées ; par exemple, les élèves évitent “l’utilisation des structures les plus importantes : exécution conditionnelle et boucles bornées”.Ceci est problématique pour les élèves qui en sont aux premiers stades de l’apprentissage de la programmation, car ils peuvent transmettre ces habitudes à d’autres langages de programmation.

Des recherches plus poussées ont mis en évidence que, bien que les langages basés sur des blocs puissent aider les novices à surmonter les difficultés de syntaxe auxquelles ils peuvent être confrontés lors de l’apprentissage de la programmation, ils n’aident pas nécessairement les étudiants avec les difficultés sémantiques et conceptuelles. Il est donc important que, si les écoles utilisent des langues basées sur des blocs, elles réfléchissent à la manière de concevoir le programme pour atténuer ces écueils potentiels.

Du côté positif, les langages basés sur des blocs présentent les avantages suivants :

Puisqu’il est visuel, il est très facile à démarrer et très accessible ; il vous suffit de connecter les blocs visuels de manière logique. Ensuite, sa programmation sans syntaxe élimine l’encombrement pour permettre aux étudiants de se concentrer sur quelque chose d’utile tout en réduisant le il est temps de s’y atteler.

Mis à part les étudiants, il y a également eu des tentatives d’engager la programmation basée sur des blocs dans des efforts plus sophistiqués. Prenez par exemple BlocklySQL, un outil de programmation visuelle basé sur des blocs comme Scratch mais pour les étudiants SQL. L’avantage est que, bien qu’ils utilisent des blocs pour entrer dans SQL, ils peut alors voir, et également exporter, le SQL généré automatiquement afin d’apprendre la syntaxe réelle.

Le projet Scratchnative est allé encore plus loin. Prendre un projet Scratch et le convertir en C++ a permis à Scratch d’être utilisé pour écrire des modules du noyau, ce qui est au-delà de l’ordinaire.

L’objectif affiché du projet est de :

“Compiler le code scratch3 en exécutables natifs”.

En d’autres termes, il faut ceci

et le transforme en ceci

Pour travailler avec, vous devez d’abord créer le programme à l’aide de cmake, puis l’invoquer en tant que

scratch natif [OPTIONS] [INPUT]

Il existe également un wrapper Python qui peut télécharger le projet Scratch .sb3 et invoquer scratchnative.

Pour obtenir une image plus détaillée, téléchargeons le projet Scratch Linux Kernel Modules sur le site Web de Scratch, qui nous donne un “Scratch Linux Kernel Modules.sb3” dossier. En le renommant en .zip et en l’ouvrant, nous trouvons le fichier .json du projet qui décrit le projet, celui sur lequel scratchnative travaille. Avec cela, nous plongeons dans les rouages ​​du format scratch natif.

Ce qui est intéressant, c’est que nous pouvons observer les opcodes de scratch utilisés comme :

gratter4

Scratchnative prend actuellement en charge les opcodes suivants :

event_whenflagclicked
data_setvariableto
data_showvariable
opérateur_add
operator_substract
multiplier_opérateur
operator_divide
opérateur_lt
operator_equals
opérateur_gt
opérateur_et
opérateur_ou
operator_not
control_if
control_repeat
Fonctions C externes via procedures_call

Le “procedures_call” semble particulièrement intéressant…

Le développeur qui a construit scratchnative a même créé un système d’exploitation, ScratchOS, avec.

Bien que ces exemples aient peu de valeur pratique, ils servent de solide preuve de concept de ce qui est faisable à l’époque moderne des transpileurs ou des compilateurs croisés.

Est-ce la percée que les paradigmes à faible ou sans code attendaient pour atteindre un niveau de sophistication plus élevé, capable de construire des applications auparavant hors de portée, même dans le domaine de la programmation au niveau du système ?

Le temps nous le dira mais scratchnative a certainement ouvert la boite de Pandore…

scratchlogo

Plus d’information

Série d’examens UK Gov-Research : Informatique

scratch natif

scratch-linux-modules

ScratchOS

Modules de noyau Linux Scratch

Articles Liés

Grattez à 15 ans – Bon à savoir

Gratter pour ne pas être reniflé !

BlocklySQL – Programmation Visual SQL

CodeGuppy – Codage pour les enfants en Javascript

Scratch Back dans le Top 20 de l’indice TIOBE

Choix de livres de programmation pour le plaisir

Pour être informé des nouveaux articles sur I Programmer, inscrivez-vous à notre newsletter hebdomadaire, abonnez-vous au flux RSS et suivez-nous sur Twitter, Facebook ou Linkedin.

Bannière

pythondata

commentaires

ou envoyez votre commentaire à : comments@i-programmer.info

.

Leave a Comment