sabato 30 gennaio 2021

Coding

Pochi giorni fa ho sostenuto l'esame di informatica di primo anno alla trieannale di Fisica. In meno di 3 mesi e una quarantina di lezioni fra teoria e pratica si riesce ad imparare i rudimenti della programmazione del linguaggio C i quali potrebbero bastare per proseguire da autodidatta ad approfondire anche le tecniche di programmazione più evolute e scrivere codici più complessi.

Ho scoperto che il linguaggio C nella storia dell'informatica ha rappresentato una pietra miliare della programmazione, sviluppato nei primi anni '70 è sopravvissuto per ben 50 anni ed è ancora oggi ampiamente utilizzato. Sulla base del C sono poi stati sviluppati il C# e il C++ ma per certi versi le logiche che usa sono alla base di gran parte dei linguaggi di programmazione attuali, insomma un vero capostipite di quest'arte che è la scrittura di un software o coding.

Definire arte il coding potrebbe sembrare eccessivo ma lo si fa per far capire ai profani che "programmare" non è sono un lavoro necessario per fornire ad un computer dei software che lo trasformino da una accozzaglia di chips di sicilio perfettamente inutile in una macchina potente e versatile. Chi approccia questa pratica, chi lo fa per professione capisce subito che è molto di più di questo. Per scrivere un codice bisogna esercitare la propria creatività, il bello viene subito dopo la conoscenza delle procedure e delle istruzioni che costituiscono la sintassi del linguaggio. Se dovessi fare un paragone con gli scacchi, la primissima fase consiste nell'imparare le mosse, ma saper muove i pezzi non vuol dire essere dei bravi giocatori di scacchi, anche in questo caso il piacere di giocare a scacchi viene dall'imparare a scegliere le mosse migliori per avere un vantaggio sull'avversario.

La creatività serve a risolvere dei problemi per lo più di logica matematica, saper ottenere il risultato voluto non è la soluzione unica di un problema ma la visione di tanti sentieri che ti portano alla meta, avere questa visione ampia davanti e fare delle scelte, in base a base a qualunque criterio venga preferito. Posso scrivere il codice più efficiente, il più pulito da punto di vista della sintassi, il più preciso, il più prudente, quello che tiene conto di tutte le eccezioni, quello più descrittivo che accompagna passo passo l'utente nella soluzione del suo problema. Insomma il programmatore ha la più ampia e quasi infinita rosa di possibilità davanti a se, che nel momento il cui scrive è il creatore di questa macchina che sta costruendo con la sua inventiva.

Le impressioni che ho avuto in questi mesi quando programmavo erano quelle di avere a che fare con 2 "persone" l'utente, chi deve eseguire quel programma e il processore chi deve fare i calcoli per dare la risposta all'utente. Mettersi nei panni di chi dovrà usare il software è necessario per considerare tutte le eccezioni, mentre mettersi nei panni della cpu richiede una discreta conoscenza di come questa funziona, a volte è proprio necessario chiederci quanta potenza di calcolo o quanta memoria serve per eseguire un certo compito, e quindi come posso scrive il mio codice in modo da ottenere il risultato con il minimo utilizzo di risorse.

Insomma se chiamare il programmatore un artista può sembrare esagerato se non altro sarebbe più calzante definirlo un artigiano, uno che ci mette la testa, concentrazione, fantasia, creatività, per costruire una macchina che svolga un certo compito nel modo migliore possibile e che funzioni bene anche se alla guida ci si mette un bambino prevedendo e prevenendo tutti gli errori che potrebbe fare.