Uploaded avatar of angelikatyborska

Analyzer, representer e syllabus: cosa c'è di nuovo in Exercism?

@angelikatyborska
Circa 5 anni fa
Video

All'inizio di settembre 2021, Exercism v3 è stato finalmente rilasciato. Angelika Tyborska è una dei maintainer principali che ci hanno aiutato a tagliare il traguardo. Oltre a essere co-creatrice degli Esercizi di apprendimento e del Syllabus del track di Elixir, Angelika è stata una voce fondamentale durante tutto lo sviluppo della v3, contribuendo con idee e intuizioni lungo l'intero processo di costruzione. È una contributrice fondamentale di Exercism.

In questa presentazione video, Angelika ci guida attraverso i problemi che la v3 doveva risolvere, alcune delle novità principali della piattaforma e il modo in cui tutto si incastra tra loro, esplorando Analyzer, Representer e i nuovi Esercizi di apprendimento.

Trascrizione

Storia di Exercism

Exercism esiste da un po' di tempo. È stato creato per la prima volta nel 2013 da Katrina Owen come strumento per i suoi studenti. Nella v1 era solo una raccolta di interessanti esercizi di pratica. Nella v2 è diventato una piattaforma per il mentoring gratuito sul codice.

v3 🚀 01.09.2021

Il 1º settembre è stata rilasciata la versione 3 di Exercism.

In questo video ti guiderò attraverso le novità della v3, ti spiegherò perché sono state introdotte e come miglioreranno la tua esperienza su Exercism.

Chi sono

Questa sono io [foto mostrata a 0:38]. Sono Angelika. Insieme al mio co-maintainer Tim abbiamo costruito gli strumenti e oltre 30 esercizi di apprendimento per il track di Elixir di Exercism v3. Credo che nella sua nuova forma Exercism abbia il potenziale per diventare lo strumento migliore per imparare nuovi linguaggi di programmazione.

Cosa c'è di nuovo nella v3?

Cosa c'è di nuovo in Exercism v3? Risposta breve: moltissimo.

Tutti i cambiamenti principali introdotti nella v3 servono ad affrontare i problemi più grandi che le persone hanno riscontrato nella v2.

I problemi della v2

Ci sono tre problemi fondamentali che la v3 affronta.

Uno: la configurazione iniziale difficile. Due: fare pratica con il codice senza imparare. Tre: i tempi di risposta lunghi dei mentori.

Problema 1. Configurazione iniziale difficile

Problema numero uno: la configurazione iniziale difficile. Per iniziare con Exercism devi installare la CLI di Exercism, il linguaggio di programmazione che vuoi provare, e devi sentirti a tuo agio nel terminale. Devi configurare il tuo editor per la colorazione della sintassi del nuovo linguaggio, e così via. Per gli sviluppatori esperti, tutta quella configurazione è una perdita di tempo fastidiosa. Ma per i principianti può essere un ostacolo impossibile da superare.

La soluzione: far scrivere codice alle persone direttamente nel browser. Nessuna configurazione iniziale necessaria.

Per rendere possibile tutto questo, Exercism ora ha un editor web, e ogni linguaggio di programmazione ha il proprio Test Runner dedicato a eseguire i test degli esercizi di Exercism.

Editor web

Questo è l'editor web [schermata mostrata a 2:25]. Ha due pannelli: il codice sorgente a sinistra e le istruzioni e la suite di test a destra.

Non ha funzionalità sofisticate, perché il suo obiettivo non è sostituire i tuoi strumenti preferiti. Il suo obiettivo è permetterti di rimandare l'installazione di tutti gli strumenti e le dipendenze necessarie finché non ti senti più a tuo agio con il nuovo linguaggio di programmazione e sai di voler continuare a lavorarci.

L'editor web è del tutto facoltativo. Puoi continuare a usare la CLI e a lavorare con i tuoi strumenti preferiti sul tuo computer.

Test Runner

Perché l'editor web sia utilizzabile, serve un modo per eseguire i test sulla soluzione che scrivi nel browser. Questo è il compito di un Test Runner.

Ogni linguaggio su Exercism ha il proprio Test Runner. Il Test Runner si occupa di riportare i risultati dei test, ma non solo. Deve anche estrarre il corpo del test, così sai quale codice viene eseguito e puoi interpretare il messaggio di errore, ma anche catturare l'output del test, così puoi fare il debug del codice nel browser usando puts, print, console.log o qualunque funzione di stampa offra il tuo linguaggio.

I Test Runner sono fondamentali per risolvere gli esercizi nel browser, ma verranno usati anche per le soluzioni inviate tramite la CLI. Quando sfogli le soluzioni della community di un dato esercizio, o quando fai mentoring a uno studente, puoi vedere se la soluzione supera i test senza doverla scaricare ed eseguire in locale.

Problema 2. Fare pratica con il codice senza imparare

Problema numero due: Exercism è una piattaforma per fare pratica con il codice, ma non offriva alcuna risorsa per imparare da zero uno specifico linguaggio. Bisognava farlo altrove, prima.

Gli esercizi su Exercism erano pensati per essere interessanti e stimolanti, ma a volte anche i più facili sono troppo difficili per rappresentare un punto di partenza verso un nuovo linguaggio di programmazione. Questo vale soprattutto quando provi a imparare un linguaggio con una sintassi completamente diversa o che usa persino un paradigma di programmazione diverso.

La soluzione: offrire l'apprendimento insieme alla pratica.

Con l'aggiunta del Syllabus e degli Esercizi di apprendimento, Exercism è diventato uno strumento eccellente per tuffarsi subito in un nuovo linguaggio di programmazione.

Syllabus

Che cos'è un Syllabus? Un Syllabus è un albero di concetti che compongono ogni linguaggio di programmazione. Il Syllabus è specifico per ogni track di Exercism, perché ogni linguaggio di programmazione è diverso e ha concetti diversi.

I concetti dipendono l'uno dall'altro e formano diversi rami dell'albero. Devi imparare il concetto precedente del ramo per sbloccare quello successivo.

Per esempio, questo è l'inizio del Syllabus di Elixir [schermata mostrata a 5:10]. Inizia con un concetto chiamato «basics», che copre: come definire un modulo, come definire una funzione con nome e dove trovare la documentazione della libreria standard. Questa conoscenza è necessaria per ogni singolo esercizio di Exercism. Devi imparare «basics» per sbloccare qualunque altro concetto. Puoi imparare per esempio i booleani e, una volta che li conosci, puoi passare all'espressione cond, e così via.

Per darti un'idea, questo è il Syllabus completo di Elixir [schermata mostrata a 6:16]. Al momento contiene oltre 50 concetti, ma deve ancora essere ampliato.

In cima troverai concetti come: stringhe, liste, mappe e tuple. Nel mezzo ci sono: il modulo Enum, le espressioni regolari, gli struct e la scrittura dei typespec. E alla fine ci sono: protocolli, processi e task.

Esercizi di apprendimento

I concetti del Syllabus si imparano risolvendo gli Esercizi di apprendimento. Gli Esercizi di apprendimento sono diversi dagli Esercizi di pratica. Sono pensati per insegnare i concetti di programmazione a studenti che non conoscono affatto quel linguaggio di programmazione, ma che conoscono almeno un altro linguaggio e i concetti di base della programmazione.

Introduzione

Ogni esercizio di apprendimento inizia con un'introduzione. L'introduzione descrive le informazioni di base sui concetti che l'esercizio insegna. La maggior parte degli Esercizi di apprendimento insegna un solo concetto, ma ci sono delle eccezioni.

Questo esempio mostra un'introduzione alle mappe di Elixir [schermata mostrata a 7:12]. Spiega cosa sono le mappe, come definire una mappa, come accedere a un valore in una mappa e così via. Contiene alcuni esempi di codice per mostrare la nuova sintassi, ma non troppi, così non puoi limitarti a copiare e incollare l'introduzione per risolvere l'esercizio.

Istruzioni

Poi ci sono le istruzioni. Le istruzioni degli Esercizi di apprendimento sono suddivise in piccoli compiti. I compiti sono pensati per spingere lo studente a usare le parti più importanti di un dato concetto.

Per esempio, l'esercizio di apprendimento che insegna le mappe farà creare allo studente una mappa, poi leggere un valore da una mappa, poi aggiornare un valore in una mappa, poi ottenere tutte le chiavi di una mappa, e così via.

Ogni esercizio di apprendimento ha una storia, ma la storia non è poi così importante. Serve solo a evitare di usare valori senza senso come «foo bar» e «1 2 3», ma non ha un ruolo importante nell'esercizio come invece accade negli Esercizi di pratica.

Suggerimenti

Ogni compito è accompagnato da un breve elenco di suggerimenti, nel caso in cui lo studente si blocchi. I suggerimenti spesso rivelano quale funzione specifica usare in quale compito e ti indirizzano alla documentazione di quella funzione.

Fare pratica con i concetti

Ma risolvere un solo esercizio di apprendimento non basta per padroneggiare davvero il concetto. Bisogna anche fare pratica. Ecco perché abbiamo passato in rassegna tutti gli Esercizi di pratica già esistenti nella v2 e ne abbiamo scelti alcuni che possono essere usati per fare pratica con ogni concetto.

Ecco come appare un singolo concetto nell'albero [schermata mostrata a 9:01]. I puntini rappresentano gli esercizi. Il primo puntino, con l'icona della lampadina, è un esercizio di apprendimento, mentre gli altri puntini sono Esercizi di pratica.

Ecco come appare un concetto dopo aver risolto qualche esercizio [schermata mostrata a 9:37]. Nota come alcuni Esercizi di pratica per questo concetto siano ancora bloccati, anche se l'esercizio di apprendimento è completato. Questo succede perché gli Esercizi di pratica non si limitano a un solo concetto. Potresti dover imparare più concetti, non solo atoms [concetto mostrato nella schermata], prima che quegli esercizi vengano sbloccati.

Gli Esercizi di apprendimento dovrebbero essere banali per chi è già fluente in un dato linguaggio. Ma non preoccuparti, sono del tutto facoltativi. Puoi passare dalla modalità apprendimento alla modalità pratica, che ti dà accesso immediato a tutti gli interessanti Esercizi di pratica senza dover prima affrontare il Syllabus.

Il Syllabus richiede uno sforzo enorme

Un dettaglio importante che devo menzionare, per non crearti aspettative troppo alte, è che sviluppare il Syllabus richiede uno sforzo ENORME. Non ogni track ha abbastanza maintainer attivi per poter avere un Syllabus pronto già adesso.

Nel momento in cui registro questo video [4 settembre 2021], gli Esercizi di apprendimento sono disponibili solo in: Common Lisp, C#, Elm, Elixir, F#, Go, Java, JavaScript, Python, Ruby, Rust e Swift. Il track di Julia lancerà presto il suo Syllabus.

Problema 3. Tempi di risposta lunghi dei mentori

Problema numero tre: i tempi di risposta lunghi dei mentori. Non ogni track ha abbastanza mentori. Alcuni track hanno così pochi mentori che il tempo di attesa per il mentoring può arrivare fino a un mese. Questo è sempre stato estremamente scoraggiante per gli studenti. È un problema così centrale per Exercism che viene affrontato da 3 punti di vista diversi.

Feedback automatico

La soluzione numero 1 è fornire un feedback automatico. Gran parte del feedback che i mentori scrivono agli studenti è ripetitivo. Poter individuare automaticamente gli errori comuni e segnalarli direttamente allo studente cambia le carte in tavola.

Ricevere un feedback automatico sugli errori comuni permette allo studente di migliorare la soluzione ancora prima di chiedere un mentoring, il che rende più facile anche il lavoro del mentore. Risparmierà ai mentori la fatica di dover menzionare dettagli noiosi come snake_case contro camelCase, permettendo loro di concentrarsi sull'essenza della soluzione. In alcuni casi il feedback automatico basterà a soddisfare lo studente, che non chiederà nemmeno il mentoring.

Nella v3 ci sono due tipi di strumenti per il feedback automatico: gli Analyzer e i Representer.

Analyzer

L'Analyzer è uno strumento che cerca caratteristiche specifiche in una soluzione e restituisce allo studente un elenco di commenti predefiniti su ciò che trova. Quali caratteristiche, dipende interamente dal linguaggio e dall'esercizio specifico.

Per esempio, Elixir ha una convenzione di denominazione molto specifica per funzioni e variabili. Uno dei controlli che l'Analyzer di Elixir esegue per ogni singolo esercizio è verificare tutti i nomi delle variabili e delle funzioni. Se trova un nome che non è scritto in snake_case, ricorderà allo studente la convenzione di denominazione.

Un altro controllo che l'Analyzer di Elixir può fare è rilevare l'uso di un modulo specifico. Per esempio, questo controllo [schermata mostrata a 13:20] relativo al non usare il modulo Enum è specifico dell'esercizio di apprendimento sulla ricorsione. Usare il modulo Enum vanifica lo scopo dell'esercizio di apprendimento, quindi l'Analyzer ricorderà allo studente di non farlo e di usare invece la ricorsione.

Representer

Il secondo strumento che ci aiuterà a fornire un feedback automatico su Exercism è il Representer. Il Representer prende la soluzione e rimuove le parti non essenziali. Normalizza la formattazione, rimuove i commenti e la documentazione e sostituisce i nomi delle funzioni e delle variabili con dei segnaposto.

L'output del Representer si chiama rappresentazione. Ogni soluzione inviata a Exercism viene passata al Representer e la sua rappresentazione viene memorizzata sulla piattaforma insieme alla soluzione.

I mentori avranno quindi accesso a un'interfaccia dove possono sfogliare le rappresentazioni delle soluzioni inviate. Per ogni rappresentazione unica, un mentore può lasciare un feedback su quella rappresentazione. Poi quel feedback verrà mostrato a ogni studente che invia una soluzione simile, con la stessa rappresentazione. Un mentore deve scrivere il feedback una sola volta, e quel feedback può raggiungere tutti quelli che ne hanno bisogno.

I Representer in sé sono già implementati e rilasciati per alcuni linguaggi, ma nel momento in cui registro questo video [4 settembre 2021] l'interfaccia per i mentori manca ancora dalla piattaforma, quindi bisogna aspettare un po' prima che questa funzionalità sia pienamente disponibile.

Evitare sessioni di mentoring indesiderate

Un'altra soluzione alle lunghe code di mentoring è evitare le sessioni di mentoring indesiderate. Nella v2 il mentoring era obbligatorio per gli esercizi principali. Inviare un esercizio principale significava richiedere automaticamente il mentoring, e non si poteva passare all'esercizio principale successivo senza l'approvazione di un mentore. Molti studenti imparavano il linguaggio affrontando gli esercizi principali, quindi avevano bisogno del mentoring per essere guidati nel processo di apprendimento.

Ora non è più così. Il ruolo didattico degli esercizi principali e dell'approvazione dei mentori è stato assunto dagli Esercizi di apprendimento e dagli Analyzer. Nella v3 il mentoring è sempre facoltativo e va richiesto esplicitamente.

Richiesta di mentoring

Per richiedere il mentoring devi rispondere a 2 domande: «Cosa speri di imparare da questo track?» e «Come può un mentore aiutarti con la soluzione?» Sapendo in anticipo quali sono le aspettative dello studente per la sessione di mentoring, il mentore può scegliere le richieste di mentoring più adatte alle proprie conoscenze e al proprio stile di mentoring, il che rende più probabile che entrambe le parti chiudano la sessione soddisfatte.

Coda di mentoring e preferiti

Nella nuova coda di mentoring i mentori possono vedere statistiche sulla storia di mentoring dello studente. Possono vedere quale studente non ha mai ricevuto mentoring prima e potrebbe aver bisogno di una revisione più attenta, e quale studente ha già fatto mentoring molte volte e sa come funziona.

I mentori possono anche, finalmente, ritrovare gli studenti che hanno seguito in passato e sviluppare un rapporto con loro. I mentori possono persino aggiungere gli studenti ai preferiti e usarlo per dare priorità al mentoring degli studenti con cui hanno avuto una buona esperienza in passato.

Liste di blocco

Dopo ogni sessione di mentoring, sia lo studente che il mentore hanno la possibilità di bloccare l'altra persona. Ci sono due liste di blocco: studenti bloccati e mentori bloccati. Se io, come mentore, blocco te come studente, in seguito potresti comunque trovarti tu a fare da mentore a me. L'altra persona, naturalmente, non avrà idea di essere stata bloccata, quindi non può rivalersi su di te.

Puoi scegliere di bloccare qualcuno per qualsiasi motivo, ma se sta violando il Codice di condotta, assicurati di segnalarlo esplicitamente, così da proteggere gli altri utenti.

Ridurre le conseguenze negative delle lunghe attese

Infine, l'ultimo passo per affrontare il problema delle lunghe attese è assicurarsi che, anche se a volte devi aspettare, le conseguenze negative dell'attesa siano minime. Nella v3, aspettare il mentoring non ti impedisce di risolvere altri esercizi. Puoi comunque andare avanti nel track.

Una sessione di mentoring può essere conclusa da entrambe le parti. Se sei uno studente e non ti piace l'approccio che un particolare mentore sta adottando con te, puoi sempre chiedere un approccio diverso, oppure puoi scegliere di lasciare la sessione. Indipendentemente da come finisce la sessione di mentoring, lo studente può richiedere una nuova sessione di mentoring con un altro mentore per la stessa soluzione.

Slot di mentoring

Per ogni track puoi avere da 1 a 4 slot di mentoring. Avere più slot di mentoring ti aiuta quando vuoi chiedere mentoring per un esercizio difficile, che probabilmente non riceverà una risposta rapida, potendo comunque ottenere mentoring su altri esercizi nello stesso momento.

Gli slot di mentoring si sbloccano guadagnando reputazione. La reputazione si guadagna pubblicando le proprie soluzioni perché tutti possano sfogliarle, facendo mentoring agli studenti e contribuendo a uno qualsiasi dei repository di Exercism. Questo significa che gli studenti che contribuiscono di più alla piattaforma possono ottenere più mentoring.

Questi sono alcuni dei modi principali in cui Exercism è cambiato il 1º settembre 2021.

Abbiamo aggiunto gli Esercizi di apprendimento, così puoi imparare senza lasciare la piattaforma; un editor web, così puoi scrivere codice senza installare nulla; e gli Analyzer e i Representer, così puoi ricevere immediatamente un feedback automatico. Abbiamo anche rimosso molti ostacoli frustranti dal processo di mentoring.

E c'è tantissimo altro da esplorare: la nostra sezione per i contributori, i badge, i nuovi profili, una pagina "journey" con tutta la tua cronologia di Exercism, e molto altro ancora.

Vieni su exercism.org e provalo.

Grazie.

11 settembre 2021 · Ti è stato utile?