Già che parti col pensare di studiare giochi sbagli. Pensa a studiare i concetti base con codice a livello basso
Ovviamente si, occorre prima di tutto imparare le tecniche di programmazione, e fare gli esercizi allegati. Però poi i libri di testo si fermano lì, gli esercizi sono quello che sono, esercizi, poche decine di linee di codice, la vita reale poi è diversa, un applicativo non ha semplicemente un ciclo o due, per implementarlo bisognerà applicare molti dei concetti che si sono imparati. GitHub è un paradiso di esempi di codice, devo dire che la maggior parte è scritta bene. Io suggerisco di non guardare solo un progetto, ma almeno una dozzina, fare i confronti, vedere come sono progettati e strutturati. Leggere le critiche degli utenti. Quando ho parlato di video giochi non intendevo certo prodotti da tripla A, pensavo piuttosto a cose semplici tipo Tetris. Proprio Tetris per anni è stato il mio campo di battaglia per imparare un linguaggio, leggevo la documentazione e poi come primo programma scrivevo una versione di Tetris. Poi scoprii che non fossi l’unico.
Come si fa a dire che un codice è scritto bene? Bella domanda. Il già citato Robert Martin cercò di dare una definizione formale, non entro nei dettagli ma una condizione necessaria (non sufficiente) è che qualunque persona possa capirlo e modificarlo senza dovere grattarsi la testa. Quindi, se il codice risulta incomprensibile, meglio lasciare perdere e passare ad altro.
Abbiamo citato il kernel di Linux, che è un ottimo esempio di codice ben strutturato. Basta aprire un modulo per innamorarsi subito. Si legge senza bisogno di commenti, leggi una procedura e capisci subito cosa faccia. Ma applicativi correlati a sistemi operativi sono casi molto particolari, difficile che uno agli inizi sia capace di comprendere tutto, compilarli, farli girare, modificarli e testarli. Per chi è all’inizio occorre guardare applicativi semplici e contenuti (ecco perché ho citato Tetris) che si possano poi usare da noi stessi. Cercare qualcosa a cui si sia interessati, io per esempio sono un appassionato di musica e guardo software che viene usato in quel settore, anche un semplice music player.
Quando io iniziai internet non esisteva, quindi non esisteva nemmeno GitHub, c’era pochissimo software a disposizione e quello gratuito era messo a disposizione per scaricarlo su server universitari, e veniva citato sui newsgroup (chi se li ricorda?) Io scaricavo tutto quello che trovavo, alla sera finito il lavoro, mi studiavo un modulo per giorno (nel mio caso, per notte). Per esempio se volevo imparare a usare la comunicazione tra processi cercavo programmi che usassero dup(), exec() e socket() (quasi tutto in quei tempi era scritto in C) per il sistema operativo che usavo.