Norwegian Blue Parrot

Pining for the fjords

Insegnare a programmare

Insegnare non è facile, insegnare a programmare non è da meno. Tuttavia nella mia esperienza di tutorial ho trovato spesso un modus operandi che può mettere in seria difficoltà e scoraggiare chi non ha già un background molto approfondito e in grado di digerire più concetti alla volta.

Il classico programma di partenza è "Hello, world". Che lo scriviate in Python con un semplice

print("Hello, world")

O in C, in cui avrà già più "ciccia" da tenere in considerazione, sarà molto semplice per chiunque. Il problema si pone di frequente già dal secondo programma. Ho per esempio visto diverse situazioni in cui si passava a strutture piuttosto complesse con l'indicazione "non preoccupatevi se non capite, lo capirete dopo". Con me questo genere di approccio non funziona. Forse non ho mai avuto una grande testa e sono piuttosto ottuso, o "dull", ma non ho mai ottenuto un'illuminazione man mano che proseguivo; ho solo ottenuto dei gran mal di testa e abbandonato ogni speranza, sentendomi un idiota. 

Può essere così, ma può essere anche che il tipo di approccio "a spugna" sia più adatto a menti giovani o che non hanno già dei preconcetti formati (ad esempio chi impara a programmare secondo un approccio procedurale non si troverà immediatamente con un altro tipo di approccio, per chi è abituato a scrivere a inizio programma che X è un numero intero risulterà più difficile trovarsi una X spuntata dal nulla e a cui viene attribuito un valore). 

Certamente, i libri che partono da 0 e descrivono minuziosamente ogni singola fase possono risultare pesanti e uno spreco di carta. In alcuni casi l'estrema precisione nel descrivere ogni singola cosa può essere altrettanto pesante che un programma incomprensibile di 1000 righe, certo, ma credo sia preferibile. Preferibile perché quando la pratica si limita ad uno script breve, in cui si eseguono poche istruzioni la lettura teorica diventa più facile. Se la teoria sembra un mattone si può tenere il manuale come riferimento e l'esempio pratico come materiale di studio da capire al 100%. Quando riduco all'osso la teoria o non la spiego e propongo un programma che svolge diverse procedure si resta un attimo interdetti.

Un'altra difficolta che ho riscontrato e che riguarda principalmente il mondo accademico è di asservire la programmazione a compiti matematici. Certamente, il computer - o "calcolatore" come lo si chiamava in italiano - ha questo scopo, ma non solo. Non tutti gli aspiranti programmatori hanno conoscenze approfondite di analisi matematica. Si può averle alla fine delle scuole superiori, ma poi, se non vengono esercitate, tendono ad essere dimenticate. Partire con un linguaggio di programmazione e svolgere esempi per calcolare [sparo totalmente a caso] il flusso di equazioni di sedicesimo grado con integrale draconico superiore in sommatoria di pigreco coseno logaritmico probabilistico non è propriamente semplice. Sicuramente è utile vedere come operazioni troppo complesse per un uomo possano essere risolte più agevolmente da un computer, ma non si può pretendere che un programmatore in erba possa diventare un illustre matematico. Sarà, casomai, l'illustre matematico ad elaborare un algoritmo che poi verrà tradotto in programma da egli stesso o da un programmatore. 

L'ultimo ostacolo che vedo lato didattico è il ricorso all'intelligenza artificiale. Dal mio punto di vista andrebbe esclusivamente utilizzata esclusivamente per ciò che non si comprende in un'ottica "puoi farmi un esempio?". Ecco l'esempio: non riesco a capire un passaggio e il perché si ottenga un certo risultato. Provo a rileggermelo e provo mentalmente a costruire i ciò che dovrebbe avvenire su un foglio di carta. Se proprio non si riesce a unire i puntini allora può essere utile chiedere una delucidazione, quando magari facendolo su forum le risposte potrebbero essere RTFM (non traduco l'acronimo). In quel caso ok. Oppure "ho capito in linea teoria questa istruzione, ma non ho capito come la potrei utilizzare lato pratico" potrebbe andare, anche se l'IA potrebbe essere portata a introdurre pezzi di programmazione che ci risultano oscuri. Per tutto il resto confrontarsi con persone o con documentazione online è la cosa migliore.

Quando ho imparato il PHP la mia risorsa principale è stata PHP.NET, con i commenti alle varie funzioni. Attraverso commenti fatti da altri utenti per spiegare con esempi pratici sono stato aiutato alla grande da perfetti sconosciuti. Senza sminuire autori di volumi (purtroppo ormai obsoleti altrimenti li avrei consigliati) estremamente validi, i contributi online della community - se ben moderati in modo da non eccedere ma di stare sul "pezzo", non commentando una funzionalità con 820 altre funzionalità, sono estremamente utili e ci aiutano a ragionare. 

Cover Image

El casciaball

casciaball inv

  1. raccontafrottole, bugiardo, menzognero

L'aggettivo casciaball applicato all'attuale Ministro degli Interni, Matteo Salvini, è quanto mai azzeccato. Un dato di fatto inequivocabile è che il leader leghista, non potendosi appellare a treni in perfetto orario (certamente, gli atti vandalici più o meno gravi accaduti ultimamente non lo hanno aiutato), abbia rivolto tutte le sue attenzioni al Ponte sullo Stretto, opera che da sempre affascina i populisti, come Berlusconi o Renzi. 

L'opera effettivamente ha un certo fascino: 'idea di unire due lembi di terra, due popolazioni, di facilitare le comunicazioni o i trasporti non si può biasimare. Dal punto di vista ingegneristico, poi, è una sfida a cui, credo, tutti gli ingegneri civili-strutturisti hanno pensato. Il problema nasce quando l'idea si trasforma in uno slogan e quando l'idea rischia di concretizzarsi in una iattura per gli italiani (per mantenerci in tema con gli slogan di Salvini). 

Per sostenere lo slogan, l'idea o il progetto - indipendentemente da come si voglia chiamarlo - il Ministro e il Governo affermano varie balle:

  1. moderno: il progetto del ponte non è affatto moderno. Il progetto nasce nel 1992, ha avuto una serie di revisioni ed è arrivato ad una versione definitiva nel 2011. 
  2. bellissimo: la bellezza, siamo d'accordo, è qualcosa di soggettivo. Qualcuno potrebbe ritenere più bella Nonna Abelarda di Miriam Leone, tuttavia un'opera architettonico-ingegneristica ha dei dati oggettivi che ne definiscono la bellezza. In primis l'inserimento nel contesto. Bene, parliamo del contesto: ecco a voi delle simpatiche antenne, alte 400 metri, stagliarsi di colpo sul mare. Forse non si ha ben chiaro quanto siano 400 metri in termini d'impatto ambientale, un conto è vederli all'interno di uno skyline come quello di Shanghai o Dubai, un conto da una spiaggia della Sicilia o della Calabria. In secondo luogo la funzionalità: siamo sicuri che il Ponte sarà utile e vantaggioso al netto dei costi di manutenzione e del risparmio di tempo? 
  3. italiano: ni, caro Matteo, il progetto è del gruppo danese che ha già progettato il Ponte sui Dardanelli in Turchia. Sta bene, il Ponte sui Dardanelli è, ad oggi, il più lungo al mondo e di tipologia simile al Messina (campata unica e sospeso), meglio che a progettarlo sia una società con esperienza piuttosto che l'Ing. Cane. Però non contiamoci frottole, non è italiano. Se l'impalcato di tipo "messina" è famoso, ciò è dovuto a studi internazionali in materia. Certamente, numerosi studi avranno la firma di accademici e progettisti italiani, ma costituiscono una base, non il progetto. Italiana è l'impresa, ma è anche scontato - e non approfondisco i motivi - che lo sia.
  4. già coperto nei costi: ecco, questa è la più grande frottola. Quali costi siano già coperti non è dato sapere. Però è sufficiente fare una considerazione. Il progetto del ponte che è stato approvato dal CIPESS è definitivo. Le fasi di progettazione sono: Preliminare, Definitiva, Esecutiva + costruttivi e varianti in corso d'opera. Manca totalmente il progetto esecutivo e nel progetto esecutivo si definiscono le cifre reali. Come si fa ad essere certi dei costi quando non si ha un computo metrico e non si ha la minima idea delle oscillazioni nei prezzi dei materiali da costruzione da qui al 2032? Come si fa ad essere certi che un'opera così mastodontica non avrà ricadute clamorosamente impattanti sui conti pubblici durante il suo ciclo di vita? Un'opera sottoposta a vento, sisma, automobili, treni, corrosione dovuta all'altissima salinità marina... ma stiamo scherzando o cosa? No non stiamo scherzando, per rassicurare gli italiani diciamo loro che i costi sono coperti. Poi tanto a metterglielo nel bus del miao ci penseremo poi, o ci penserà qualche altro governo. 
  5. fattibile: questo è forse il tema più discusso e su cui si è scatenato il mondo scientifico. Il salto tra il ponte in Turchia e quello sullo stretto non è di 1.300 metri, è qualcosa di esponenziale, perché al ponte turco si è arrivati per gradi e piccoli step. Può darsi che sia fattibile, ma è il durabile a preoccupare. Il Tacoma Narrows Bridge era perfettamente fattibile, ma è crollato a causa di fenomeni che non si conoscevano. Non era frutto di errori progettuali o costruttivi, era semplicemente frutto di una disciplina, quella della tecnica delle costruzioni, in cui il calcolo è probabilistico. In soldoni: un progetto deve garantire una percentuale di sicurezza di mancato raggiungimento di valori critici, ma non si ha mai la certezza assoluta che sia sicuro. Per quanto possano essere avanzati tutti gli strumenti di progettazione e di costruzione non si avrà mai una reale corrispondenza con quello che poi sarà il comportamento della struttura realizzata. 

Siamo insomma alle solite: dovendo parlare per slogan e facendo politica come se si fosse sempre e solo in campagna elettorale (e in questo tutti gli schieramenti sono uguali) i rischi di combinare un pastrocchio sono altissimi. Ma tanto la memoria degli italiani è breve, giusto?

Foto di copertina: Man running off the Tacoma Narrows Bridge during collapse - University of Washington Libraries