|
Il Perl è il linguaggio più
usato per questo tipo di applicazioni. Come spesso succede il
successo di un linguaggio è dovuto ad una certa concomitanza
di fattori. Il Perl è universalmente disponibile
gratuitamente, è particolarmente versato per l'elaborazione di
testo (operazione fondamentale per programmi che elaborano pagine
HTML), ha buone capacità di interfacciamento a database.
Bisogna anche tener presente che è molto diffuso in ambiente
Unix dove è nato il Web e girano tuttora la maggior parte dei
server Web. Il linguaggio è molto portabile: ne esistono
versioni anche per Windows e NT, oltre che per OS/2, VMS e tanti
altri, e molti script sviluppati sotto Unix girano senza o con poche
modifiche sugli gli altri sistemi operativi.
Sin dalla versione 2.0 l'HTML
prevede un meccanismo che consente di inserire moduli nelle pagine
Web, le cosiddette “form”. Utilizzando i tag <FORM>,
<INPUT>, <SELECT> e qualche altro (vedi
figura 1) è possibile far comparire sulle pagina Web
caselle di testo, bottoni, selezioni ed altri elementi tipici delle
interfacce grafiche. L'utente può interagire con questi
elementi e immettere informazioni. Tuttavia una pagina HTML così
arricchita è del tutto inutile se non abbiamo modo di
utilizzare le informazioni fornite dall'utente.

Figura 1
Per elaborare i dati immessi in una
form serve un programma, che risiede sulla stessa macchina del server
Web, e che viene invocato dal server quando l'utente effettua una
“submit”, solitamente premendo un bottone. Per trasferire
i dati dalla form al programma di elaborazione dei dati il server Web
può utilizzare vari metodi. Il metodo “standard” è
il protocollo CGI (Common Gateway Interface).
Questo protocollo è stato
implementato sin dai primi server Web che la storia ricordi (Cern e
NCSA) ed è tuttora adottato dalla stragrande maggioranza dei
Web Server in uso. Molti server Web prevedono anche altri metodi di
interazione con i programmi, che sono più efficienti, ma che
tendono ad essere proprietari e specifici solo di certi Web Server.
Comunque per applicazioni semplici il protocollo CGI è più
che sufficiente.
Il discorso cambia quando si
gestisce un sistema come un motore di ricerca che deve gestire anche
centinaia di richieste al secondo. In questi casi l'overhead indotto
dal protocollo CGI è eccessivo. Per la verità
l'overhead non è dovuto tanto al protocollo CGI in se stesso,
che in fin dei conti è solo uno standard per passare
informazioni. Il problema è generalmente che per servire una
richiesta si deve mandare in esecuzione un programma. Si perde tempo
e si occupa memoria caricando il programma e facendo partire un nuovo
processo. Poi se il programma è scritto in Perl o in altri
linguaggi interpretati c'è una fase di inizializzazione e una
occupazione di memoria che è di qualche centinaio di kilobyte.
Quando si hanno centinaia di Perl attivi contemporaneamente la
differenza rispetto ad un programmino in C di dieci kilobyte si
sente!
Ci sono diverse tecniche per
affrontare questi problemi, che possono benissimo essere usate
contemporaneamente. Comunque ne accenniamo soltanto in quanto esulano
dagli scopi del nostro articolo:
Riscrivere in C/C++ gli script
(presumibilmente quando ormai si sono stabilizzati - il Perl è
un ottimo strumento di prototipazione).
Compilare il Perl (è
possibile farlo solo da pochissimo tempo e il compilatore è
limitato ma qualcosa già si muove in questa direzione).
Attivare una sola istanza
dell'interprete Perl insieme al server Web e fargli precompilare gli
script. Alcuni Web server consentono questa tecnica. Il Perl pur
essendo un interprete precompila gli script prima di eseguirli e la
velocità è più che rispettabile (inferiore
certo al semplice C ma comunque piuttosto buona). Per questo
occorre usare il mod_perl.
|