Site icon N3rdcore

Videogiochi e programmazione: l'arte di imparare giocando

Imparare.

 

Imparare, acquisire nuove conoscenze e via discorrendo fa parte di tutto quel gruppo di attività che potrebbero rientrare nella sfera del “noioso” per chiunque.

 

Anche per i più volenterosi e i più affamati di conoscenza sono certo che esiste almeno un “topic” in cui è difficoltoso navigare e la cui scalata del sapere è piuttosto noiosa e ben poco affascinante.

 

Insomma, stare ore e ore chini su libri, testi, corsi e tutorial vari non è proprio una di quelle attività che possiamo definire “interessanti”, anche qualora si stesse studiando qualcosa che si ha piacere imparare. Proprio per questo, negli anni, ho sviluppato una forma di interesse particolare per tutte quelle forme di insegnamento “alternative” che propongo un modo diverso di affacciarsi ed approcciare determinati argomenti e tematiche.

 

Non voglio soffermarmi sul concetto generale perché non ho le competenze tecniche per farlo così come non voglio assolutamente asserire che tali approcci siano necessariamente migliori o peggiori, ma mi serviva un’introduzione “generica” che potesse aprire queste quattro chiacchiere sui “videogiochi” per programmatori, ovvero uno fra i metodi più interessanti che ho avuto modo di sperimentare per approcciarsi allo sviluppo software.

Negli anni, fra studi e lavoro, ho dovuto, per forza, fermarmi a studiare (lo sto facendo tutt’ora, proprio prima di aprire questa pagina vuota ho concluso una lezione interessante su un particolare framework) questa o quella cosa. È piuttosto necessario nella mia professione: devi evolverti, conoscere e sperimentare in continuazione se vuoi arrivare a produrre del codice sempre migliore e non fermarti (quasi) mai.

 

No, non è necessariamente vero, ma io, personalmente, ho un bisogno costante di guardare e “imparare”, anche solo nei concetti base, sempre cose diverse altrimenti mi annoio e se mi annoio faccio male quel che dovrei fare.

 

Per questo sono sempre alla ricerca di “cose”.

 

Questa ricerca, negli anni, appunto, mi ha portato nel magico mondo videoludico legato al mondo della programmazione che possiamo dividere essenzialmente in due grandi gruppi: i videogiochi per tutti che mirano a creare una qualche forma di interesse e i videogiochi per gli addetti ai lavori, ovvero quei titoli (grandi e non) che ti richiedono delle conoscenze vere e proprie per poter essere approcciati.

 

Nel primo gruppo possiamo quindi inserire tutta quella miriade di puzzle-game le cui meccaniche principali si “limitano” alla scrittura di codice in modo visuale per risolvere i vari problemi che vengono messi di fronte al giocatore, e nel secondo gruppo possiamo inserire tutti quei titoli che richiedono la conoscenza base di un linguaggio di programmazione e tutte le dinamiche che lo circondando per poter essere fruiti.

Esiste poi l’intersezione fra i due insiemi nella quale, per ora, ho beccato un solo titolo, Tis-100, che si affaccia ad entrambi i gruppi strizzando però l’occhio al secondo. Si tratta di un titolo che simula una vera e propria architettura per un calcolatore (il Tis-100, appunto) e richiede la soluzione di “semplici” problemi informatici: salvare variabili, eseguire calcoli e così via, operando con i vari registri e aree di memoria disponibili e con un linguaggio molto vicino all’Assembly o qualsiasi altra cosa di basso livello (n.d.r i linguaggi di basso livello sono tutti quelli che dialogano “direttamente” con la macchina, con una sintassi poco verbosa ed istruzioni estremamente “semplici”, come inserire il valore X nel registro R).

 

Per poter completare i vari puzzle proposti è necessario studiare l’intera architettura del calcolatore, con tanto di linguaggio annesso: con il gioco è incluso, infatti, un documento che spiega per filo e per segno come funzionano le aree di memoria e tutti i comandi che abbiamo a disposizione per la gestione di ogni funzionalità del nostro calcolatore fittizio.

 

Non è necessario avere conoscenze base di architettura degli elaboratori o di sviluppo in generale per poter approcciare il titolo che, nel suo essere terribilmente di nicchia, è adatto ad un pubblico generico ma è sicuramente un videogioco che vede nello sviluppatore il suo target principale: la sfida è divertente e mai banale e offre una panoramica, seppur finta, piuttosto realistica delle funzionalità basilari di un calcolatore. Funzionalità che spesso e volentieri nello sviluppo di tutti i giorni (generalmente legato a linguaggi di alto livello) sono ignorate se non per qualche corso universitario o indagini personali.

 

Tis-100 offre, quindi, una finestra piuttosto imponente e interessante sullo studio di una parte piuttosto specifica del mondo dello sviluppo. Una finestra che avevo leggermente scoperchiato durante il mio percorso di studi e che ho provato con mano solo ed esclusivamente approcciandomi ad un titolo che non solo mi ha divertito, ma mi ha anche dato la possibilità di conoscere e “imparare” qualcosa di nuovo e completamente fuori dalla mia comfort-zone.

 

Se Tis-100 si inserisce nell’intersezione fra questi due gruppi videoludici, cosa possiamo inserire nel primo e cosa possiamo inserire nel secondo gruppo?

 

Non farò una lista di tutto il software esistente, chiaramente, perché non lo conosco tutto e perché non sarebbe utile ai fini di queste quattro chiacchiere insieme. Mi limiterò a prendere due esempi, uno per gruppo, che, a mio avviso, possono portare la bandiera per tutti gli altri.

Parliamo quindi di While True: Learn () e Human Resource Machine, due fra i migliori titoli che io abbia mai giocato legati all’insegnamento dei fondamentali di programmazione.

 

Entrambi i titoli presentano una struttura piuttosto simile: abbiamo un problema e dobbiamo creare uno schema, visuale, di operazioni che, eseguite in sequenza, portano alla soluzione.

 

Per farla breve abbiamo blocchetti di operazioni che trasciniamo e mettiamo insieme per poter fare qualcosa.

 

Il qualcosa in While True: Learn () è riuscire a diventare così bravi con il Machin Learning e l’Intelligenza Artificiale da poter costruire un aggeggio che traduca il linguaggio di un gatto, mentre in Human Resource Machine è il creare delle routine per degli impiegati che devono mandare in produzione semplici “pacchi”.

 

Entrambi i titoli forniscono tre pilastri fondamentali: una bella storia da seguire, un’interfaccia accattivante e “ludica” e la possibilità di approfondire, fuori dal gioco, quando appena creato.

Nel primo caso siamo di fronte ad un vero e proprio “entry point” per quanto riguarda il Machine Learning: il titolo mette sul tavolo concetti reali con tanto di link diretti alla letteratura e a vari corsi per introdursi, letteralmente, a questo particolarissimo mondo.

 

I blocchetti che andremo a disporre per risolvere i vari puzzle sono, in effetti, strutture dati vere e proprie e tutto il processo che il protagonista segue per arrivare al suo traduttore gatto-uomo è una buona rappresentazione del processo di apprendimento (e lavorativo) di ogni sviluppatore.

 

Il titolo è, senza troppi giri di parole, eccezionale: i problemi sono vari e tutti ben studiati, è ricco di easter eggs, è adatto letteralmente a chiunque adori il genere dei puzzle e a chiunque voglia approcciarlo. In più è un ottimo, ottimo, modo per iniziare ad approcciare un mondo tanto complesso come quello delle intelligenze artificiali: mette sul piatto concetti basilari come gli alberi di ricerca, con tutti i problemi che ne derivano e tutta la storia che ha portato il mondo dello sviluppo ad evolvere e cambiare queste strutture. Insomma, perfetto.

Human Resource Machine non propone, invece, un processo di apprendimento simile: non ci sono link esterni, non ci sono corsi o altro. C’è solo il gioco, che mette anche in risalto il “problema” delle macchine che si sostituiscono all’uomo, e nulla più.

 

In ogni puzzle dobbiamo risolvere un compito ben preciso e per farlo dobbiamo costruire un programma con piccoli pezzettini di codice, ognuno ben spiegato, da mettere in sequenza.

 

Il prodotto finale è, chiaramente, pseudo-codice che descrive un particolare algoritmo che sarà messo in pratica dal nostro piccolo avatar virtuale.

 

Cosa c’è di interessante in Human Resource Machine quindi? Il suo essere estremamente adatto a chi non ha mai visto codice in vita sua: tutto è spiegato nel migliore dei modi, dalle strutture dati ai piccoli blocchetti in sé, la sfida offerta non è mai banale (soprattutto per chi programma davvero) con il risultato di un videogioco estremamente divertente che si pone come uno fra i migliori “entry point” per chi vuole avvicinarsi al mondo dello sviluppo.

La storia simpatica, la grafica accattivante e le sue particolari meccaniche lo rendono un must have, soprattutto se poi, chiuso il gioco, ci si lascia andare all’apprendimento e si prova a ricreare, quegli stessi programmi, con un linguaggio di programmazione vero. Provare per credere.

 

Se Human Resource Machine e While True: Learn () rappresentano, quindi, due titoli che si pongono come un ottimo modo per entrare a contatto con il mondo dello sviluppo e allo stesso tempo come un esercizio interessante per gli sviluppatori, nel secondo gruppo possiamo trovare titoli come Screeps o Flexbox Froggy.

 

Il primo è un MMO per sviluppatori, senza troppi giri di parole. Si scrive del codice javascript per controllare e gestire la propria “tribù” e creare un impero: si codifica il comportamento dei propri lavoratori, dei soldati e così via, il tutto con l’obbiettivo di annientare i propri vicini… automaticamente.

 

Cosa vuol dire questo? Che il codice prodotto continua ad essere eseguito anche mentre non giochiamo: i lavoratori continuano a lavorare , l’economia a girare e la città a crescere. Vuol dire che dobbiamo caricare il codice giusto per difenderci dagli attacchi improvvisi e così via, senza dimenticare che il server non è dedicato solo a noi ma anche agli altri giocatori. Non possiamo scrivere codice troppo grande o che richiede troppi calcoli, altrimenti non verrà eseguito.

Screeps offre una documentazione, piuttosto esaustiva, di tutti gli oggetti presenti nel codice, con tanto di proprietà e metodi: insomma, è una vera e propria wiki per un “linguaggio” vero e proprio.

 

Non è assolutamente adatto a chi non ha mai programmato ma è una sfida continua e stimolante per gli sviluppatori che troveranno, senza alcun dubbio, un enorme piacere nel poter giocare un MMO così particolare.

 

Flexbox Froggy è invece un titolo molto breve, gratuito e disponibile via browser, che verte ad insegnare flexbox.

 

Non scenderò nei dettagli di flexbox, basta sapere che è una fra le proprietà più utilizzare e interessanti del CSS (il linguaggio di programmazione per creare la parte “grafica” di una applicazione web) e per essere padroneggiata e utilizzata come si deve necessita di una discreta conoscenza di tutta la sua sintassi.

 

Qualcuno, che non ringrazierà mai abbastanza, ha pensato che pagine e pagine di parole ed esempi potessero non essere sufficienti e che la pratica è sempre il miglior insegnante, così ha dato vita a Flexbox Froggy.

Lo scopo, per 24 livelli, è quello di portare una rana su una ninfea semplicemente utilizzando flexbox (che serve, per l’appunto, ad allineare elementi su una pagina web per essere molto semplicistici).

 

24 livelli sono sufficienti a capire tutto quello che questa proprietà ha da offrire? Sì, decisamente sì. Bastano per padroneggiarla? Assolutamente no, ma rappresentano un buon inizio, il migliore fra tutti, per poter imparare il suo utilizzo.

 

Ancora una volta, un titolo decisamente legato solo ed esclusivamente ad un target di professionisti ben preciso e, ancora una volta, un titolo incredibilmente adatto all’apprendimento.

 

Insomma, per concludere queste quattro chiacchiere che sono diventate anche troppe, quale dovrebbe essere il punto di tutto questo? Quello di lasciarvi travolgere da questi videoogiochi particolari, che siate sviluppatori o meno, perché giocando, ne sono sicuro, potete imparare molto più di quel che si possa pensare e un giorno, chissà, mentre sarete in pausa caffè davanti alla macchinetta di Google, ripenserete a come tutto ha avuto inizio… Con la necessità di creare un traduttore per gatti.

Exit mobile version