All’indomani della pubblicazione di Imparare a programmare con PHP abbiamo chiesto agli autori, Maurizio Boscaini e Massimiliano “Max” Masetti, di raccontarci come si avvia una carriera da programmatori a partire, appunto, dal linguaggio PHP e se e quanto la scelta del linguaggio influisca sull’efficacia dell’apprendimento del pensiero computazionale.
Tra libri a due mani e libri a quattro mani avete parlato di come studiare e applicare la programmazione con JavaScript e con Python, e ora segue PHP. La filosofia dichiarata di questi testi è imparare facendo. Che cosa avete imparato, un libro dopo l’altro, rispetto agli inizi?
Maurizio: Che la filosofia imparare facendo funziona davvero! Scrivendo i libri abbiamo davvero imparato molte cose e non solo a scrivere (dove comunque ho ancora parecchia strada da fare). Da buon informatico (o, meglio, ingegnere elettronico a indirizzo informatico) ho avuto conferma che il bug è tra di noi e prospera!
Nonostante le revisioni a più occhi c’è sempre qualche errore. Questo ti porto ancora di più a pensare e agire in un’ottica di miglioramento continuo. Come autore ho imparato che mixare opportunamente teoria e pratica è davvero un’alchimia e la pietra filosofale per trasformare una buona idea in un buon testo non l’ho ancora trovata.
Ho imparato che l’Italia è lunga (e larga): alcuni lettori trovano i nostri libri miei troppo semplici, altri troppo complessi. Ci sta. È giusto che sia così: storie personali, conoscenze, competenze eccetera sono davvero varie.
Max: vorrei solo aggiungere, a rischio di diventare cavilloso, che in informatica e in particolare nella programmazione, non solo “si fa” ma “si fa fare”: è anche per questo che programmare aiuta a sviluppare il pensiero operativo (o computazionale) e insegnare a far fare è una sfida ancora più ardua. distillare il tutto in un libro è un’avventura incredibile e, come insegnare in classe giorno per giorno, dagli esiti incerti.
Quali sono le tecniche, i software, gli automatismi che migliorano la tua prolificità e produttività di autore?
Scriviamo utilizzando LibreOffice, su GNU/Linux (Ubuntu) e su Mac. Abbiamo creato qualche script bash e programma Python per automatizzare alcuni compiti: estrapolazione immagini dai file .odt (è facile, stanno nella la directory media), ritagliare le immagini stesse in automatico, creare i PDF dei capitoli e del testo.
In particolare, Max ha automatizzato la colorazione del codice in Write, il modulo di videoscrittura di LibreOffice, in modo da poter avere uniformità nei listati.
La scelta del linguaggio per iniziare a programmare dipende anche dal carattere? Cioè, si vedono ragazzi istintivamente più portati a impegnarsi su PHP che su altri linguaggi?
Sicuro! Ci sono ragazzi, pochi, quasi tutti maschi e che spesso frequentano i CoderDojo, che hanno un approccio naturale ai linguaggi di programmazione testuali e all’interfaccia a carattere.
La maggior parte non è nerd inside e quindi si trova più a suo agio con un approccio visuale e grafico, in stile Scratch. Ma questo non preclude un arrivo ai linguaggi visti come più professionali; si tratta spesso solo di un punto di partenza diverso.
Per concludere: il carattere di un programmatore probabilmente segna il punto di partenza: interfaccia a riga di comando o interfaccia grafica.
Questo libro e gli altri vostri parlano di programmazione dai 13 anni in su ed è vero; passata l’infanzia si può cominciare a programmare con profitto a qualunque età, anche non più verde. E una volta cominciato, quanto ci vuole per smettere di definirsi agli inizi?
Maurizio: Domanda bella e difficile… io quando affronto un nuovo linguaggio riparto sempre dall’inizio (mi piace ripassare e sentire come altri raccontano il percorso di scoperta di un nuovo linguaggio). Mi rendo conto che non sono più all’inizio quando penso a un problema da risolvere e ho chiaro come dovrò scriverlo con quel linguaggio. Anche se non ricordo a memoria i comandi o non li conosco proprio, sono in grado di capire qual è la via da seguire e cerco l’istruzione del linguaggio con la convinzione che ci debba essere. E spesso la trovo.
Max: molti linguaggi si assomigliano fin troppo, altri invece costituiscono un vero e proprio ostacolo, soprattutto quando richiedono una riprogrammazione del modo di pensare e di porsi. PHP è per costruzione un linguaggio di quelli noti con degli spunti di originalità che ne migliorano l’usabilità senza pagarne lo scotto: il fatto che sia così diffuso ed utilizzato non è un caso.
Qual è stata la parte più ostica di Imparare a programmare con PHP da sviluppare? E la più semplice?
Probabilmente una parte semplice è creare un programma che usi iterazione e selezione per generare codice HTML dinamico. La parte più complessa è collegare tutte, o quasi, le tecnologie necessarie per costruire una applicazione web che gestisca i dati con form e tabelle HTML lato client e su database lato server. Le tecnologie coinvolte sono parecchie: HTML, CSS, JavaScript, framework come Bootstrap e poi web server, PHP, MariaDB.
PHP ha una fama, solo in parte meritata, di linguaggio incline alla stesura di codice disordinato. Corrisponde a quello che hai sperimentato? Come hai fatto a scongiurare questo pericolo nel corso del libro?
Sinceramente non so se abbiamo scongiurato questo pericolo, magari! PHP 7 è davvero un linguaggio tosto che permette di scrivere codice ordinato e pulito.
Il problema è che scrivere bene del codice richiede molta esperienza e la programmazione web è complessa a causa delle molte tecnologie che coinvolge e delle conoscenze richieste. Noi abbiamo provato a insegnare PHP in maniera pulita, cercando il più possibile di applicare la separation of concerns (HTML si occupa di contenuto e struttura, CSS di presentazione eccetera). Il risultato è comunque un compromesso con l’esigenza di arrivare a eseguire codice facilmente comprensibile.
Avete un IDE, un ambiente di sviluppo preferito per stendere progetti in PHP?
Il linguaggio è passato attraverso sette major version. Per che ragione ti sentiresti di raccomandare l’uso di PHP 7 rispetto a versioni magari più semplici?
Maurizio: Come si diceva prima, PHP 7 ha fatto un salto davvero notevole. Solo per ricordare un paio delle novità introdotte: dichiarazione del tipo di dato di ritorno e la dichiarazione dei tipi di dati scalari.
Max: quando si sale sulla barca dell’ICT non è facile scendere e decidere di fermarsi: le tecnologie (intese come linguaggi, framework, sistemi operativi, applicazioni eccetera) sono oggetti fluidi, che evolvono molto rapidamente o muoiono, si adattano all’ambiente che muta o no. Un esempio è PHP 6, una versione che nata male non ha visto la luce. Immaginare di scrivere il programma definitivo nel linguaggio definitivo sul sistema operativo definitivo… non è un’utopia, semplicemente un nonsense.
C’è un pons asinorum per PHP, una sfida che se superata dà diritto a sentirsi buoni programmatori?
Un buon programmatore non è quello che non fa errori, bensì quello che riesce a correggerli. Esistono dei servizi online di coding challenge che danno un’indicazione del proprio livello algoritmico e di conoscenza dei linguaggi di programmazione (gratuiti e a pagamento). Queste sfide sono utili, ma sono sicuramente un criterio non completo né perfetto. Un buon programmatore, infatti, si misura anche in base ad altri fattori un po’ più difficili da quantificare come la capacità di scrivere codice leggibile e la capacità di lavorare in gruppo.
Una raccomandazione ai lettori che si accingono ad aprire il libro e iniziare un cammino da programmatori?
Maurizio: Un approccio pratico: provare tutti gli esercizi e di farsi domande sul funzionamento (o il non funzionamento) del codice. Nello stesso tempo, un approccio teorico: ricordarsi di staccare le dita dai tasti per leggere e ripensare. La sindrome da smanettoni è molto diffusa!
Max: Se posso, rincaro la dose:) Nell’immaginario collettivo il programmatore è una sorta di mago che premendo un bottone risolve “il problema”. Secondo me il programmatore, sia agli inizi che esperto, è un caparbio artigiano che realizza la sua opera solo grazie alla minuziosa continua rimozione dalla “soluzione” di inevitabili di errori (i bug). L’errore di programmazione non è un incidente ma il più ovvio cammino verso “il bottone che risolve il problema”: a chi inizia a programmare vorrei dire di non farsi sconfortare dagli errori, poiché si impara molto di più da un errore che da un programma corretto al primo colpo.