Étiquettes

, , ,

2014-02-10 16.27.43

J’utilise Scratch au quotidien, bien évidemment pour les ateliers mais aussi pour le plaisir. Ce fut d’abord, je dois l’avouer, un peu complexe. L’apprentissage de Scratch se révèle en effet moins instinctif quand on pratique déjà un ou plusieurs langages de programmation. Pour les enfants qui découvrent le concept, cela ne pose aucun problème.

Si Scratch simplifie grandement certaines opérations, il peut s’avérer plus difficile à appréhender dans d’autres domaines. Je me suis amusé récemment à créer un générateur de mots de passe en Scratch (nous y reviendrons). En Rebol, cela me prend en tout et pour tout 5 à 6 lignes de code, voire une ligne en optimisant au maximum. Avec Scratch, l’opération est moins évidente surtout quand on se pique d’y ajouter des options accessibles à l’utilisateur.

On m’a déjà fait plusieurs fois la remarque et posé la question : à quoi cela sert-il d’apprendre une méthode de programmation si celle-ci possède des limites et que l’on sait que, dans tous les cas, il faudra passer à autre chose par la suite ?

Soyons clairs : tous les langages ont leurs limites et certains sont plus appropriés que d’autres dans certains cas d’utilisation. Traiter automatiquement le langage avec du Perl par exemple paraît évident. Je ne m’y hasarderai pas en Javascript ou en Processing. Scratch a donc les siennes vis-à-vis de son champ d’application qui reste essentiellement l’apprentissage. Scratch n’est pas fait à la base pour désigner, créer de grandes applications. Il est par contre particulièrement efficace pour découvrir les méthodes de programmation et apprendre les algorithmes.

Alors que peut-on lui reprocher ? Son impossibilité d’interagir avec le web, ses faibles capacités dans le traitement des données et en particulier la gestion de « bases de données » réduites ici à leur plus simple expression. Scratch ne peut de même générer de fichiers, ce qui pourrait s’avérer utile notamment en termes de débugage. Pas de fichier donc en entrée ni en sortie. Qui plus est Scratch, il faut le reconnaître, est parfois plutôt lent et les animations ont tendance à « laguer » comme on dit dans le jargon informatique. Nous pourrions lui trouver encore plein d’autres défauts.

Mais… Mais j’adore Scratch et ces limites constituent en fait d’autant d’atouts que de contraintes. Car c’est bien sous l’angle de la contrainte positive qu’il faut les voir, sous l’angle du défi.

Scratch allie le coté instinctif « do it yourself » et la réflexion. Il amène en effet l’utilisateur à réfléchir énormément dès qu’il s’agit de contourner, de dépasser ces contraintes techniques. Au-delà du simple défi, on apprend à optimiser son code, à tirer parti de toutes les ressources offertes par le logiciel et la machine, à chercher la meilleure solution, la plus efficace, pour aboutir au but que l’on s’est fixé. Tout l’intérêt de Scratch est là. Scratch apprend les bases de la programmation mais aussi de l’optimisation (et indirectement de la gestion de projet). Faire les choses n’est pas toujours le plus difficile, faire les choses bien l’est beaucoup plus…