Que vous vouliez bien me croire ou non, programmer peut vraiment devenir un jeu. Loin de moi l’idée d’essayer de vous faire apprécier la beauté d’un “refactoring” complexe ou appréhender les finesses d’un polymorphisme bien fait qui sont la coke des développeurs mais plutôt de vous aider à mettre un pied dans ce petit monde et – pourquoi pas – comprendre que programmer peut aussi devenir un jeu pour toute personne un peu curieuse!
Pour ce faire, je fais appel au Project Euler, un petit défi mathématico-informatique très intéressant dont voici l’intitulé officiel:
Project Euler is a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve. Although mathematics will help you arrive at elegant and efficient methods, the use of a computer and programming skills will be required to solve most problems.The motivation for starting Project Euler, and its continuation, is to provide a platform for the inquiring mind to delve into unfamiliar areas and learn new concepts in a fun and recreational context.
Ça a le mérite d’être simple, si les problèmes proposés sont parfois réalisables de tête avec un peu de jugeote, la grande majorité d’entre eux implique la manipulation de nombres trop grands pour que ce soit faisable, sans cependant demander de grosses bases mathématiques. C’est là que l’utilisation judicieuse de petits programmes informatiques devient nécessaire, sans pour autant sombrer dans la complexité. Dans la rubrique “à propos” du projet est spécifié que tous les problèmes sont solvables “en une minute de traitement”, ce qui pousse implicitement à optimiser les algorithmes au maximum. Mais sans aller jusqu’à cette extrémité, il est relativement facile de résoudre une partie des problèmes de manière assez systématique en utilisant cette qualité qu’on oublie trop souvent: “un ordinateur ça calcule (très) vite”.
Pour le fun (et par curiosité) j’ai également décidé de commencer ce challenge dans un langage de programmation que je n’avais pas encore testé, le fourchelangue, le Python… SSSsssSssSSssss. Le fait que j’ai découvert le Projet Euler en même temps que les fonctions personnalisables en Python d’Enso n’y est pas pour rien. Après maintenant quelques jours de jeu avec le Python et Euler je dois dire que je suis très surpris du premier et passionné par le second même si je n’en suis toujours qu’au début. J’ai résolu à ce jour 18 problèmes (grosso modo les 18 premiers par ordre de complexité croissant nombre de personnes les ayant résolu décroissant) sur les ~250 que compte le projet à l’heure actuelle et ça m’amuse toujours autant de chercher a en résoudre un de temps en temps.
Pour le moment les nombres premiers et en particulier les décompositions en nombres (premiers ou pas) sont bien présents ainsi que quelques petits problèmes de logique géométrique franchement pas difficiles. J’encourage tous les curieux sachant un brin programmer à enfourcher le compilateur de leur choix et de tenter l’expérience. Pour les plus curieux, une fois un problème résolu, vous avez accès à un forum de discussion qui vous permet de comparer votre méthode avec les grands malades qui se prennent vraiment la tête pour résoudre ces problèmes de manière efficace.
Pour les autres, ceux qui ne savent pas programmer et ne seraient pas contre l’idée de tester ceci pour peu qu’on les prenne un peu par la main, attendez quelques jours que j’écrive un billet sur “Comment prononcer ses premiers mots en fourchelangue” pour commencer l’expérience tranquillement! A vos claviers!
[...] propos La programmation est un jeu d’enfant Mar [...]