Alcune considerazioni su PHP e Python
Lunedì 20 Febbraio 2006 - 10:18
di Gabriele Farina

Leggevo un post sul blog di Guido Van Rossum in cui l’inventore di Python parla di come verranno implementate le interfacce nella terza versione di questo linguaggio.
Di tutto il post, quello che mi ha lasciato più stupito è la notizia che in Python 3000 aggiungeranno il supporto opzionale per i tipi di dato accettati e restituiti dalle funzioni. Il type checking verrà effettuato ovviamente a runtime e permetterà di sfruttare pienamente le interfacce in tutta la loro utilità. Questa decisione mi ha fatto venire in mente una domanda: ha senso che tutti i linguaggi di scripting si evolvano così tanto (vedasi PHP e Python stesso) indirizzandosi verso strutture sintattiche e logiche molto più vicine ai linguaggi di programmazione come Java o C?
Cerco di spiegarmi meglio: Python è un linguaggio stupendo ed in questo periodo sto cercando un modo per utilizzarlo pienamente anche su web, dove, a mio parere, non ha nulla da invidiare agli strumenti attualmente più utilizzati. Python è molto potente sintatticamente e permette la stesura rapida di applicazioni complesse grazie ad alcune feature proprie che lo rendono unico nel suo genere. Python è semplice da imparare anche per chi desidera limitarsi allo scripting di semplici routine, senza addentrarsi in discorsi più complessi quali metaclassi e generatori. Come mai quindi alla comunità risulta necessario aggiungere una feature (vedasi il type checking) che rischia di rendere il linguaggio meno duttile e molto più pesante a livello sintattico ?
Stiamo comunque parlando di un linguaggio di scripting, di qualcosa che è nato per essere scritto e letto velocemente. Di un linguaggio che deve rimanere semplice da comprendere e studiare e che renda produttivi fin da subito. Un’aggiunta come il type checking potrebbe essere deleteria e creerebbe forse più problemi che altro. Posso capire che al giorno d’oggi Python sia cresciuto talmente tanto che forse risulta necessario supportare maggiormente lo sviluppo enterprise, ma il rischio è che si vada a finire come PHP, che purtroppo sta diventando (e con le aggiunte di PHP 6 diventerà) un clone di Java meno supportato e meno performante. Nel caso specifico, per quale motivo dovrei utilizzare per lo sviluppo web un linguaggio meno supportato, più lento, con una forte influenza procedurale e con una quantità nettamente inferiore di strumenti validi a supporto ? Personalmente Java lo trovo troppo prolisso per i miei gusti, però mi pare che il discorso non faccia una piega … che poi personalmente utilizzerei PHP/Python conta poco …
Tanto per tirare le somme del discorso, sono dell’idea che ogni linguaggio deve scegliere una filosofia da seguire ed un campo principe sul quale specializzarsi, senza farsi influenzare dalle evoluzioni sintattiche e logiche apportate ai più o meno diretti concorrenti. Con Python ci hanno sviluppato Zope senza utilizzare type checking ed interfacce native, e mi pare abbiano fatto un ottimo lavoro.
Quasi dimenticavo: se lo sviluppo di PHP continua a seguire questa strada, tra qualche mese ci troveremo con tre versioni differenti del linguaggio e solo quella più datata supportata dagli hoster abitualmente utilizzati … qualcosa va fatto. Che senso ha avere strumenti interessanti quando in pratica non posso utilizzarli?
Categoria: PHP e Open Source | Permalink
Commenti
1
Ciao Gabriele, come ben sai, la penso come te! :P
Ogni linguaggio di programmazione deve avere il suo ‘compito’…quindi mi sembra inutile portare tutti i linguaggi allo stesso ‘livello’…a questo punto come dicevamo conviene aprire un nuovo progetto con un nuovo nome (x esempio x php6), in modo da non dividere lo stesso linguaggio in progetti (php4, 5, 6).
2
Già, il fatto di voler mantenere aperte troppe versioni di un linguaggio non giova ne alla società che lo supporta ne alla comunità che lo utilizza.
Oltretutto bisogna valutare il problema della retrocompatibilità: se si decide di rilasciare qualcosa che non è compatibile con le versioni precedenti del prodotto, a mio parere è meglio rilasciarla come branch differente e sotto diverso nome.# - postato da Darkbard - 20 Febbraio 2006 - 11:33
3
Di tutto il post, quello che mi ha lasciato più stupito è la notizia che in Python 3000 aggiungeranno il supporto opzionale per i tipi di dato accettati e restituiti dalle funzioni.
Avrai anche notato che c’è un dibattito furibondo sulla questione, sia nelle risposte a quel post di Guido, sia sulla lista Python-dev degli sviluppatori e non ultimo sul newsgroup di Python.
Per ora non è chiaro come andrà finire, certo è che i campi di utilizzo di Python si stanno espandendo e di conseguenza le esigenze cambiano, pensa soltanto alle implementazioni della VM di Python da parte di Nokia sulla piattaforma s60 e di MS con IronPython.
Io spero che la proposta non vada a buon fine, temo di vedermi spuntare codice Python decorato con i tipi dappertutto perché “così e più veloce”. La soluzione che auspico e che invece che vengano realizzate delle implementazioni di Python con un sistema di type inference aggressivo in modo da delegare le ottimizzazioni al compilatore e tenere il codice pulito (vedi anche progetto PyPy).
# - postato da deelan - 20 Febbraio 2006 - 12:42
4
ciao Gabriele,
credo che la risposta alal tua domanda sia semplice, anche se non esaustiva.Dobbiamo considerare un’immensa fascia di sviluppatori che sono nati sul web e come tali non hanno un background tale da passare agilmente a Java o C .
Questi sviluppatori, a volte molto bravi e veloci a progettare una pagina web dinamica in php o asp, fanno molta difficoltà a metabolizzare i concetti di programmazione orientata agli oggetti o di design pattern.
Col tempo però, la loro evoluzione nei linguaggi di programmazione gli permetterà di usufruire del linguaggio di scripting con un approccio più versatile e potente (usando la OOP di PHP per esempio)
Dall’altro lato molti sviluppatori Java e C decidono sempre più spesso di usare linguaggi come PHP e Python per sviluppare velocemente alcuni tipi di progetti sul web.
Per questi avere un linguaggio di scripting potente e che possono usare come fanno con il Java è molto utile.Personalmente ritengo positivo che i linguaggi di scripting evolvano sempre più, offrendo allo sviluppatore una potenza sempre maggiore.
Sta allo sviluppatore e alla sua esperienza scegliere la tecnologia più adatta al tipo di progetto che deve sviluppare.# - postato da Marco Casario - 20 Febbraio 2006 - 12:53
5
Un post analogo ad uno che ho scritto qualche giorno fa sul mio bolg :-) … io sono un maniaco delle ottimizzazioni e il non avere controllo sui tipi mi manda in bestia perchè sono costretto a scrivermi per i fatti miei dei parser di tipo al fine di assicurarmi che questi siano esattamente come me li aspetto.
Strano che anche Python stia muovendo verso questa direzione, visto che a differenza del PHP è fortemente tipizzato e quindi può già dare una consistente scremata di codice errato e variabili scritte a caso, cosa che il PHP invece non fa.
Personalmente sono dell’ idea che se mi serve qualcosa di più o se voglio avere le massime performance con il massimo controllo, è inutile spremere al midollo un linguaggio di scripting, tanto vale passare ad un linguaggio di programmazione, magari aggiornato, tipo C#, che stò apprezzando sempre più anche nel solo web.
Come sono maniaco io, reputo lo siano anche gli utilizzatori di PyPy ( io in PHP uso APD :D ) … ovvero vogliono sapere tutto al fine di ottimizzare al meglio ogni virgola.
Vedi che ho detto “ottimizzare” già un paio di volte, poichè sappiamo tutti che lo scripting ha prestazioni limitate … ma vorremmo tutti competere con gli altri pur restando sul linguaggio preferito.
Morale della favola, chi sviluppa da anni con un linguaggio di scripting prima o poi passa a tools fatti solo per ottimizzare al meglio le performance e se lo fa è proprio perchè si sente già limitato con il suo stesso linguaggio.
Alchè, quando si arrivano a questi livelli, tanto vale cambiare linguaggio e lasciare che quello utilizzato fino al giorno prima rimanga bello, semplice e potente, come ci ha conquistato, ma non il più performante, facciamocene una ragione, scripting è scripting, speriamo rimanga tale :-)
6
emh.. l’esempio di zope è pessimo :)
In realtà le interfacce ed il type checking ci sono in zope (zope3, almeno), e sono anche abbastanza pervasive, semplicemente sono implementate in puro python senza zucchero sintattico.
Per il resto concordo con deelan.
7
Bhe, difatti ho scritto “interfacce native” …
Che poi per implementare Zope abbiano deciso di utilizzare le metaclassi per emulare le interfacce è tutta un’altra storia.
Cmq deelan ha espresso un buon parere, speriamo che in molti seguano il suo consiglio ;)# - postato da Darkbard - 20 Febbraio 2006 - 15:56
8
Personalmente ritengo positivo che un linguaggio di scripting abbia “features” da linguaggio applicativo ed enterprise. Magari lo sviluppatore esperto è più veloce a creare applicativi utilizzando un paradigma ad oggetti, mentre nel contempo il novellino può ottenere rapidamente cmq un risultato “funzionante” con delle semplici procedure. E’ sempre buono che un linguaggio offra più alternative al suo utilizzo e adattarsi alle esigenze di tutti.
Certo aggiungere un nuovo branch al già incasinato panorama di release del php è effettivamente ridicolo, ma la colpa non è del php team, ma piuttosto della pigrizia dei sysadm che dovrebbero cominciare a muovere verso il PHP5. Finchè non lo fanno, il php team non può permettersi di abbandonare lo sviluppo delle 4.x…
9
pigrizia? abbiamo tutti progetti su php4 e nessuna intenzione di portarli su php5 perché il cliente non pagherebbe il lavoro di testing, non è pigrizia, è pecunia. php5 non è stato usato da molti fino ai giorni nostri perché semplicemente non aveva nulla di tangibile da offrire, le cose sono cambiate da quando le nuove librerie basate su php5 hanno dimostrato il proprio valore, sono le nuove features o symphony e zend a spingere php5 sui server e nelle teste degli sviluppatori? voto la seconda.
mi auguro un destino migliore per php6, ma senza miglioramnti significativi e tangibili per sviluppatori e clienti farà la fine della versione 5, languirà per anni semi-inutilizzata.
infine, una riflessione sul design di python, java, c#: linguaggi di programmazioni disegnati per benino, fatti per fare applicazioni su larga scala ed essere usati da laureati in ingegneria informatica, accidentalmente, qualcuno di questi ingegneri li usa per fare Applicazioni web.
php è parser di template nato per il web e utenti con modeste nozioni informatiche, dove a mio parere è il più semplice ed intuitivo, pensiamo a $_POST, gestione delle stringhe, template integrato nel linguaggio.
un design che fa schifo se volete, ma semplicissimo e che rende la vita comoda, a tutti, sul web.
Il concetto di migliore è relativo allo scopo.
conoscete tutti php-gtk, esiste da anni, mi pare nettamente inferire a tutte le alternative disponibili nei linguaggi concorrenti e lo stesso vale per php-cli, ambiti per cui php non è stato pensato.# - postato da smt - 30 Luglio 2007 - 11:57







