Az Exercism közösségének egyik problémája, hogyan adjunk érdemi visszajelzést sok embernek, akik sok megoldást küldenek be sok különböző feladathoz. Hogy csökkentsük ennek a potenciálisan hatalmas feladatnak a méretét, a megoldásokat „reprezentációkba” normalizáljuk. Például a Ruby-kurzus TwoFer feladatához legutóbb beküldött 500 megoldás közül körülbelül 380 számítana egyedinek (ha az olyan apró dolgokat, mint a kód formázása és a megjegyzések, kiszűrjük). Ha még tovább normalizáljuk őket (például a függvény- vagy változóneveket is), a szám tovább csökken, így talán csak 250 egyedi megközelítés marad. Ha az Exercism közössége visszajelzést tud adni erre a 250 megközelítésre, akkor reményeink szerint a TwoFer jövőbeli beküldéseinek mintegy 99%-ához lesz érvényes visszajelzés előkészítve. A tanulófeladatoknál a megoldások tere még kisebb lesz, mert ezeket szándékosan úgy tervezik, hogy egy meghatározott módon oldhatók meg.
A representer egy kódrész, amelynek egyetlen feladata, hogy fogjon egy megoldást, és visszaadja annak normalizált reprezentációját.
A reprezentáció egy megoldás lényegének kivonata normalizált nevekkel, megjegyzésekkel, térközökkel stb., amely mégis egyedien azonosítja a választott megközelítést. Ugyanannak a feladatnak két különböző megoldási módja nem kaphat ugyanolyan reprezentációt.
A legegyszerűbb representer az, amely csupán visszaadja a megoldás forráskódját. Mivel azonban a célunk az, hogy az csak lényegtelen részletekben eltérő megoldások ugyanazt a reprezentációt kapják, a representernek egy vagy több normalizálást kell alkalmaznia.
Amint egy megoldáshoz megvan a normalizált reprezentáció, egy kipróbált mentorokból álló csapat átnézi a megoldást, és szükség esetén megjegyzéseket fűz hozzá. Ezeket a megjegyzéseket aztán automatikusan beküldjük minden új, ugyanolyan reprezentációjú megoldáshoz. Az egyező reprezentációval rendelkező régi megoldásokhoz értesítést küldünk.
Minden nyelvnek saját representere van, amely abban a nyelvben íródott. A weboldal hangolja össze a representert és a tanulók beküldéseit.
Minden representer az Exercism GitHub-szervezetében él egy <track_slug>-representer nevű tárolóban (például exercism/ruby-representer).
A meglévő representereket itt nézheted meg.
Ha be szeretnél szállni egy meglévő representer fejlesztésébe, nyiss egy issue-t a tárolójában, és kérdezd meg, hol tudnál segíteni. Ha olyan nyelvhez szeretnél representert készíteni, amelynek még nincs, kövesd a representer létrehozása útmutatót.
Az alábbi dokumentumokból többet megtudhatsz a representerek készítéséről: