Representer


Uno dei problemi che la community di Exercism deve affrontare è come dare un feedback significativo a tante persone che presentano tante soluzioni a tanti esercizi diversi. Per aiutare a ridurre la portata di questo compito potenzialmente enorme, le soluzioni vengono normalizzate in «rappresentazioni». Per esempio, delle 500 soluzioni inviate più di recente all'esercizio TwoFer del track Ruby, circa 380 verrebbero considerate uniche (se si normalizzano cose banali come la formattazione del codice e i commenti). Se le normalizziamo ancora di più (normalizzando per esempio i nomi delle funzioni o delle variabili), quel numero si riduce ulteriormente, quindi potrebbero esserci solo 250 approcci unici. Se la community di Exercism riesce a fornire un feedback su quei 250 approcci, la speranza è di avere un feedback valido già pronto per circa il 99% di tutte le soluzioni future dell'esercizio TwoFer. Con gli esercizi sui concetti, lo spazio delle soluzioni sarà ancora più piccolo, perché gli esercizi sui concetti saranno progettati di proposito per essere risolti in un modo specifico.

Un Representer è un pezzo di codice con un'unica responsabilità: prendere una soluzione e restituirne una rappresentazione normalizzata.

Una rappresentazione è l'estrazione di una soluzione nella sua essenza, con nomi, commenti, spaziature e così via normalizzati, ma che identifica comunque in modo univoco l'approccio seguito. Due modi diversi di risolvere lo stesso esercizio non devono avere la stessa rappresentazione.

Il Representer più semplice è quello che si limita a restituire il codice sorgente della soluzione. Tuttavia, dato che il nostro obiettivo è avere la stessa rappresentazione per soluzioni che differiscono solo in dettagli non essenziali, il Representer dovrebbe applicare una o più normalizzazioni.

Una volta ottenuta una rappresentazione normalizzata per una soluzione, un gruppo di mentori esperti esaminerà la soluzione e la commenterà (se serve). Questi commenti verranno poi inviati automaticamente a ogni nuova soluzione con la stessa rappresentazione. Per le soluzioni precedenti con una rappresentazione corrispondente verrà inviata una notifica.

Contribuire ai Representer

Ogni linguaggio ha il proprio representer, scritto in quel linguaggio. Il sito web fa da orchestratore tra il representer e le soluzioni inviate dagli studenti.

Ogni representer vive nell'organizzazione GitHub di Exercism, in un repository chiamato <track_slug>-representer (per esempio exercism/ruby-representer). Puoi dare un'occhiata ai representer esistenti qui.

Se vuoi dare una mano con un Representer già esistente, apri una issue nel suo repository e chiedi se c'è un punto in cui puoi essere utile. Se vuoi creare un Representer per un linguaggio che al momento non ne ha uno, segui le istruzioni per creare un Representer.

Puoi usare i documenti seguenti per saperne di più su come si costruisce un representer: