Vous êtes assis devant votre ordinateur, motivé pour programmer comme jamais mais là rien ne se passe… Vous restez de marbre devant votre écran sans avoir la moindre idée de quoi faire… vous séchez. Vous ne voulez pas lire un énième tutoriel sur votre langage. Vous avez envie de réfléchir, de vous casser les dents sur du code comme dirait un de mes professeurs.
Dans la continuité de mon article sur la pratique, j’ai décidé de partager avec vous quelques sites que je connais pour vous inciter à coder. Ils vont vous poser des problèmes de programmation, et vous ne réussirez pas toujours du premier coup. En tentant de réussir les exercices de ces sites, vous allez faire des erreurs.
C’est le but.
En corrigeant vos erreurs et en essayant sans cesse de trouver la solution, vous allez comprendre des subtilités du langage que vous pratiquez. Au lieu de recopier ce que vous voyez dans une vidéo ou un tuto, vous allez écrire du code par vous-même et surtout mixer les notions plutôt que de les apprendre individuellement, ce qui va vous confronter à de nouveaux problèmes intéressants. Alors prenez une grande inspiration car nous allons étudier 5 sites pour vous aider à pratiquer même sans avoir de projet en tête !
1. Project Euler
Lien : Project Euler (anglais)
Project Euler regroupe 583 problèmes au moment où j’écris ces lignes. A première vue, les problèmes semblent être uniquement mathématiques. Cependant nous sommes vivement incités à créer des programmes pour les résoudre. Le site ne propose pas de coder et de compiler/exécuter directement dans son interface. Vous allez donc devoir générer la solution vous-même sur votre ordinateur, puis entrer la réponse au problème sur le site qui déterminera si vous l’avez résolu.
Vous risquez de vous casser la tête sur certains problèmes et si vous n’êtes pas matheux dans l’âme, vous allez vite vous sentir perdu. En revanche, les problèmes en eux-même sont plutôt diversifiés. Il est possible d’évaluer la difficulté d’un problème grâce au nombre de personnes qui l’ont résolu.
À recommander donc à ceux d’entre vous qui veulent associer les maths et la programmation et réfléchir sur des problèmes assez peu guidés.
2. HackerRank
Lien: HackerRank (anglais)
Je n’ai pas beaucoup testé HackerRank mais le site est très populaire. Il propose de nombreux challenges dans plusieurs langages de programmation (Java, Python…). Un challenge classique décrit le problème, l’entrée et la sortie attendue. On peut coder directement sur le site et discuter sur les problèmes avec la communauté.
Un avantage non négligeable est que le site propose également des problèmes par domaines spécialisés plutôt que par langage. On y trouve des sujets précis comme l’intelligence artificielle, les bases de données ou la sécurité.
Le site propose aussi des compétitions pour pouvoir se mesurer à d’autres utilisateurs.
En résumé, le site semble être intéressant pour les problèmes spécialisés qui seront probablement la raison qui me ferait y retourner. Donnez-moi votre avis sur HackerRank si vous l’avez essayé !
3. France-IOI
Lien: France-IOI
J’ai utilisé France-IOI quand j’étais en train d’apprendre le Pascal dans mon école. L’association France-IOI existe depuis 2004 et le site a été créé au départ dans le but d’entraîner l’équipe de France pour les Olympiades internationales d’informatique.
Le site suit le même principe que les autres du genre : des problèmes à résoudre, dans un langage au choix. Tous les exercices sont répartis en différents niveaux. Il faut compléter la majorité des exercices d’un niveau pour accéder au suivant. Si on n’est pas un total débutant dans un langage, il est possible de faire des exercices de validation pour débloquer le niveau suivant directement.
La particularité du site est qu’il propose des cours parallèlement aux exercices. De plus, ces exercices possèdent souvent des énoncés amusants et ludiques.
En bref, un site français avec des problèmes adaptés à votre niveau et de bonne qualité.
- /r/dailyprogrammer
Lien: /r/dailyprogrammer
Comment ne pas parler de Reddit ? Il était inévitable qu’il y ai au moins un subreddit contenant des challenges intéressants pour nous ! /r/dailyprogrammer propose des challenges selon 3 niveaux de difficultés que l’on peut filtrer. Vous pouvez coder dans le langage que vous voulez tant que vous arrivez à résoudre le problème. Certains s’amusent même à coder en assembleur Gameboy (on a pas la même définition de l’amusement). Vous pouvez ensuite partager votre solution avec tout le reste de la communauté !
- CodinGame
Lien: CodinGame
Mon petit préféré, CodinGame possède une interface ludique et colorée permettant de facilement naviguer entre les exercices. Ces exercices ont un énorme avantage : ils prennent la forme de jeux.
Pour chaque exercice, on se retrouve dans une interface contenant son descriptif, un espace pour écrire notre code et choisir notre langage de programmation, et l’écran dans lequel se déroule le “jeu”. On peut ainsi se retrouver à voir un personnage changer de trajectoire pendant que notre programme tourne en direct et constater l’échec de notre programme tandis que le pauvre tombe dans un trou sans fond. La boucle de votre programme doit donc sortir le bon résultat à chaque fois pour résoudre le problème.
CodingGame joue énormément sur la gamification. Les problèmes sont sous forme de jeux, vous pouvez obtenir des succès sur le site, et être classé par rapport aux autres joueurs. Vous pouvez également participer à des compétitions qui vous mettront face à d’autre codeurs motivés.
Si vous ne devez en tester qu’un seul, je vous recommande celui-ci. Il permet de coder dans un très grand nombre de langages et est souvent mis à jour avec des problèmes proposés par les utilisateurs.
Challenge
Maintenant que vous avez cette liste de sites, lancez-vous ! Je vous défie de choisir un de ces 5 sites, puis d’y passer au moins une demi-heure à coder. Avez-vous fait face à un problème prenant ? Quelle a été votre plus grosse difficulté ?
Parmi ces sites, lequel est votre préféré ? En connaissez-vous d’autres ? Dites-le moi dans les commentaires !