Representer


Eines der Probleme, mit denen die Exercism-Community konfrontiert ist, ist die Frage, wie man vielen Menschen, die viele Lösungen für viele verschiedene Übungen einreichen, sinnvolles Feedback geben kann. Um diese potenziell riesige Aufgabe zu verkleinern, normalisieren wir Lösungen zu „Repräsentationen“. Zum Beispiel wären von den letzten 500 Einreichungen für die Übung TwoFer im Ruby-Track etwa 380 einzigartig (wenn man von trivialen Dingen wie Codeformatierung und Kommentaren absieht). Wenn man sie noch weiter normalisiert (indem man zum Beispiel Funktions- oder Variablennamen normalisiert), wird die Zahl noch kleiner, sodass es vielleicht nur noch 250 einzigartige Ansätze gibt. Wenn die Exercism-Community zu diesen 250 Ansätzen Feedback geben kann, dann hoffen wir, für ~99 % aller künftigen Einreichungen zu TwoFer passendes Feedback vorbereitet zu haben. Bei den Konzept-Übungen wird der Lösungsraum noch kleiner, weil Konzept-Übungen bewusst so entworfen werden, dass man sie auf eine bestimmte Art löst.

Ein Representer ist ein Stück Code mit der einzigen Aufgabe, eine Lösung entgegenzunehmen und eine normalisierte Repräsentation davon zurückzugeben.

Eine Repräsentation ist eine Lösung, reduziert auf ihr Wesen: Namen, Kommentare, Abstände usw. sind normalisiert, aber der gewählte Ansatz bleibt eindeutig erkennbar. Zwei verschiedene Arten, dieselbe Übung zu lösen, dürfen nicht dieselbe Repräsentation haben.

Der einfachste Representer gibt einfach nur den Quellcode der Lösung zurück. Da unser Ziel aber ist, dass Lösungen dieselbe Repräsentation haben, wenn sie sich nur in unwesentlichen Details unterscheiden, sollte der Representer eine oder mehrere Normalisierungen anwenden.

Sobald wir eine normalisierte Repräsentation für eine Lösung haben, sieht sich ein Team aus geprüften Mentoren die Lösung an und kommentiert sie (falls nötig). Diese Kommentare werden dann automatisch zu jeder neuen Lösung mit derselben Repräsentation hinzugefügt. Für ältere Lösungen mit passender Repräsentation wird eine Benachrichtigung verschickt.

Zu Representern beitragen

Jede Sprache hat ihren eigenen Representer, der in dieser Sprache geschrieben ist. Die Website fungiert als Vermittler zwischen dem Representer und den Einreichungen der Lernenden.

Jeder Representer liegt in der Exercism-GitHub-Organisation in einem Repository namens <track_slug>-representer (z. B. exercism/ruby-representer). Die vorhandenen Representer findest du hier.

Wenn du bei einem bestehenden Representer mithelfen möchtest, öffne ein Issue in seinem Repository und frag, ob es etwas gibt, wobei du helfen kannst. Wenn du einen Representer für eine Sprache erstellen möchtest, die noch keinen hat, folge der Anleitung Einen Representer erstellen.

Mit den folgenden Dokumenten kannst du mehr über den Bau eines Representers erfahren: