Débuter la programmation avec processing

Avez-vous déjà essayé de vous mettre à la programmation ? Peut-être avez-vous abandonné en cours de route, peut-être n’avez vous jamais essayé, peut-être avez-vous trouvé celà trop difficile ou trop ennuyant ? Cependant la société s’évertue à vouloir vous y intéresser. Si vous avez fait une école d’ingénieur, quelle que soit votre spécialisation, vous avez eu un cours de programmation. Maintenant même les écoles de commerce proposent des cours dans leur cursus. Mais on peut se demander de quelle programmation on parle… Dois-je apprendre le java, le SQL, le python, le HTML ..? Autant de noms et d’acronymes obscurs qui diluent l’information de ce qu’est la programmation. Si celà fait trop, que vous vous êtes déjà arrêté à l’importation du troisième paquet, laissez moi vous dire qu’il n’a jamais été aussi simple de se lancer et de débugger soi-même ses programme en utilisant l’aide de chatGPT. Pour vous lancer avant que vous codiez vos premiers algorithmes laissez moi vous parler de processing. Quel est ce procédé qui vous rendra accro à la programmation ? 

  • Obtenir des résultats immédiats qui vous donnent confiance en vos capacités

Quand je suis arrivé en école d’ingénieur, venait d’être inauguré le fablab avec le thème “arts numériques”, dirigé par un nouveau professeur Romain Astouric qui a donné cette fraîcheur au fablab comme quelque chose de nouveau et d’expérimental. (D’ailleurs les arts numériques  c’est vraiment son domaine et vous pouvez retrouver sa newsletter à https://futuranterieur.substack.com/ ). Un des premiers ateliers concernait processing. Moi qui ne connaissais rien à la programmation à part un rapide coup d’œil à openclassroom, j’ai été tout de suite bluffé. Pendant quelques semaines ce nouveau hobby est entré dans ma vie à côté de la boxe et des tractions dans le parc le midi. Je pouvais même coder sur mon téléphone et pour le coup emmener ce hobby dans le train ou en vacances. Une des première réalisation que j’ai faite était une modélisation du logo du fablab en 3d sur fond de voie lactée. J’étais fasciné par la géométrie 3d et l’implémentation d’une caméra permettant de visualiser tous ces vertexes sous différents angles. Mais ce n’était qu’une infinitésimale partie de ce qu’il est possible de faire avec processing. Et ce qu’il y a de vraiment  magique c’est que pour commencer à coder, à créer vos premiers arts graphiques/numériques, vous n’avez rien besoin d’importer, aucun code préalable à ajouter à votre fenêtre si ce n’est la fonction setup et la fonction draw. Celà allège considérablement la tâche qui incombe au développeur. Celui-ci doit se montrer créatif et c’est sa principale mission. En me plongeant dans la programmation web, j’ai été étonné par tous les morceaux de code préalable qu’il faut définir pour créer même un programme de base. Mais les enjeux sont différents il s’agit pour l’un de satisfaire l’envie du développeur et de le partager à ses camarades développeurs pour qu’ils adaptent le code, et obtiennent des résultats sur leur propre machine, d’un autre côté le web sert à distribuer une application de manière sûre et sécurisée à des milliers voire des millions d’utilisateur et que celle-ci réponde de la même façon partout ou de façon adaptée au terminal de chacun. Cependant les frameworks de programmation web devraient s’inspirer de cette façon simple de concevoir un programme avec le moins d’entrées possible au début, c’est toujours en partant d’un procédé simple qu’on arrive aux solutions les plus complexes

  • Vers quelles ressources se diriger en fonction de ses aspirations ?

C’est récemment, en faisant mon service civique au fabalab de la Mine que j’ai voulu me replonger dans processing. Je suis donc allé dans la section Learn/Books du site de processing(https://processing.org/books). Ne voulant pas nécessairement me replonger dans java , et trouvant l’idée de réutiliser le langage le plus populaire du machine learning  séduisante, j’achetais “Creative Coding with processing.py”. Ce livre traite donc du mode python de processing et il est destiné à un public non expert, soit pour ceux qui veulent apprendre à utiliser le mode python de processing soit pour ceux qui débutent la programmation. Très factuel, le livre nous montre des exemples de ce qu’il est possible de faire avec processing.py en manipulant les formes et les couleurs, jusqu’à faire des formes complexes avec les courbes de bezier, et apprendre à travailler avec les structures de données. 

Ce livre me donnait finalement ce que je demandais, c’est-à-dire une porte d’entrée vers la programmation que je pourrais présenter à toute personne venant au fablab. Cependant il me laissait sur ma faim, ne délivrant qu’un étalage structurel d’un langage de programmation, passant à côté de l’exploitation de ce langage pour un travail vraiment créatif. Dans l’afterwords, l’auteur parlait d’un autre livre comme une source importante de son travail sur processing, “The Nature of Code” par Daniel Shiffman. Reconnaissant l’auteur de videos d’introduction à processing de grande qualité (https://www.youtube.com/thecodingtrain), je fus piqué de curiosité pour ce livre. Des deux versions du livre je choisissais la première de 2012, celle plus récente utilisant p5js, le portage javascript de processing. Il faut savoir que le javascript est pour moi un grand bain dans lequel je n’ai jamais mis les pieds, tout en tournant au bord sans fin. Et là je fus bluffé. Voilà enfin ce que j’attendais, ce que j’aurais voulu avoir en première année d’étude d’ingénieur lorsque je découvrais la programmation. Pas étonnant que des game developers l’aient en ouvrage de référence.

Dans la section suivante j’entre dans les détails de comment j’ai adapté le code de “The Nature of Code” pour mes projets. 

  • Comment éviter de se fermer des portes à l’aube de sa carrière de développeur et à l’ère de l’IA

Pour écrire mes programmes en python je commençais par faire le travail de traduction du code java en python, ceci étant un bon exercice permettant de valider que j’avais bien compris l’objet du  code, et que ma maitrise de la syntaxe python était suffisante. A la suite cependant ceci étant moins efficace qu’un travail de rétention (voir ici je prépare un article sur les meilleures méthodes d’apprentissage) je demandais à l’IA de faire ce travail pour moi. Voilà un domaine où les large languages models sont extrêmement efficaces. Cela n’a plus de signification d’être développeur, java, javascript, python, à l’heure où tout peut être traduit sans problème par chatGPT ou tout autre language model, qui comprend mieux que vous le framing d’un langage de programmation. 

Vous pouvez aussi demander aux large language models de débugger une application pour vous, ils sauront vous donner quelques pistes de débogage et vous n’aurez pas à revoir l’ensemble de votre code pour une typo. 

Les large language models s’évertuent aussi à devenir meilleurs dans les pistes d’améliorations qu’ils vous proposent pour vos programmes. Voici (https://github.com/Thibautomaton/ShatterParticles/blob/main/shatter.gif) par exemple un système de particules qui forme un carré avant de tomber en pièces lorsque l’on clique dessus avec le bouton gauche de la souris, puis se reforme lorsqu’on clique avec le bouton droit. En partant d’un simple système de particule et en suivant les recommandations de chatGPT on arrive à un effet cool qui pourrait être utilisé dans un jeu vidéo.

python program, object composed of particles shatter and return to normal

Cependant pour continuer au-delà des systèmes de particules qui représentent le chapitre 4 de “The Nature of Code” il fallait utiliser une bibliothèque non supporté par le mode python de processing. Celà ne veut pas dire que cette bibliothèque n’existait pas en python, mais pour l’utiliser il fallait passer par une autre bibliothèque tel que pygame qui permettait de faire tourner les exemples utilisant pybox2D (le port python de la bibliothèque Box2D permettant la simulation physique des objets dans un environnement 2D). Voulant très fortement apprendre à utiliser cette bibliothèque qui a notamment permis le développement du jeu angry bird, je décidais de me former à pygame. Je recommande pour ça le cours sur udemy de Michael Eramo : https://www.udemy.com/course/the-art-of-doing-video-game-creation-with-python-and-pygame/ qui introduit très bien la programmation de jeux pygame en creant des exemples concrets, mais ceci ne vous dira pas comment utiliser pybox2d dans pygame. 

Je pense fondamentalement que l’IA doit permettre au développeur de tout faire, sur tous les fronts. Et peut-être que s’il se lance dans la programmation de jeu, plus l’IA sera performante et autonome, et plus il lui sera possible de s’atteler au artwork ou de faire des choses qu’il n’aurait pas imaginé précédemment possibles. La tâche du développeur s’est définitivement allégée, si nous n’entreprenons pas 10 fois plus de choses du fait de nos capacités, ne manquons nous pas de respect aux développeurs qui nous ont précédés et qui devaient tout créer et entretenir du fait de leurs seules capacités mentales? 

CONCLUSION

Finalement, demandons-nous est-ce qu’un ingénieur doit nécessairement savoir coder à l’heure actuelle. Ce n’est pas un manque d’effort de la part des écoles de vouloir nous instiller la fibre du codeur, mais est-ce que cet effort n’est pas “contre productif”, dans le sens ou il fait vivre la programmation comme une contrainte et non pas comme une joie et encore moins un art de vivre. 

Savoir coder vous rend toujours plus précis avec les llms pour indiquer des axes d’améliorations, à l’heure ou l’IA s’apparente à un stagiaire diplomé d’une grande école à jour sur tous ses cours (et outrageusement conciliant)

Est-ce que le no-code a du sens ? Lorsque vous pouvez demander à l’ia de programmer une application pour vous, ne serait-il pas plus facile d’apprendre les quelques règles de la programmation afin d’aiguiller l’ia que d’apprendre à maîtriser une interface no-code.

L’avis du PDG de NVidia Jensen Huang là dessus est intéressant car il considère que c’est son travail et celui des développeurs de nvidia de faire en sorte qu’il ne soit plus nécessaire d’écrire une seule ligne de code.
Donnez moi votre avis en commentant que je sache qui préfère apprendre à coder à l’heure de l’IA ou se reposer sur les outils no-code pour interagir avec.

Est-ce que vous avez déjà utilisé processing et est-ce que vous recommanderiez pour quelqu’un qui veut débuter la programmation ?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut