Fork me on GitHub
con Valerio Galano

Il podcast dove si ragiona da informatici

Un informatico risolve problemi, a volte anche usando il computer

Riflessioni e idee dal mondo del software

Episodio del podcast

Verso PHP 8

20 agosto 2020 Podcast Episodio 39 Stagione 1
Verso PHP 8

Descrizione

Sito ufficiale di Pensieri in codice - https://pensieriincodice.it

Attrezzatura:
Microfono Blue Yeti* - https://amzn.to/3kSE35f
Filtro anti-pop* - https://amzn.to/3baPMsh
Filtro anti-pop* - https://amzn.to/2MH0Wf1
Schermo fonoassorbente* - https://amzn.to/3sOZE0P



------------------------------------------
New in PHP 8
https://stitcher.io/blog/new-in-php-8

Sostieni il progetto

Sostieni tramite Satispay
Sostieni tramite Revolut
Sostieni tramite PayPal
Sostieni utilizzando i link affiliati di Pensieri in codice: Amazon, Todoist, Readwise Reader Proton Mail, Proton VPN, Proton Pass, Satispay

Partner

GrUSP (Codice sconto per tutti gli eventi: community_PIC)
Schrödinger Hat

Crediti

Montaggio - Daniele Galano - https://www.instagram.com/daniele_galano/
Voce intro - Costanza Martina Vitale
Musica - Kubbi - Up In My Jam
Musica - Light-foot - Moldy Lotion
Cover e trascrizione - Francesco Zubani

Mostra testo dell'episodio

Nascondi

Quella che segue è una trascrizione automatica dell'episodio.

Pensieri in codice, idee dal mondo del software a cura di Valerio Galano. Salve a tutti e ben ritrovati per un nuovo episodio di Pensieri in codice. L’uscita ufficiale della versione numero 8 del noto linguaggio di programmazione PHP è prevista per la fine di novembre 2020. Si tratta di una release molto importante per la storia di un linguaggio che è cambiato moltissimo nel corso dei suoi 25 anni di vita. Pensieri in codice non è un podcast tecnico, quindi non intendo parlare in dettaglio delle novità o delle caratteristiche deprecate. Quello che invece vorrei fare è provare a esaminare un po’ l’evoluzione di questo linguaggio che nel corso degli anni si è trovato ad essere al tempo stesso uno dei più diffusi nel campo dello sviluppo web, ma anche uno dei più anziani in circolazione. In competizione quindi con altri linguaggi più moderni, più agili e più liberi di evolversi nelle direzioni che i community e sviluppatori sceglievano per essi. In questo episodio vedremo quindi prima un po’ di storia del linguaggio e le direzioni prese negli anni e poi qualche dettaglio in più sulle ultime versioni e sulla prossima release che arriverà a fine anno. Prima di iniziare però ci tengo a precisare che quanto dirò è frutto di una mia interpretazione e di mie opinioni personali. Se non siete d’accordo o se volete aggiungere altro, siete liberi di farlo nei commenti o nel gruppo Telegram che trovate in descrizione. E ora procediamo. PHP nasce nel 1995 come uno strumento con un obiettivo semplice e preciso, cioè rendere dinamici i contenuti delle pagine web. Dopo soli due anni nel 1997 con la versione numero 2 diventa un vero e proprio linguaggio, con alcune funzionalità che perdurano anche oggi a distanza di più di 20 anni. Nel 1998 con la versione numero 3 lo sviluppo passa da una singola persona ad una piccola community di sviluppatori ed è allora che ha inizio la vera e propria evoluzione del linguaggio. Esso inizia ad espandersi anno dopo anno con una raffica di release che vanno dalla 4.0 alla 4.4 tra la metà del 2000 e quella del 2005. Siamo nel periodo della grande diffusione del web, le persone iniziano ad avere connettività e computer sufficienti per consultare siti web più complessi, pieni non solo di informazioni ma anche di immagini e riferimenti ad altri siti che potevano essere raggiunti con un clic. Iniziano quindi a diffondersi nuove tipologie di siti web come i blog e i forum e iniziano anche a nascere software che semplificano la gestione di questo tipo di piattaforme e parlo ovviamente dei CMS. Il PHP è la scelta migliore per correre a sviluppare un CMS, in quel periodo è molto in voga, poi ha una curva di apprendimento molto ripida e infine lascia enormi libertà agli sviluppatori. Nel frattempo, contemporaneamente a tale diffusione, nel 2004 è già iniziata la riscrittura del motore di compilazione Zend Engine che avrebbe dato vita alle versioni dalla 5 alla 5.6, le quali hanno poi coperto un arco temporale di più di 10 anni a partire dal 2005. Per il PHP è proprio il momento di battere il ferro finché è caldo, il web è in espansione, il linguaggio è ben visto dai singoli sviluppatori e dalle community dell’open source, CMS come WordPress, Joomla, Drupal e Magento si dividono buona parte dei siti in circolazione. Ecco dunque che si cerca di assecondare le richieste della community, aggiungendo caratteristiche e subcaratteristiche per risolvere tutti i problemi che si presentano di anno in anno. Quello di cui però non si tiene conto, secondo me, è che il web di quel periodo sta esplodendo ma in modo piuttosto caotico. Tutti, dagli sviluppatori, alle aziende, ai blogger, si muovono in tutte le direzioni, cercando di capire cosa funziona e cosa no, cosa vale la pena di realizzare e cosa invece va lasciato indietro. Nel tentare di seguire questo processo, secondo me anche il PHP si sviluppa in modo piuttosto caotico, contrapponendosi a linguaggi più rigidi come ad esempio Java e demandando agli sviluppatori molti degli aspetti della buona programmazione. Alcuni tentativi di correggere questa tendenza appaiono chiari nella nascita dei vari framework, ma anch’essi sono influenzati dal periodo in cui appaiono e in cui si diffondono. Ad esempio la differenza tra uno Zend Framework, il nome Laminas risale a meno di due anni fa, e un Laravel è palese a chiunque abbia mai avuto a che fare con entrambi questi framework. Il primo è sicuramente più flessibile, ha una community più grande, ma è più lento in fase di esecuzione ed è più complesso da utilizzare e da padroneggiare. Il secondo è più agile, risolve una buona gamma di problemi in modo estremamente semplice e veloce, ma poi diventa più complicato per uno sviluppatore risolvere problemi che si rivelino un po’ più particolari. In pratica sono bastati pochi anni di distanza, Zend Framework del 2006 mentre Laravel del 2010, per avere due framework dal carattere totalmente opposto. E questo secondo me dipende dal fatto che nei anni 10 del 2000 la tendenza dei nuovi linguaggi è stata quella della semplificazione. Forti delle esperienze fatte con i linguaggi precedenti, infatti i progettisti dei nuovi linguaggi, framework, librerie eccetera, hanno sviluppato soluzioni semplici e modulari per una vasta gamma ben definita di problemi. Hanno prodotto documentazioni chiare, lineari ed esaustive. Hanno creato insomma nuovi prodotti che implementassero solo le parti migliori prese dai prodotti precedenti e vi hanno poi aggiunto nuove funzionalità e nuove idee. Sto parlando ovviamente di framework del calibro di AngularJS, Node.js, React ma anche di linguaggi come Go. Tutti nati intorno al 2010 e tutti dotati di una nuova filosofia di sviluppo. E dove era il PHP nel frattempo? Beh, PHP continuava ad essere un pezzo importante del web grazie alle tantissime piattaforme e ai siti attivi ma al tempo stesso doveva trovare un modo di adeguarsi alla nuova andatura di tutti i nuovi concorrenti. Ed è così che il 3 dicembre 2015 debutta la versione 7.0 che porta con sé due importanti novità. La prima è il nuovissimo motore Zend Engine 3 ideato per migliorare le performance e avviare quella rincorsa nei confronti dei concorrenti che potevano contare su punti di forza come l’elaborazione asincrona e lato server. E chi al tempo, come me, già seguiva dei progetti o delle piattaforme in PHP con questo nuovo motore ha letteralmente visto dimezzare i tempi di esecuzione del codice. Oltre a ciò, la seconda novità, secondo me, era di tipo più concettuale. Si iniziava finalmente a eliminare componenti obsoleti e a dare la possibilità a chi avesse voluto di rendere più rigoroso il proprio codice. Personalmente, una delle caratteristiche che ho più apprezzato della versione 7.0 è stata la possibilità di specificare, nella dichiarazione di una funzione, i tipi di variabile in input o in output. Benché, infatti, la possibilità che una variabile possa contenere qualsiasi tipo di dato in qualsiasi momento possa essere considerato un vantaggio, soprattutto dagli sviluppatori alle prime armi, secondo me sapere che una variabile potrà contenere solo e soltanto quel tipo di dato permette di risparmiare codice e tanti imprevisti. Dalla versione 7 alla 7.4 prende quindi piede quello che io ho vissuto come un enorme miglioramento della filosofia di questo linguaggio, con il progressivo miglioramento delle performance, l’integrazione di componenti di largo utilizzo nel core e l’aggiunta di meccanismi e costrutti che permettono di ridurre la quantità di codice da scrivere. Molte di queste nuove caratteristiche ricordano molto da vicino i linguaggi in forte espansione negli ultimi anni e questo non può che fare piacere a chi, come me, ha iniziato a lavorare ed è cresciuto con il PHP. Ed ora, che succede con PHP 8? Beh, a giudicare dalla release note, si procede nella stessa direzione della versione 7. Nella prossima release sono infatti presenti varie migliorie per scrivere codice più compatto, nuove funzionalità che svolgono operazioni divenute molto comuni e semplificazioni nella sintassi e nell’utilizzo dei tipi. In descrizione trovate il link a un articolo abbastanza esaustivo sulle novità, che in realtà sono tantissime e che non c’è tempo di discutere in questo episodio. Ed è anche per questo motivo che in questi ultimi minuti intendo parlarvi solo di quelle che mi hanno colpito maggiormente. Iniziamo quindi dal nuovo compilatore JIT. Detto in due parole, si tratta di un nuovo motore che è in grado di identificare le parti del codice eseguite con maggior frequenza e quindi compilarle in modo differente per poterle eseguire più rapidamente. Ho letto vari articoli online che non lo ritengono una buona idea perché prevedono che il sovraccarico di elaborazione dovuto alla ricerca delle parti calde del codice sia maggiore del guadagno dato dalla compilazione speciale. Sinceramente io non sono d’accordo. Nel corso degli anni ho visto progetti che eseguivano lo stesso codice anche migliaia di volte per chiamata. Se il JIT compiler riuscisse ad abbattere i tempi di caricamento in casi del genere, secondo me sarebbe già un buon passo avanti. Una seconda novità, che già sono certo che utilizzerò tantissimo, è l’operatore null safe. In pratica, in generale, quando si scrive codice in PHP, c’è il pericolo che lo stesso metodo possa restituire sia un oggetto, sia un valore nullo. Per questo motivo, quando si utilizza un metodo del genere, è necessario, per evitare problemi, controllare che il valore ritornato sia veramente un oggetto. Altrimenti si rischia di invocare un secondo metodo su un valore null e provocare un errore fatale. Questo nuovo operatore può invece essere piazzato tra la chiamata concatenata di due metodi. Se il primo restituisce null, l’operatore null safe non lancia il secondo metodo, ma restituisce direttamente null, evitando così errori fatali. Infine, l’ultima novità che mi ha colpito non è particolarmente importante, ma credo che comunque sia interessante da conoscere. In pratica, con la versione 8, finalmente gli algoritmi di ordinamento del PHP diventeranno stabili. Eh sì, perché non so se lo sapevate già, ma gli algoritmi di ordinamento del PHP sono sempre stati di tipo unstable. Il che vuol dire che non è possibile garantire l’ordinamento di due elementi uguali. In pratica, ciò significa, ad esempio, che se abbiamo una lista di oggetti che rappresentano degli utenti e vogliamo ordinarli magari per età, gli utenti con la stessa età capiteranno raggruppati insieme, ma il loro ordine sarà casuale. Con la nuova specifica del PHP 8, invece, sarà preservato l’ordine di partenza. Quindi, se di questi utenti con la stessa età Gino si trovava prima di Pino nella lista iniziale, allora lo sarà anche nella lista ordinata. Bene, queste erano le mie idee sul PHP 8. Io spero che la puntata sia stata interessante e, come al solito, vi invito ad aiutare il progetto condividendolo sui vostri social e magari partecipando alle discussioni nel gruppo Telegram che trovate in descrizione. Grazie a tutti per aver ascoltato fin qui e ricordate che un informatico risolve i problemi, a volte anche usando il computer.

Nascondi