MISCELLANEA /

Programma e impara a programmare

Programma e impara a programmare

26 Agosto 2015 Redazione SoloTablet
SoloTablet
Redazione SoloTablet
share
Una intervista a Paolo Aliverti, autore del libro Programmare – Impara a scrivere qualsiasi tipo di software.

"Il motivo per cui nasce il mio libro è quello di cercare di spiegare come nasce il software e qual è il ragionamento del programmatore. Molti acquistano dei manuali di programmazione e cercando di leggerli per imparare a programmare, ma è come cercare di imparare a guidare un’auto leggendo il manuale d’uso e manutenzione. Ho lavorato a questo libro per almeno 3 anni cercando di individuare i processi e i ragionamenti di chi programma. Imparando il metodo, poi tradurlo in un linguaggio è quasi automatico. Se si impara ad andare in bici, poi siamo liberi di scegliere che bici utilizzare: da corsa, mono ruota, mountain bike o triciclo."

I ragazzi non programmano più. Nelle scuole non si insegna a programmare […] si preferisce dare loro la patente informatica europea. […]una patente non insegna a programmare ma solo a usare alcuni programmi informatici e a formare un operatore che preme tasti e clicca con il mouse” – Paolo Aliverti

In un bellissimo libro del 2012, Douglas Rushkoff (Programma o sarai programmato (Rushkoff Douglas) suggeriva di pensare a fondo i media digitali e le trasformazioni da essi determinati sulla realtà. Il libro di poche pagine ma ricco di spunti e riflessioni, suggeriva di programmare per non essere (ri)programmati. L’autore elencava dieci istruzioni per sopravvivere all’era digitale con l’invito alla programmazione di tempo e spazio, vita privata e sociale, spazi personali e lavorativi. Un invito rivolto a tutti, unitamente a numerose motivazioni forti a seguirlo.

Di programmazione parla anche un altro libro, scritto nel 2020 da Paolo Aliverti dal titolo Programmare – Impara a scrivere qualsiasi tipo di software. Un libro corposo pensato, organizzato e strutturato per aiutare a capire: come fare per scrivere un programma, come ragiona un programmatore, come fare per analizzare un problema da tradurre in codice software e come scrivere il codice che serve per una soluzione che possa funzionare.

Di questo e di altro abbiamo parlato con l’autore del libro. 

L’intervista a Paolo Aliverti, Scrittore, progettista, youtuber, programmatore, project manager ed esperto di Digital Fabrication è di Carlo Mazzucchelli, fondatore di SoloTablet 


 

Buongiorno, per iniziare può raccontarci qualcosa di lei, della sua attività professionale attuale e del suo interesse per la tecnologia? Qual è il suo rapporto e quale storia personale la lega a essa? Quale uso ne fa nelle sue attività lavorative? Non ritiene che oltre a imparare a programmare oggi dovremmo anche riflettere criticamente sulla tecnologia e i suoi effetti? 

Ho acquistato il mio primo saldatore all’età di 10 anni. Ero affascinato, fin da piccolo, dalle schede elettroniche e ricordo che smontavo di tutto per osservare le schede, i componenti e cercare di capire come funzionassero. Sempre negli anni ottanta mi fu regalato un computer ZXSpectrum 48K e iniziai ai quei tempi a scrivere i primi programmi in BASIC anche se ho tenuto separate informatica e elettronica fino al 2007 circa! Dopo la laurea in ingegneria ho lavorato per un po’ di tempo con delle aziende di robotica e poi, negli anni del boom di Internet, come programmatore.

Nel 2010 ho avuto la possibilità di creare una startup, FabLab Milano accompagnata da Frankenstein Garage e ho ripreso in mano il saldatore. Non ho mai abbandonato la passione per l’elettronica, l’informatica e la tecnologia ma non avrei pensato si potessero trasformare in un lavoro.

Da qualche anno ho lasciato FabLab Milano e mi dedico alle riparazioni, alla didattica e alla progettazione elettronica. Programmo ogni giorno, per poter creare nuovi video per il mio canale YouTube e sono costantemente circondato da fili, schede, circuiti. La mia passione si è trasformata in un lavoro e mi piace molto. Sono sempre alla ricerca di nuove tecnologie, nuove schede, nuovi sistemi. Mi piace capire come funzionano per poi spiegarlo agli altri.

Oggi il software è onnipresente. Ogni dispositivo ha un microcontrollore con del codice. Abbiamo tutti sempre uno smartphone in mano e lo sguardo fisso sullo schermo. Siamo fortunati rispetto a un tempo, quando non c’era Internet e per conoscere qualcosa dovevi sfogliare libri e riviste. Abbiamo centinaia di App e software ma i nostri dispositivi sono “chiusi”, soprattutto telefoni e tablet. Che purtroppo sono i preferiti dai nostri ragazzi. In sostanza si definiscono tecnologici ma lo sono passivamente. Il risultato è che pochi si avventurano a programmare come poteva accadere un tempo.   

 

Si dice che il software abbia preso il comando del mondo. Forse è una esagerazione, forse no! Dispositivi Mobile, Big Data, Cloud Computing, intelligenze artificiali, reti di oggetti intelligenti e prodotti tecnologici indossabili sono tutte realtà guidate da software, algoritmi, logiche applicative. Il software ha steso la sua ragnatela su ogni cosa rendendo urgente comprenderne il significato, il ruolo e gli effetti. Lei che ha iniziato a scrivere software all’età di dieci anni cosa pensa di questa incredibile evoluzione/rivoluzione? Perché ha deciso di dedicare alla scrittura di software un libro intero? 

Il software oggi è indispensabile per far funzionare tutti i dispositivi di cui siamo dotati e per far fronte all’inondazione di dati che stiamo vivendo. Credo che la situazione non potrà che peggiorare. Sempre più sensori e sistemi raccoglieranno dati e informazioni e come già vediamo oggi è poi difficile discriminare e capire cosa serve e cosa no in mezzo a questo oceano.

Mi preoccupa tutta questa voglia di raccogliere informazioni e la nostra sicurezza è sempre più a rischio. Infatti non mi piace per nulla l’Internet delle Cose e come sta evolvendo. Dovremmo sicuramente essere più consapevoli di come tutte queste informazioni vengono raccolte, quando e perché, ma senza entrare nelle paranoie di cui siamo già testimoni… i vari GDPR, legge dei cookie e ogni altra regola burocratica che rende tutto più difficile. Non che non servano, ma purtroppo dovrebbero essere i programmatori e chi crea i siti a essere un po’ più onesti ed etici mentre scrivono i loro codici. Mi rendo conto che è un po’ utopistico…

Il motivo per cui nasce il mio libro è quello di cercare di spiegare come nasce il software e qual è il ragionamento del programmatore. Molti acquistano dei manuali di programmazione e cercando di leggerli per imparare a programmare, ma è come cercare di imparare a guidare un’auto leggendo il manuale d’uso e manutenzione. Ho lavorato a questo libro per almeno 3 anni cercando di individuare i processi e i ragionamenti di chi programma. Imparando il metodo, poi tradurlo in un linguaggio è quasi automatico. Se si impara ad andare in bici, poi siamo liberi di scegliere che bici utilizzare: da corsa, mono ruota, mountain bike o triciclo.

 

Nell’introduzione del suo libro scrive: “spesso ero vittima della sindrome del cursore lampeggiante: mi sedevo davanti al monitor con l’idea di scrivere un grande programma in grado di rispondere alle mie domande o un nuovo gioco, ma dopo poche righe mi perdevo.” Oggi miliardi di persone soffrono di una sindrome diversa (peggiore?), quella dei MiPiace, dei messaggini e delle notifiche. Lei come molti altri è cresciuto con la tecnologia programmando e comprendendone per questo potenzialità opportunità, logiche e algoritmi. Oggi probabilmente molte persone non sanno nulla di ciò che sta dietro una funzionalità software, né perché sia stata implementata e con quali scopi. Eppure tutte le interazioni online potrebbero avere maggior senso se comprese nel contesto software di coloro che le hanno implementate. A chi si rivolge con il suo libro? A programmatori, codificatori e sviluppatori o a tutti? 

Uno dei grandi problemi di oggi è la rapidità del corso del tempo. Abbiamo accelerato e non sappiamo più prestare attenzione. Le cose ci scorrono davanti agli occhi e se richiedono un po’ di fatica, siamo indotti a soprassedere. Se un post non ha un’immagine, non lo leggiamo. Le logiche di questi siti sono spesso molto complesse e anche per un programmatore esperto possono richiedere qualche fatica o presentare parti oscure. Spesso più che il sapere come implementarle è utile capire il perché sono state realizzate così. Certamente chi sa come scrivere del codice è facilitato nel compito, infatti un programmatore professionista non è per forza legato a un preciso linguaggio e analizza le cose. Cerca di capirle per poi replicarle o modificarle. Il programmatore osserva un certo processo o una elaborazione intuisce quali sono i passaggi necessari.

Il mio libro è abbastanza pratico. Io non sono un filosofo e cerco quindi di insegnare come fare le cose, cercando di farlo in modo comprensibile. Temo che sia più un teso per chi vuole imparare a programmare con in testa uno scopo preciso: capire meglio come fare, trovarsi un lavoro, scrivere giochi e App… 

 

Cosa ci vuole secondo lei per scrivere software? Per molti la motivazione può nascere dalle opportunità lavorative e di guadagno (molti sviluppatori della Silicon Vally sono diventati milionari) ma forse non è sufficiente a spiegare perché così tante persone si impegnino in un’attività così impegnativa? Lo sviluppo del software, anche dentro boutique tecnologiche o multinazionali, continua a essere un lavoro artigianale sorretto da grande creatività, passione, ricerca del nuovo e bisogno di sorprendere, capacità innovativa e abilità. Lei cosa ne pensa? 

La storia che i programmatori diventino milionari credo sia un mito. Purtroppo i programmatori, specie in Italia sono maltrattati e malpagati. Io ho lavorato come programmatore per una quindicina d’anni e non tornerei a fare questo lavoro… o almeno sotto padrone. Di sicuro è un lavoro richiesto perché pochi lo sanno fare bene ma le società di consulenza informatica badano poco a queste cose. L’importante è fornire le persone richieste dai clienti. Lavorare in questo modo è deprimente. Non si ha una visione d’insieme del progetto e si ricevono dei compitini da svolgere. In questi ambienti si perde la caratteristiche artigianale del software che richiede ancora passione e creatività. Questo spiega anche perché oggi non siamo ancora riesciti a trovare dei metodi efficaci per scrivere il codice. Se l’ingegneria civile fosse al livello di quella del software preferirei vivere in una capanna ai margini del bosco piuttosto che girare in una città! Purtroppo e per fortuna c’è una forte componente creativa, umana e artigianale. In questo pochi sono bravi. Di sicuro conoscere un linguaggio di programmazione garantisce un pasto caldo ogni sera e un tetto sotto cui dormire. Per questo molti si dedicano al software. Purtroppo abbiamo perso un po’ la via. Sempre meno persone lo sanno fare e spesso abbiamo specialisti di un linguaggio più che vero programmatori. Io insisto sempre sul saper prima risolvere il problema e poi nel saperlo tradurre nel linguaggio di programmazione che ci richiedono. Questo è importante anche perché in futuro il nostro lavoro sarà garantito. La traduzione di un processo in un linguaggio lo sa fare anche un agente software, le descrizione del processo è invece qualcosa su cui l’intelligenza artificiale ha ancora qualche difficoltà (anche se ci lavorano da anni). 

 

Chi dice che oggi scrivere software sia semplice non sa di cosa parla. Modelli, linguaggi e strumenti disponibili, nella loro evoluzione corrente, sembrano effettivamente semplificare il lavoro ma nella realtà tutto è diventato molto complesso. Tutto è interconnesso, tutto viene aggiornato in continuazione, tutto si basa e funziona su milioni di righe di codice di cui non si conosce l’origine, le finalità e le eventuali vulnerabilità (è qui dove i cyber criminali trovano molte delle loro opportunità). Questa complessità suggerisce l’apprendimento di abilità e capacità particolari, l’acquisizione di tecniche, conoscenze ed esperienze sul campo, la disponibilità a lavorare in gruppo e grande adattabilità. Tutto ciò è vero, esagerato o verosimile? 

La complessità è in aumento. Ma credo sia una legge fisica… si dice che l’entropia sia in continuo aumento. Nel software ci si impegna parecchio. Se prendiamo lo sviluppo web che è partito con l’HTML, per poi passare ai primi linguaggio dinamici fino ad arrivare, oggi a una fusione di librerie, linguaggi, tecnologie e “tool” da far rabbrividire. Ogni anno abbiamo nuovi linguaggi, nuovi sistemi che passano velocemente di moda. A volte questa evoluzione è giustificata, ma spesso temo siano più che altro mode o tentativi un po’ artificiosi di creare opportunità economiche. Si possono valutare certe tecnologie solo con il tempo. Alla fine sono poche quelle che effettivamente prendono piede e sopravvivono. C’è, per fortuna, una specie di selezione naturale di ciò che funziona oppure no. Resta sempre valida la mia convinzione che se si impara ad andare in bicicletta, poi saremo sempre in grado di pedalare. Un programmatore abile e attento a quello che accade, nel tempo saprà distinguere le tecnologie più promettenti da quelle sospette o nate per fini di mercato e soprattutto saprà adattarsi in fretta. Chi domina i processi sa poi tradurli in ogni linguaggio.

In merito alla sicurezza, questo gran fermento di aggiornamenti, librerie e tecnologie ci lascia sempre con un fianco scoperto e ci saranno sempre falle e problemi di sicurezza. 

 

Scorrere l’indice del libro fa impressione, per la ricchezza dei temi trattati, riferimenti tecnologici, definizioni e approfondimenti. Eppure lei dichiara a inizio libro di non avere voluto creare un manuale e che non intende sostituire i numerosi manuali di programmazione già in circolazione. Per lei prima di scegliere e/o dedicarsi a uno specifico strumento o linguaggio di programmazione è meglio imparare a programmare. E lei con il suo testo che nasce da esperienze personali intende fornire quanto serve per questo tipo di apprendimento. Può spiegarci meglio cosa intende e cosa ha inteso realizzare/offrire a un potenziale lettore e aspirante programmatore? 

Ho cercato di trasmettere quello che mi passa per la testa mentre scrivo del software. Come si dice,  he per diventare esperti in un campo siano necessarie 10000 ore di lavoro. Io ne ho passate parecchie programmando, ben oltre le 10000 e orami mi viene spontaneo. Nella mia carriera ho dovuto progettare e scrivere numerosi algoritmi e mi sono spesso trovato di fronte alle medesime situazioni. Ho imparato a riconoscere dei pattern e ora quando scrivo software non devo rifletterci sopra molto perché ho le idee molto chiare. Dato un problema, vedo nella mia testa apparire le configurazioni da usare, le strutture dati necessarie e come comunicheranno le varie parti. È come giocare a scacchi. Le prime volte si devono provare tutte le mosse, ma con l’esperienza si acquisisce una visione più larga, che individua delle configurazioni precise. Scrivendo il libro ho cercato di prestare attenzione a come mi comporto io quando scrivo del software e ho decostruito il processo. Ho cercato di mettermi nei panni di chi non sa programmare e di osservare le cose con gli occhi di chi non è esperto nella materia. Questo è fondamentale per poter spiegare bene le cose: ci si deve mettere nei panni di chi ascolta (o legge). L’idea che ho seguito è stata quella di portare alla luce i processi mentali necessari per scrivere il software e poi applicarli ad alcuni casi pratici. Per imparare sarebbe poi necessario svolgere molti esercizi. Inizialmente da copiare e poi da provare a modificare. Questo però sarà il prossimo libro… 

La mia formazione marketing anglosassone mi ha sempre suggerito, prima di dare il via a ogni campagna e iniziativa marketing, di pormi due semplici domande: “Quali sono le… compelling reasons to buy” e “ What is in it for me”. Quali sono secondo lei i suoi potenziali lettori e quali potrebbero essere le loro motivazioni forti a comperarlo? Cosa crede di avere offerto loro per soddisfare queste motivazioni e trasformare bisogni forse impliciti in espliciti? 

Ho iniziato a scrivere “Programmare” quando mi sono accorto che le persone che seguivano i miei corsi su Arduino avevano difficoltà a scrivere il software. Anche l’elettronica non è semplice, ma il software pare essere più ostico. Considerato che a me veniva spontaneo scrivere un programma, ho cercato di capire come mettere anche gli altri nella condizione di farlo. Mi son accorto che “il problema dello scrivere codice” era molto diffuso e ho pensato di poter dare il mio contributo. Il software è onnipresente e quindi sono molte le persone che potrebbero essere interessate a capirne le logiche. Lo troviamo nei fogli di Excel così come nelle applicazioni di intelligenza artificiale. Sono numerosi gli ambiti in cui è necessario saper scrivere delle linee di codice.

Credo (e spero) di aver aiutato molte persone in difficoltà con questo testo. O di poterne aiutare appunto perché non mi soffermo su un particolare linguaggio anche se poi all’interno si trovano esempi scritti con Scratch e Python. 

 

Un’ultima domanda. Viviamo ormai in un’era mediata tecnologicamente. La tecnologia ha cambiato tutto, anche la nostra mente, oltre che i nostri comportamenti. Ormai passiamo molte ore al giorno (di più in questo periodo pandemico) dentro mondi virtuali percepiti come reali. Nel mondo fattuale siamo come gli oggetti che compongono le IoT, anche noi interconnessi, facili da seguire, monitorare e controllare. Al momento la nostra mente è dotata di un software di cui conosciamo ancora molto poco e che per questo rimane difficilmente programmabile e altamente imprevedibile. Eppure le intelligenze artificiali fanno pensare a qualcuno che presto, quanto meno nella forma ibridata e cyborg, sapremo anche programmare la mente (Elon Musk). Lei cosa pensa di tutto ciò? Quanto è avvenuto e sta avvenendo mantiene alto il suo entusiasmo da adolescente programmatore o lo sta incrinando facendo sorgere riflessioni critiche capaci di cambiare la sua opinione sul software?  

Sono sempre stato attratto dalla possibilità di replicare con un computer la mente umana. Oggi la tecnologia ha fatto passi da gigante e ci da la possibilità di studiare e simulare molte delle strutture neurali che compongono il nostro cervello. Nonostante ciò manca ancora qualcosa che leghi la complessità con la nascita della coscienza. C’è ancora molto da studiare e da capire e anche se affascinato dalla cosa, questa possibilità mi preoccupa non poco. Già oggi siamo circondati da agenti software che decidono per noi, ci studiano e ci osservano. Queste tecnologie più che controllare la mente rischiano di renderci dipendenti e pigri. Se questi automi prenderanno piede noi dipenderemo da loro anche per le più semplici esigenze. Già oggi ci rivolgiamo a dei motori di ricerca per ogni minima esigenza, per scioglierci dubbi o per svolgere calcoli che siamo troppo pigri per affrontare con carta e penna. Ci sono grandi opportunità ma anche grandi rischi e purtroppo devo dire che non vedo segnali rassicuranti. Basta salire in un metro, un autobus o fermarsi in una sala d’aspetto: una volta c’erano persone che leggevano un giornale o  un libro, ora sono tutti rapiti da questi piccoli schermi. Dobbiamo stare più attenti e riprenderci un po’ del nostro tempo. Leggere, fare calcoli a mano e non cedere alla pigrizia.

 

 

comments powered by Disqus

Sei alla ricerca di uno sviluppatore?

Cerca nel nostro database