Norwegian Blue Parrot

Pining for the fjords

Insegnare a programmare

davide Nerdate 4 minuti

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. 

Comments


Leave Comment








PythonCprogrammazione