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?