venerdì 11 aprile 2014

Impariamo a programmare? No, grazie.(1a parte)

Imparare a programmare non è più difficile di quanto sia difficile imparare una nuova lingua. Di solito si commettono gli stessi errori e ci si lascia scoraggiare, ma alcuni semplici consigli possono aiutare a partire con il piede giusto.

Programma in C di Aspettando Il Bus
Programma in C di Aspettando Il Bus di Paolo Luongo

L'errore più comune è quello di cominciare subito con problemi complessi che metterebbero in crisi anche un professionista. Provo ad utilizzare la metafora della lingua. Oggi decido di imparare il Francese.
Cosa faccio? Vado in una libreria, compro un vocabolario di Francese ed alcune grammatiche sulla lingua. Poi scrivo una bella frase in Italiano e decido di tradurla in Francese. Da bravo neofita la traduco parola per parola.
Primo problema: E se non esiste il tempo per il verbo che ho utilizzato? Ne creo uno nuovo? Mistero.
Risultato: Fallimento completo, quindi decido che il Francese non fa per me !

Più o meno è lo stesso con i computer. Si commette l'errore di "decidere" che deve essere la lingua del computer ad adattarsi alle nostre esigenze e non noi alla lingua.
Altro esempio: Decido di imparare l'esquimese e voglio provare a tradurre la frase : "Come si accendono i termosifoni?". Il problema (non di poco conto) è che negli igloo non esistono i termosifoni e (forse) il termine "termosifone" non esiste nemmeno nella lingua esquimese !
In parole povere, ben chiare a chi conosce un'altra lingua, è che non si pensa in una lingua e poi si traduce in un'altra, ma si deve pensare direttamente nelle lingua "finale", scoprendo (poi) che non si pensa né in Italiano, né in Francese, né in Inglese. Si pensa e basta! I concetti si esprimono direttamente nella lingua "finale" ricordandosi anche "dei modi di dire".

La prima regola (per imparare) è che bisogna scegliere il dispositivo su cui si vuole programmare e cominciare ad osservarlo non da utenti ma "alzando il cofano della macchina e scoprendo il motore". Poi dipende cosa si vuole fare: Il meccanico o il progettista.
Di solito, ci si sente subito pronti a fare il progetto di un nuovo modello senza conoscere nemmeno come si avvita un bullone. Poi il progetto non funziona. Risultato: La meccanica non fa per me !
Purtroppo non si nasce progettisti, lo si diventa. Ci vuole "troppo tempo" ma ci illudiamo di saper fare tutto perché "L' abbiamo visto su YouTube. Che ci vuole...".
Ci vuole il tempo che ci vuole!
Almeno i primi rudimenti del "nuovo mondo", perché di "un nuovo mondo si tratta".
Basta immaginare di trovarsi catapultati immediatamente in Cina senza conoscere nulla della Cina.
Difficile farsi mandare la pizza a casa telefonando in pizzeria, vero?

Il secondo errore è :"Allora imparo tutto sui computer".
Risultato: Dopo pochi giorni i libri restano abbandonati a prendere polvere.
La programmazione è un' arte, come lo è disegnare o scrivere. C'e' bisogno di tecnica, che si può imparare, e di tanto esercizio. Dopo poco tempo si riesce a disegnare qualcosa che assomigli a quello che si voleva, ma diventare bravi come Michelangelo o Giotto non è tanto facile.

A questo punto il terzo errore è lasciare stare. Non è così, siamo tutti "programmatori".
Ogni giorno "programmiamo" la nostra giornata, muovendoci in un mondo che conosciamo più o meno bene.
Il segreto è questo. La programmazione non si insegna perché è già dentro di noi, bisogna farla uscire fuori. Questo è più difficile, ma non di molto. Non ci credete? Proviamo.

Ricetta per il "programmatore della domenica"
(Ricordando quello che dicevano i camionisti dei primi automobilisti).

Un computer lavora seguendo almeno tre fasi principali:
  1.  Leggere le informazioni
  2. "Manipolare" le informazioni
  3. "Mostrare" i risultati.
Ci sono programmi che non hanno bisogno della fase 1 e magari neanche della 2, ma sicuramente avranno bisogno della fase 3.
Esempio: un programma che scrive "ciao".
  1. Dati da  leggere? Nessuno. (non serve)
  2. Manipolazione sui dati? Nessuna (non serve)
  3. Uscita dei dati? Si, mostra la frase "ciao" (serve)
Domanda: Esistono programmi senza la fase 3?
Forse si, ma a cosa servirebbero? Non "diranno" (a nessuno) i loro risultati.

Continuiamo la ricetta: "Voglio fare un programma che faccia 5+3".
Possibili soluzioni:
  1. "Mostra" il risultato della somma del numero 5 e del numero 3.
  2. "Mostra" il numero 8.
Per l'utente finale non ci sarà differenza.
In entrambi i casi vedremo la risposta giusta (il simbolo 8) ma l'avremo ottenuta in due modi diversi !
Nel primo il programmatore dovrà conoscere come funziona (un pochino) il computer, nel secondo no.
Purtroppo entrambe le soluzioni saranno inutili:
Chi utilizzerebbe un programma che scrive sempre e solo 8 ? Nessuno !

Finalmente vedo lontano il bus, spero di aver aiutato (almeno un pochino) l'aspirante automobilista della domenica (dei computer).

Ciao
Paolo :-)

Continua con:  Impariamo a programmare? No, grazie ! (2a parte)






Nessun commento: