Un confronto tra i moderni linguaggi di programmazione per la scelta del sistema da utilizzare, non può oggi prescindere dal prendere in considerazione anche gli aspetti non direttamente connessi alla "bontà" del codice; una parte molto importante è svolta infatti dai software che aiutano il programmatore ad elaborare codice sorgente con quattro principali caratteristiche:
- velocità di scrittura
- facilità di manutenzione
- portabilità elevata
- velocità di esecuzione
Linguaggi di programmazione come visual basic e delphi hanno fatto dei loro tool rad (Rapid Application Development - Programmi per lo sviluppo rapido di applicazioni) il proprio punto di forza. Anche se il php non dispone direttamente di questi sistemi (e nella maggior parte dei casi non se ne sente molto la mancanza), è possibile rendere il lavoro svolto dal programmatore se non più leggero in quantità, almeno più leggero in qualità attraverso l'utilizzo di editors, strumenti per l'accesso rapido ai database, librerie di codice, cachers ed altro ancora.
Editor
Qualunque sia il sistema operativo che voi utilizziate esisterà sicuramente un editor in grado di permettervi di scrivere codice php: basta un semplice editor di testi come possono essere i vari notepad su windows e i gedit o altri su linux. Essenzialmente gli editor per questo linguaggio di programmazione infatti altro non sono se non editor di testi arricchiti con funzionalità specifiche per la programmazione che possono andare dalle più semplici come il diverso colore associato alle diverse parti del codice (ad esempio un colore per le parole chiave, uno per i commenti, uno per le stringhe, etc.) o la numerazione delle righe, fino a funzioni più complesse come l'autocompletamento del codice, l'integrazione delle "references" del linguaggio, la creazione di file di "progetto" o altro ancora.
Sul forum di html.it, alla sezione php, è stato aperto un thread sui linguaggi di programmazione in cui sono elencati alcuni dei software per scrivere codice in questo linguaggio.
Context
Il mio editor gratuito preferito è senza dubbio Context: parte veloce, non ha fronzoli inutili, legge facilmente file molto grossi (provato con un dump da database da 60 mb), ha l'highlight per molti linguaggi di programmazione e supporta la lingua italiana. Quando lavoro su sistemi Windows lo installo per modificare ogni genere di file testuali e quando programmo su linux ne sento la mancanza.
Non presenta la completezza di alcuni suoi concorrenti per quanto riguarda le funzionalità per il php ma d'altra parte non è stato progettato per essere un edito php bensì un editor per programmazione.
Sito web - Screenshots
Bluefish
Bluefish si presenta come uno dei migliori editor per la programmazione in ambiente linux per Gnome. Personalmente l'ho trovato molto leggero e veloce anche se presentava un bug per cui il programma terminava al passaggio del mouse su un particolare menu, bug tra l'altro che è stato sicuramente risolto. E' stato pensato come editor html ma svolge egregiamente anche il ruolo di editor php. Da considerare il fatto che il progetto sia open source e con una discreta comunità di programmatori alle spalle.
Sito web - Screenshots
Quanta plus
La prima caratteristica di questo programma che salta subito agli occhi è senza dubbio l'interfaccia grafica che sembra essere molto ben curata. A parte l'aspetto puramente estetico, Quanta plus, editor per ambiente Linux con KDE presenta un gran numero di funzionalità aggiuntive tra cui un comodo albero per avere sempre sotto mano le varie componenti di uno script (variabili, funzioni, file inclusi, classi usate) e un assortito insieme di funzioni per scrivere codice html.
Sito web - Screenshots
Dreamweaver
A differenza dei programmi menzionati precedentemente, Dreamweaver è uno degli editor a pagamento più conosciuti in ambito web. La sua caratteristica principale, cioè l'essere un editor WYSIWYG (What you see is what you get - Quello che vedi è quello che ottieni) non è molto utile allo sviluppo del codice php sotto forma di classi o codice funzionale, ma d'altra parte uno degli ambienti in cui è più utilizzato il php è nella realizzazione di piccole parti dinamiche all'interno di pagine web. Se utilizzate la versione MX di Dreamweaver potrete apprezzare l'integrazione che è stata raggiunta con questo linguaggio per il quale, in versioni precedenti di questo editor, era necessario installare componenti di terze parti come descritto da questa pagina di html.it.
Sito web
Zend studio
Termino questa carrellata rapida sugli editor con il programma di casa Zend, la società a cui si deve il motore del php dalla versione 4, che integra una serie di funzionalità avanzate come un browser cvs, un albero per il codice usato dallo script, il completamento del codice, un debugger interno, un client ftp per caricare il codice scritto direttamente sul sito web di destinazione e un client sql per eseguire query sul database e verificare la correttezza del codice sql scritto (vedremo in seguito dei software in grado di fare questo). Purtroppo qui la qualità si paga eccome: la licenza annuale per lo Zend Studio Enterprise arriva a costare 1495 dollari!
Sito web - Screenshots
Accesso al database MySQL
La maggior parte degli script sviluppati in php presenta un'integrazione più o meno accentuata con un database, generalmente mysql, più raramente pgsql o sqllite: per questo motivo risulta molto utile avere sotto mano durante la programmazione di uno script la struttura del database con cui andreamo ad interagire ed eventualmente la possibilità di "provare" le query e modificare i dati presenti nel database. L'idea insomma è quella di utilizzare una maschera semplice ed intuitiva per la gestione dei dati durante le fasi di programmazione e popolazione del database e la potenza di questi database per le versioni di produzione.
Esistono svariate soluzioni che fanno quello che ci interessa: qui ho cercato di presentarne alcune, ognuna diversa dall'altra, in modo da poter farsi anche un'idea dell'ampiezza della richiesta di questi programmi. I programmi proposti sono tutti per MySql; in ogni caso esistono soluzioni analoghe per altri sistemi e spesso i nomi sono molto simili (ad esempio phpMyAdmin e phpPgAdmin).
phpMyAdmin
Questo software è stato interamente sviluppato in php con l'intento di creare un completo tool per l'amministrazione di server mysql. Il progetto, seppur ambizioso, ha riscosso un enorme successo e oggi praticamente ogni server su cui gira un server mysql dispone di una versione installata tramite la quale gestire i propri database e i dati presenti in essi.
La grafica di phpMyAdmin è molto curata e come questa anche le caratteristiche tecniche. L'unico limite di questo programma è dato dalla sua natura: essendo uno script deve essere installato su macchine con un server web (ad esempio Apache) già integrato con il motore di parsing del php e possibilmente sulla stessa macchina del server mysql. Le interfacce web inoltre impongono un funzionamento talvolta diverso da quello consentito in ambiente desktop rendento ad esempio impossibile l'utilizzo dei comuni sistemi di trascinamento. Per contro questa soluzione può garantire un accesso eterogeneo da qualunque sistema si utilizzi rendendo inoltre i dati fruibili da diversi pc senza installare niente.
Sito web
MySQL Query Browser
La soluzione ufficiale della MYSQL AB è MySQL Query Browser, un'utility distribuita a parte rispetto al server che ci permette di eseguire le query che desideriamo direttamente sul nostro database. E' sicuramente una soluzione più pratica rispetto a phpMyAdmin dato che non è necessario installare un server web con il relativo interprete php.
Con questo programma gratuito è possibile anche modificare la struttura di una tabella ed eseguire degli script (come ad esempio un dump contenente struttura e dati di un database). Non è invece possibile avere accesso ai dati in maniera comoda come avveniva con phpMyAdmin.
Sito web
Access
Uno dei database più diffusi nell'ambiente dei non addetti ai lavori è sicuramente Access che con la sua interfaccia standard e molto simile agli altri prodotti della suite office è molto semplice da usare. Grazie a questa caratteristica e alla presenza di un driver odbc per Mysql è possibile utilizzare i dati presenti in un database Mysql attraverso l'interfaccia fornita da Access.
Per prima cosa è necessario installare il driver odbc e configurarlo dal pannello di controllo (Pannello di controllo -> Strumenti di amministrazione -> Origine dati (ODBC)) inserendo useranme, password, host ("localhost" se si sta lavorando in locale) e nome del database da utilizzare. A questo punto è possibile accedere ai dati tramite File -> Importa dati esterni -> Collega tabelle, selezionando il drivere odbc appena installato e importando tutte le tabelle. Il sistema è un po' macchinoso, ma consente di far interagire due software antitetici.
EMS Mysql manager
Per ultimo segnalo questo programma che si presenta come il migliore in commercio anche se difficilmente se ne avrà bisogno data la natura dei problemi che si pongono allo sviluppatore web.
Le caratteristiche di punta sono l'interfaccia grafica ovviamente molto curata, una grande capacità di importare ed esportare dati, la possibilità di visualizzare come grafici le tabelle avendo così la possibilità di vedere concretamente le relazioni tra le tabelle e un accesso semplice ai dati consentendone così la modifica. L'unica pecca consiste nel prezzo decisamente elevato per un piccolo sviluppatore o per un ambito amatoriale.
Sito web - Screenshots
Conclusione
Una volta presa confidenza con gli strumenti basilari dello sviluppo di script php quali l'editor e una console comandi per il server sql, è possibile cercare soluzioni avanzate che velocizzino anche di molto la produzione di codice. Nelle prossime pagine vedremo come rendere gli script più veloci utilizzando software da affiancare al server, come velocizzare la scrittura del codice utilizzando librerie omnicomprensive.
Acceleratori
La maggior parte dei linguaggi di programmazione utilizzati anche in
ambito web prevedono la traduzione del codice dal linguaggio di
programmazione di alto livello ad uno specifico dell'interprete ad un
livello più basso: Java possiede il suo famoso bytecode che
necessita di una jvm per essere eseguito, asp .net e c# hanno il
“Common Intermediate Language” anche python ha il
suo bytecode. Anche il nostro caro PHP converte il codice sorgente
interpretato in bytecode prima di eseguirlo.
Generalmente i linguaggi di programmazione consentono di attuare una
compilazione o una pseudo-compilazione in grado di evitare il ripetersi
di alcune fasi sempre uguali sugli stessi script.
L'utilità di questi sistemi è abbastanza evidente
se consideriamo a cosa viene sottoposto mediamente un linguaggio di
alto livello (quali indubbiamente sono i linguaggi web): controllo
sintattico del documento, caricamento di eventuali documenti collegati
con relativo controllo sintattico, traduzioni varie per rendere il
codice di alto livello comprensibile da un interprete di livello
più basso, traduzione in linguaggio macchina in ultima
analisi. Se ci pensate bene la metà di questi controlli non
cambia assolutamente fino a che non vengono modificati i file presenti
sulla macchina, eppure vengono effettuati comunque.
In PHP non esiste e non è previsto al momento che esista un
sistema del genere in grado di diminuire il carico sul server e al
contempo aumentare la velocità di esecuzione degli script.
Sono però presenti da vari anni degli strumenti rilasciati
dalla comunità che ruota intorno a questo linguaggio di
programmazione in grado di agire da ponte tra l'interprete PHP e i file
presenti nel filesystem salvando i file utilizzati nella memoria
condivisa del server in modo che siano velocemente reperibili alla
successiva richiesta.
Ecco un breve elenco dei più celebri.
eAccelerator (ex Turk
MMCache)
Versione: 0.9.4 (15 Febbraio 2006)
Licenza: open-source
Os compatibili: Linux, BSD
Versioni di PHP compatibili: 4, 5.0 (la versione 0.9.5-beta2 sembra
essere compatibile con php 5.1)
Home page: http://eaccelerator.net/
eAccelerator funziona registrando una versione compilata degli script
nella memoria condivisa o sul disco se non ci fosse abbastanza spazio
ed eseguendo direttamente questa versione. È possibile
installare questo software come estensione PHP (non zend) e modificare
le varie impostazioni direttamente dal php.ini. Da sottolineare come
eAccelerator non funzioni con le versioni cgi o cli (linea di comando)
di PHP ma solo in congiunzione con un server web. È anche
disponibile un encoder per oscurare il proprio codice php
trasformandolo in una forma compilata. Questa sarà
normalmente eseguibile sui sistemi su cui è in esecuzione
eAccelerator. Il progetto è abbastanza maturo e ben quotato
all'interno della comunità open-source. Gli autori stanno
lavorando per renderlo perfettamente funzionante su sistemi con PHP 5.1.
phpAccelerator (ionCube)
Versione: 1.3.3r2 (Luglio 2005?)
Licenza: free
OS compatibili: Linux, BSD, Solaris
Versioni di PHP compatibili: 4
Home page: http://www.php-accelerator.co.uk/
phpAccelerator è stato il primo acceleratore disponibile per
PHP già dal 2001. Oggi è praticamente solo un
pezzo della storia di questo linguaggio di programmazione visto che non
viene rilasciata una nuova versione da molto tempo (la 1.3.3r2 per i
primi sistemi è stata disponibile nel 2003) anche se sembra
essere ancora funzionante per PHP 4. Questo software è stato
acquistato da ionCube, una delle società che ha basato il
proprio business sul PHP, è quindi possibile che in futurom
venga rimpiazzato da un sostituto come indicato sul sito web:
“Going forward, PHPA may be replaced by a new accelerator
product in the coming months.”
APC
Versione: 3.0.10 (11 Marzo 2006)
Licenza: open-source
OS compatibili: Linux, BSD, Windows
Versioni di PHP compatibili: 4, 5, 5.1
Home page: http://pecl.php.net/package/APC
APC fa parte di PECL, il repository delle estensioni
“ufficiali” per PHP, e uno dei suoi team leader
è Rasmus Lerdorf, l'ideatore del PHP. È stata la
prima estensione in grado di supportare PHP 5.1 (dalla versione 3.0.0).
Il vantaggio maggiore, oltre ovviamente agli sviluppatori che
può vantare e alla licenza open-source consiste nelle
sue funzioni
utilizzabili da ogni script php. In questo modo sarà quindi
possibile salvare con semplicità variabili e costanti
globali relative a determinati script ma che devono mantenere il
proprio valore dopo la conclusione dell'esecuzione o in contemporanea
tra diversi accessi concorrenti.
Zend Platform (ex Zend Cache)
Versione: 2.1.2
Licenza: commerciale
OS compatibili: Linux, BSD, Solaris
Versioni di PHP compatibili: 4.4, 5, 5.1
Home page: http://www.zend.com/products/zend_platform
Un tempo esisteva un estensione chiamata Zend Cache scaricabile
liberamente dal sito web della Zend, oggi è stato inserito
in questo pacchetto software venduto con il nome di Zend Platform con
l'intento di rendere più veloci e scalabili le applicazioni
web sviluppate in PHP. Velocizza l'esecuzione del codice PHP
aggiungendo anche un sistema di caching die contenuti dinamici
risultanti da un determinato script. È abbastanza intuitivo
come questa non sia la soluzione adatta per chi cerchi solamente un
cacher PHP.
Repository e Frameworks
Ogni programmatore sviluppa per conto proprio determinate procedure e
funzioni per velocizzare il suo lavoro e permettersi di riutilizzare il
codice. Da un lato questo non può che essere positivo dato
che due menti applicate allo stesso problema possono trovare due
soluzioni completamente diverse. Di contro è necessario
considerare che riscoprire l'acqua calda non può essere
utile a nessuno o che semplicemente il lavoro di qualcun altro
(soprattutto se sottoposto a continue modificazioni e migliorie nel
corso del tempo) possa essere migliore della nostra prima versione.
È per questo che bisognerebbe sempre prendere in
considerazione l'idea di utilizzare librerie sviluppate da altri quando
presenti e andare ad intervenire solo sulle mancanze che presentano.
Online sono presenti alcuni repository o progetti di librerie
rilasciate liberamente. È sempre consigliabile
però fare una ricerca con google prima di alzare bandiera
bianca e iniziare a sviluppare la propria libreria ex-novo: molti
progetti sono ben conosciuti ma non presenti in questi repository
(è il caso ad esempio di phpMailer, fpdf, jpgraph).
Pear
Il progetto Pear
(PHP Extension and Application Repository) nasce come il repository
ufficiale di classi per PHP per sopperire ad un'altra mancanza di
questo linguaggio. Anche in questo caso infatti altri linguaggi di
programmazione come Java, asp.net, perl o c# presentano una
versalità molto grande dovuta all'ampiezza delle funzioni e
classi predefinite distribuite con l'interprete che permettono di fare
praticamente ogni genere di operazione. In questo repository è possibile trovare una grande
quantità di classi, che a volte necessitano le une delle
altre, a volte sviluppate con propositi molto grandi come ad esempio
permettere la lettura e la scrittura di documenti excel con tanto di
fogli separati, formule, formattazione grafica. A causa della
ramificazione e interdigitazione presente fra i vari pacchetti Pear
è possibile usufruire di uno script a linea di comando che
si occupa di aggiornare le versioni sul sistema e scaricare i pacchetti
necessari a nuove installazioni.
PHP Base Library
Meglio conosciuta come PHPLib la PHP
Base Library si è fatta un nome al tempo della
versione 3 del PHP quando introdusse un sistema di sessioni per un
linguaggio che non le supportava. Oggi è ancora sotto
continuo sviluppo e presenta un sito web ricco di informazioni.
Importante notare come tutte le funzionalità fornite dalla
PHPLib e quindi anche le sessioni siano rigorosamente implementate ad
oggetti.
PHPClasses.org
PHPClasses.org
consente a sviluppatori da ogni parte del mondo di condividere il
proprio lavoro con gli altri là dove questo consista in
classi. Per fare cosa? In questo sito web sono presenti decine e decine
di categorie di classi disponibili per ogni scopo. Si va dalla classe
per creare captcha a quella per generare il soundex di una parola
francese, da quella per convertire i file .ico in formato png a quella
per controllare la correttezza sintattica di un indirizzo email. Notevole anche la presenza di sviluppatori provenienti da tutto il
mondo e la diffusione capillare dei mirror che permettono
così di rendere sempre accessibile il contenuto di questo
grande archivio.
Librerie database
PDO
Anche in questo caso inseguendo gli altri linguaggi di programmazione
più blasonati il PHP si è adeguato inserendo nel
proprio core un set di classi per l'accesso standardizzato ai database
come ad esempio il DBI per il Perl. Con la versione 5 di PHP infatti
viene data la possibilità di utilizzare le classi
PDO e i relativi metodi per accedere ai database senza
curarsi più di tanto del RDBMS con il quale ci si sta
interfacciando. Se si desiderasse utilizzare PDO con PHP 4 per
garantirsi il funzionamento del proprio lavoro con la nuova versione
è possibile fare uso del porting effettuato da Andrea
Giammarchi: le prestazioni non saranno le stesse dell'estensione
compilata in c ma sarà comunque funzionante. Soltanto una
piccola curiosità: con la versione 5 di PHP esistono ben
quattro metodi diversi per utilizzare un database MySQL e
cioè l'estensione mysql, l'estensione mysqli, PDO e ODBC.
ADOdb
La libreria ADOdb
è molto famosa per il suo ampio supporto garantito ad un
altissimo numero di database con la possibilità di passare
da uno all'altro semplicemente cambiando due linee di codice nel punto
in cui effettuiamo la connessione ad Db server. Questa libreria
è rilasciata sotto licenza LGPL, il che vuol dire in pratica
che potete utilizzarla liberamente in progetti commerciali senza dover
rilasciare il vostro codice e che potete, volendo, modificarne a vostro
piacere il codice. Avete la possibilità di sostituire la
versione PHP con un'estensione scritta in c in modo da incrementare le
prestazioni del 100%. Certo, non avrete le stesse prestazioni che sono
in grado di garantire le funzioni native per un determinato RDBMS ma
potrete avere una duttilità molto utile soprattutto nello
sviluppo di applicazioni da ridistribuire su varie piattaforme. ADOdb
è disponibile dalla versione 4.1 di PHP.
Pear::DB
La Pear::DB
è la classe del progetto Pear per l'astrazione
dell'interfaccia database ed è utilizzata da un alto numero
di pacchetti di tale progetto, quindi probabilmente sarà
già disponibile sul vostro sistema di produzione. Le
prestazioni di questo layer di astrazione sono leggermente inferiori
rispetto ad ADOdb ma la facilità di aggiornamento grazie
all'eseguibile da linea di comando forse compensano questa mancanza.
Pear::DB è compatibile con PHP versioni 4 e 5 anche se
l'ultima versione rilasciata risale ad un anno fa.