L'un des problèmes auxquels la communauté Exercism fait face est de savoir comment fournir un retour pertinent à de nombreuses personnes qui proposent de nombreuses solutions à de nombreux exercices différents. Pour aider à réduire l'ampleur de cette tâche potentiellement énorme, les solutions sont normalisées en « représentations ». Par exemple, sur les 500 dernières soumissions à l'exercice TwoFer du parcours Ruby, environ 380 seraient considérées comme uniques (si on normalise les détails triviaux comme le formatage du code et les commentaires). Si on les normalise encore davantage (en normalisant par exemple les noms de fonctions ou de variables), ce nombre diminue encore, et il ne resterait peut-être que 250 approches uniques. Si la communauté Exercism peut fournir du retour sur ces 250 approches, alors nous espérons avoir préparé un retour pertinent pour environ 99 % de toutes les futures soumissions à TwoFer. Avec les exercices d'apprentissage, l'espace des solutions sera encore plus réduit, car les exercices d'apprentissage seront délibérément conçus pour être résolus d'une manière spécifique.
Un Representer est un bout de code dont la seule responsabilité est de prendre une solution et d'en renvoyer une représentation normalisée.
Une représentation est l'extraction d'une solution vers son essence, avec des noms, des commentaires, des espacements, etc. normalisés, tout en identifiant de manière unique l'approche adoptée. Deux façons différentes de résoudre un même exercice ne doivent pas avoir la même représentation.
Le Representer le plus simple est celui qui se contente de renvoyer le code source de la solution. Cependant, comme notre objectif est d'avoir la même représentation pour des solutions qui ne diffèrent que par des détails non essentiels, le Representer doit appliquer une ou plusieurs normalisations.
Une fois que nous avons une représentation normalisée pour une solution, une équipe de mentors vérifiés examinera la solution et la commentera (si nécessaire). Ces commentaires seront ensuite automatiquement soumis à chaque nouvelle solution ayant la même représentation. Une notification sera envoyée pour les anciennes solutions dont la représentation correspond.
Chaque langage a son propre representer, écrit dans ce langage. Le site web joue le rôle d'orchestrateur entre le representer et les soumissions des apprenants.
Chaque representer se trouve dans l'organisation GitHub d'Exercism, dans un dépôt nommé <track_slug>-representer (par exemple exercism/ruby-representer).
Tu peux consulter les representers existants ici.
Si tu souhaites t'impliquer pour aider sur un representer existant, ouvre une issue dans son dépôt pour demander s'il y a un endroit où tu peux apporter ton aide. Si tu souhaites créer un representer pour un langage qui n'en a pas encore, suis les instructions pour créer un representer.
Tu peux utiliser les documents suivants pour en apprendre davantage sur la construction d'un representer :