Rispondo su questo Blog per quanto riguarda l'osservazione in Linkedin sulle programmazioni obsolete e sono d'accordo che il Pascale, il C++, Java, Modula-3, Scheme siano meno semplici di sintassi e facilita' d'uso di un Python o chi per esso.
Per essere al corrente coi tempi del chi per esso, linko lo scarico del book gratuito qui e chi vorra' completare il bagaglio informatico ne faccia buon uso e via andare.
La mia idea e' che si sta procedendo verso quella che definirei “standardizzazione” del linguaggio, che facilita la programmazione, portando anche i non esperti del settore a “cimentarsi” nello sviluppo dei software.
Quella che scrivo e' una riflessione che solitamente evito per non appesantire il post con citazioni e riferimenti ma che qui vorrei particolareggiare per quello in cui opero, quello dello sviluppo di software.
Innanzitutto utilizzando il motore di ricerca, parto da una citazione famosa di Socrate:
“Scio ne sapio” (“Io so di non sapere”).
La citazione e' rivolta (e venne rivolta) con un atteggiamento polemico contro coloro che pretendono di sapere troppo ed ecco la mia di citazione che uso spesso, ovvero quella di non chiedermi consigli in quanto sapete sbagliare per conto vostro.
Ma il “non” sapere e' uno stato normale dell’uomo.
La battuta in Lynkedin di cui sopra tra l'altro citava:
“[…] So utilizzare abbastanza bene Windows 8; non sono un programmatore, ma mi interesserebbe prendere delle lezioni sull’utilizzo dello smartphone e tablet Apple (rispettivamente iPhone e iPad). Sono appassionato di questi apparecchi, ma non so utilizzarli. […]“Cosa ho pensato? La curiosita' e' lecita, ma non si puo' pretendere di imparare a programmare cosi' da un giorno all’altro e, sicuramente, non e' il caso di partire da Objective-C per farlo.
Il punto di partenza potrebbe essere quello di trovare un “linguaggio padre”, come puo' essere C/C++/Java per i linguaggi “tipati” o Python/PHP (di cui ho linkato lo scarico gratuito) per quelli “non tipati”.
L’importante e' iniziare a pensare alla programmazione.
Non programmare.
Mi ha molto affascinato l’articolo di Peter Norvig (padre dell’intelligenza artificiale) dal titolo: “Teach Yourself Programming in Ten Years“, e di cui riporto il link all’ottima traduzione di Fabio Tessitore): Imparara a programmare in 10 anni…perche' vanno tutti di fretta?
Vi invito a leggerlo. Io da qui ho estrapolato le seguenti frasi:
- La conclusione e' che le persone vanno molto di fretta quando devono imparare qualcosa sui computer, oppure che i computer sono qualcosa di favolosamente facile da imparare rispetto a qualsiasi altra cosa.
- Non ci sono libri su come studiare Beethoven, la Fisica dei Quanti o perfino l’Addestramento dei Cani in pochi giorni.
- Come disse Alexander Pope, “un po’ di sapere e' pericoloso“.
- Qual e' il punto? Alan Perlis una volta disse: “Un linguaggio che non influenza il modo di pensare la programmazione, non vale la pena di essere conosciuto. E' possibile che debba imparare una piccola parte del C++ (o piu' probabilmente, qualcosa del tipo JavaScript o Flash) perche' hai bisogno di interfacciarti con qualcosa di esistente per portare a termine un compito specifico. Ma allora non stai imparando a programmare; stai imparando a completare quel compito”.
- Alcuni ricercatori (Bloom (1985), Bryan & Harter (1899), Hayes (1989), Simmon & Chase (1973)) hanno dimostrato che sono necessari circa dieci anni per sviluppare esperienza in una gran varieta' di campi, inclusi il gioco degli scacchi, la composizione musicale, la telegrafia, la pittura, il suonare il pianoforte, il nuoto, il tennis, le ricerche in neuropsicologia e in topologia.
- La chiave e' la pratica intenzionale: non semplicemente farlo ancora e ancora, ma impegnarsi in un compito appena oltre le proprie abilita', provare, analizzare il proprio rendimento mentre e dopo l’esecuzione e correggere gli errori.
- Quindi ripetere. E ripetere ancora.
- Samuel Johnson (1709-1784) pensava ci volesse anche di piu': “L’eccellenza in un campo qualsiasi puo' essere raggiunta solo attraverso il lavoro di una vita; non si puo' acquistare ad un prezzo inferiore“. E Chaucer (1340-1400) aggiunse che la vita e' cosi' breve, l’arte così lunga da imparare. Ippocrate (c. 400 AC) e' noto per la massima “Ars longa, vita brevis“, che e' parte della citazione piu' lunga “Ars longa, vita brevis, occasio praeceps, experimentum periculosum, iudicium difficile, che in Italiano suona come” – [La vita e' breve, l’arte e' lunga, l’occasione e' fugace, l’esperienza ingannevole, il giudizio difficile].
- Sebbene in Latino, “ars” puo' significare sia arte che mestiere, nell’originale Greco la parola “techne” significa solo abilita', non arte.
- Lavora su progetti insieme ad altri programmatori.
- Sii il miglior programmatore in alcuni progetti; sii il peggiore in altri.
- Quando sarai il migliore potrai testare le tue abilita' di guidare un progetto e ispirare gli altri con la tua visione.
- Quando sarai il peggiore imparerai cosa fanno i maestri, e cosa non piace fare loro (perché lo faranno fare a te).
- Perlis dice che i migliori hanno un talento che prescinde dall’allenamento. Ma da dove viene questo talento? E' innato? O viene sviluppato con la diligenza? Auguste Gusteau (lo chef di Ratatouille) dice: “Tutti possono cucinare, ma solo gli impavidi possono essere grandi.” Penso sia volonta' di dedicare una larga parte della propria vita alla pratica.
- Ma forse “impavidi” è un termine per sintetizzare questo concetto.
- Oppure, come dice Anton Ego, il critico di Gusteau: “Non tutti possono diventare grandi artisti, ma un grande artista puo' venir fuori da ovunque“.
Occorre aver la coscienza di non sapere le cose, per studiarle, provarle e confrontarsi con gli altri, migliorandosi continuamente. Comunque, il segreto per sopportare lo sforzo e' quello di fare le cose con passione e percio' continua ad usare i pollici sul tuo smartphone e non pensare di imparare programmazioni in 10 lezioni.