Quando si ha a che fare con lo sviluppo di un framework MVC utilizzando un linguaggio come PHP 4 non ci vuole molto per raggiungerne il limite dell’espressività (per esempio si fa presto a sentire il peso di una sitassi troppo verbosa, soprattutto quando si cerca di improntare le cose in un contesto di RAD). A quel punto ti viene voglia di ampliare i tuoi obiettivi sperimentali provando a effettuare un’implemetazione del tuo modello utilizzando un linguaggio più elegante (non che non ami PHP… – itutto gira intorno al concetto di bellezza del codice: su considerazioni di questo tipo potrei scrivere per ore).
Dato che gli obiettivi sono puramente sperimentali puoi permetterti anche scelte bizzarre…
Metti da parte le opzioni ovvie e inflazionate – anche se razionali – poi decidi di escludere la prima alternativa originale che ti viene in mente perché troppo legata al mainstream (anche se .Net e Mono non sono affatto male). Poi ti ricordi di Groovy con cui, sfruttando le tue buone conoscenze in ambito Java, potresti realizzare un prototipo e staccarti per un attimo dal modo di pensare e dai vincoli imposti da PHP (a onor del vero se si sceglie di utilizzare PHP 5 le cose migliorano sostanzialmente).
Ovviamente scopri subito che ci hanno già pensato, anche se forse facendo un po’ troppa confusione… Rendersi conto che qualcuno ha già sfruttato un’idea è “la prima regola dell’originalità “.
Interessante è anche Trails (progetto simile, per molti versi).
Tornando alle cose serie e all’ambito PHP – credo che in questo momento non abbia senso investire troppe energie nel tentativo di re-inventare un framework full-stack e complesso. Tra pochissimo uscirà la versione stabile di eZ components (attualmente in beta), ed è pure imminente una prima release del nuovo framework di Zend (saranno inflenzati dal loro recente accordo con l’IBM?). A quel punto si potranno tirare le somme e valutare la possibilità di aggiungere (o togliere) qualcosa…
Per concludere (perdonate l’andamento un po’ sguaiato di questo post) vi segnalo il progetto Wheat che utilizza un approccio architetturale molto interessante. Per il momento questa piattaforma (realizzata in C++) è solo un prototipo.
Every object has a URI, the virtual machine is a web server, and the development environment is a Wiki!
…
Wheat’s object model is like the unix file system: There is a root object, and every other object is explicitly contained in another.
…
Different parts of the object three can be stored using different techniques, in different media. To code accessing the objects, it appears as a seamless object space.
…
Web programming is sufficiently different from desktop and server application programming to warrant a new model…
Per i temerari esiste anche un’ulteriore alternativa…