Copertina
Autore Michele Sciabarrà
Titolo Linux e programmazione Web
EdizioneMcGraw-Hill, Milano, 1999, Informatica professionale , pag. 408, dim. 170x240x27 mm , Isbn 978-88-386-4091-9
LettoreCorrado Leonardo, 2003
Classe informatica: sistemi , informatica: linguaggi
PrimaPagina


al sito dell'editore


per l'acquisto su IBS.IT

per l'acquisto su BOL.IT

per l'acquisto su AMAZON.IT

 

| << |  <  |  >  | >> |

Indice


Introduzione                               XIII


Capitolo 1   Introduzione a Linux             1

1.1 Storia di Linux                           3
    Richard Stallman                          3
    Linus Torvalds                            4
    Open source                               5
    Le distribuzioni                          6
1.2 Installazione                             7
    Fare spazio                               8
    Preparazione dei dischetti di avvio       8
    Avvio dell'installazione                 1O
    Preparazione del disco                   12
1.3 Configurazione                           16
    Mouse                                    16
    Rete                                     17
    Fuso orario                              18
    Servizi                                  18
    Stampante                                19
    Password                                 20
    Boot                                     21
    Scheda grafica                           21
1.4 Programmi per Linux                      22
    Ambienti                                 22
    Elaborazione testi                       24
    Produttività                             26
    Database                                 27
    Intranet                                 28
    Internet                                 29
    Sviluppo                                 30

Capitolo 2   Linux                           33

2.1 I comandi fondamentali                   33
    Esaminare il file system                 34
    Gestire i file                           36
    Editare i file                           37
    Utenti                                   40
    Gruppi                                   43
2.2 File e processi                          44
    Permesso di esecuzione                   46
    File speciali                            48
    Processi                                 51
    Segnali                                  52
2.3 TCP/IP                                   53
    Indirizzi IP                             55
    Il routing                               56
    Configurare TCP/IP                       58
    Il Domain Name System                    60
    Configurazione del DNS                   64
2.4 La shell                                 68
    La riga di comando                       69
    Concatenazione                           71
    Ambiente                                 72
    Argomenti                                73
    Condizioni                               76
    Cicli                                    80
    Script e funzioni                        82

Capitolo 3   Apache                          85

3.1 Il Web                                   85
    HTML                                     87
    URL                                      90
    HTTP                                     91
3.2 Configurare Apache                       94
    Avvio di Apache                          95
    Direttive generali                       98
    Gestione dei tipi MIME                  101
    Aliasing                                103
    Host virtuali                           105
    Gestione degli errori                   107
3.3 Controllo di accesso                    108
    Proxy server                            108
    Protezione di pagine                    110
    Registrazione degli accessi             115
    Errori del server                       115
3.4 Apache-SSL                              120
    Crittografia a chiave pubblica          121
    SSL                                     123
    Configurazione                          123
3.5 Common Gateway Interface                125
    Variabili di ambiente                   126
    I form                                  130

Capitolo 4   Perl                           135

4.1 Introduzione                            137
    Il primo programma                      138
    Analisi di accesso                      139
    Array e hash                            142
4.2 Programmazione                          144
    Strutture dati                          144
    Espressioni                             151
    Comandi                                 155
    Subroutine                              158
4.3 Espressioni regolari                    160
    Formato                                 160
    Operazioni                              163
    Opzioni                                 167
4.4 Primitive e oggetti                     169
    Input/output                            169
    Oggetti                                 171
4.5 Gestione form                           173
    Pagine HTML dinamiche                   178

Capitolo 5   MySQL                          183

5.1 Introduzione a MySQL                    186
    Usare MySQL                             188
5.2 Creazione di un database                195
    Creazione di tabelle                    196
    NULL                                    199
    Tipi numerici                           199
    Stringhe                                200
    Data e ora                              201
    Blob                                    202
    Vincoli                                 202
5.3 Interrogazioni del database             204
    Espressioni di selezione                206
    Condizioni di selezione                 210
    Funzioni aggregate                      213
    Collegamento di tabelle                 214
5.4 Modifiche al database                   216
    Inserimento di record                   217
    Aggiornamento di record                 218
    Eliminazione di record                  218
5.5 Permessi                                219

Capitolo 6   PHP                            223

6.1 Introduzione                            224
    Una calcolatrice                        226
6.2 Espressioni                             228
    Stringhe e numeri                       228
    Variabili di variabili                  232
6.3 Comandi                                 233
    Inclusione di file                      236
    Funzioni                                237
6.4 La libreria di PHP                      238
    Funzioni stringa                        238
    Array                                   239
    Gestione dei file                       240
    Esecuzione di comandi                   242
6.5 Gestione form                           243
    Verifica dell'input                     247
6.6 Cookie                                  253
    Gestione delle opzioni                  255
6.7 Database                                258
    Modifica del database                   263
6.8 Configurazione                          265

Capitolo 7   JavaScript                     267

7.1 Introduzione                            269
7.2 Programmazione                          273
    Strutture dati ed espressioni           273
    Comandi e funzioni                      277
    Oggetti                                 278
7.3 Utilità                                 281
    Data e ora                              282
    Stringhe                                284
7.4 I form                                  287
    Controllo dell'input                    290
7.5 Il browser                              293
    Navigatore ad albero                    297

Capitolo 8   Java                           301

8.1 Introduzione a Java                     301
    Sintassi                                302
    Tipi di dati                            305
8.2 Espressioni                             308
    Tipi primitivi                          310
    Costanti                                311
    Operatori                               312
8.3 Comandi                                 319
    Comandi condizionali                    320
    Comandi di ciclo                        322
    Interruzione di un ciclo                322
    Eccezioni                               324
    Esempio: conversione                    325
8.4 Classi                                  325
    Costruttori                             325
    Costruttori multipli                    328
    Campi e metodi                          328
    Static                                  331
    Array                                   332
    Stringhe                                333
    Package                                 335
    Esempio: StackInt                       337
8.5 Ereditarietà                            337
    Polimorfismo                            338
    Costruttori                             339
    Interfacce                              341
    Visibilità                              343
    Final                                   344
8.6 Eccezioni                               345
    Sollevare eccezioni                     346
    Gestire le eccezioni                    347
    Ereditarietà di eccezioni               350

Capitolo 9   Applet                         353

9.1 Applet                                  354
    La classe Applet                        355
    Applet e Javascript                     358
9.2 I/O e networking                        360
    Input e output                          360
    Networking                              363
    Un contatore                            365
9.3 Thread                                  368
    Stati di un thread                      369
    I problemi del parallelismo             373
    Wait e notify                           375
9.4 Grafica                                 376
    Disegnare un componente                 378
    Scritta rimbalzante                     379
9.5 AWT                                     383
    Componenti e contenitori                384
    Gestione di eventi                      387
    Chat client                             388

Appendice A   Compilazione dei programmi    395

A.1 Compilazione di Apache                  397
A.2 Compilazione di MySQL                   399
A.3 Compilazione di PHP3                    400
A.4 Compilazione di JServ                   400

Appendice B   Notazione sintattica          403


Indice analitico                            405


 

 

| << |  <  |  >  | >> |

Pagina XIII

Introduzione



Linux comprende numerosi linguaggi e tecnologie per la programmazione Web, che sono alla base di questo libro. Il punto fondamentale è che nessuna delle varie tecnologie disponibili è in alcun senso ottimale. Questo in realtà è vero per tutta l'informatica in genere e spiega il proliferare di linguaggi e sistemi. Linux è derivato da Unix, un sistema operativo nato fin dal principio per essere un ambiente di sviluppo software, con un'interfaccia originariamente a riga di comando e dotato di numerosi linguaggi di programmazione per svolgere i vari compiti.

Unix ha numerose varianti e sistemi "cloni"; negli ultimi anni si è affermata con prepotenza la variante nota come Linux, che è un kernel free software. Si tratta in sostanza di un sistema costituito da software sviluppato nel corso di molti anni da industrie e università e rilasciato con licenze più o meno pubbliche. Il Web è nato in ambiente Unix e tuttora questo sistema operativo si rivela ottimo per lo sviluppo di applicazioni Web, grazie alla grande quantità di strumenti, linguaggi, librerie e server disponibili. Da notare che, in gran parte, si tratta di software rilasciati anch'essi con licenze pubbliche, come la maggior parte dei software che costituiscono i sistemi Linux, e pertanto viene spesso distribuito insieme con il sistema operativo. Per questo motivo, installare un sistema Linux e installare un sistema per lo sviluppo e l'esecuzione di applicazioni Web è più o meno la stessa cosa.

Esiste una continuità di fondo tra le varie tecnologie di programmazione Web, sia storica sia tecnica. Con Linux nulla si butta via e quanto è consolidato diviene una base, tecnica o anche solo culturale, per ulteriori sviluppi o specializzazioni tecnologiche. Questo fatto si noterà molto bene considerando le similitudini fra Perl e PHP, o tra Java e JavaScript.

Perl è un linguaggio generico per lo sviluppo di applicazioni di sistema Unix, perfettamente adatto anche allo sviluppo di applicazioni Web lato server, ma per forza di cose non particolarmente semplice, sebbene molto potente. PHP è sostanzialmente una versione semplificata e adattata allo sviluppo Web del linguaggio Perl. Si notino la continuità e la complementarietà: il programmatore esperto in Perl può usare PHP senza stravolgimenti culturali, non solo dal punto di vista del linguaggio, ma anche della tecnologia: l'interfaccia di PHP, infatti, riprende in maniera naturale le tecniche di programmazione CGI di Perl. Per converso, chi impara per primo PHP troverà il terreno pronto per affrontare la programmazione di sistema e l'amministrazione, complementare allo sviluppo Web puro.

Lo sviluppo della coppia Java e JavaScript è simile: Java è stato usato inizialmente per applicazioni Web lato client, le cosiddette applet, ma si tratta comunque di un generico, potente e relativamente complesso sistema di sviluppo di applicazioni orientate agli oggetti. JavaScript, d'altra parte, riprende molti concetti da Java, ma è un linguaggio più semplice, adatto per essere incorporato in pagine Web senza dover usare le tecniche OOP anche per un semplice effetto come una scritta scorrevole.

La continuità di tecnologie e sistemi ha influenzato la stesura di questo libro. Alla base c'è il sistema operativo. Installarlo e sapere cosa è disponibile è il primo passo (Capitolo 1), ma la cosa importante è conoscere i suoi meccanismi di fondo: file, processi, permessi e così via (Capitolo 2). Soprattutto, per configurarlo, incontriamo il primo linguaggio, la shell. Questo linguaggio già introduce alcuni concetti e tecniche di programmazione: la rappresentazione dei dati come testo, i numerosi comandi e le funzioni che svolgono.

Ora, se sappiamo come amministrare il sistema operativo, dobbiamo amministrare il sistema base per lo sviluppo di applicazioni Web, ossia il Web server, Apache (Capitolo 3). Le sue molteplici funzioni vengono illustrate dal file di configurazione.

Dall'amministrazione di sistema e dalla shell si è evoluto il linguaggio Perl (Capitolo 4), che ha trovato proprio nella programmazione Web la sua applicazione più diffusa. Dallo studio di Apache si capisce come la programmazine Web abbia robuste radici nelle tecniche di programmazione di sistema, anche se poste a un livello di complessità maggiore, per cui Perl si rivela quasi indispensabile.

Quando le applicazioni si evolvono, occorre anche un sistema per la gestione dati, il database (Capitolo 5). Studiare un database significa, in fondo, studiare un nuovo linguaggio, SQL. Ma lo scopo è, anche in questo caso, acquisire un nuovo concetto.

Poiché anche la programmazione in Perl con l'uso di basi di dati non è semplicissima, PHP (Capitolo 6) offre un percorso più agevole per lo sviluppo di applicazioni Web.

Nello sviluppo di applicazioni che impiegano solo HTML si incontrano diverse limitazioni. Queste possono essere superate con l'uso di JavaScript (Capitolo 7) e di applet Java (Capitolo 9). Le applet Java utilizzano un complesso linguaggio di programmazione, Java, che deve essere spiegato per intero (Capitolo 8).

Riassumendo, di seguito si tenta di dare una collocazione ai vari linguaggi e tecnologie.

* Shell. Uso: amministrazione di sistema base. Pro: semplice, utilizzabile interattivamente. Contro: poco sicuro, inefficiente.

* Perl. Uso: amministrazione di sistema avanzata. Interfaccia Web a sistema. Pro: molto flessibile nella gestione dati non strutturati. Contro: complesso, arcano.

* PHP. Uso: programmazione Web lato server base. Pro: semplice, integrato nel Web server. Contro: limitato al solo Web server.

* JavaScript. Uso: programmazione Web lato client base. Pro: semplice, integrato nel Web browser. Contro: limitato al solo Web browser.

* SQL. Uso: gestione dati. Pro: integrato nei database. Contro: limitato ai database.

* Java. Uso: programmazione Web lato client avanzata. Programmazione Web lato server avanzata. Pro: molto flessibile nella gestione dati strutturati (oggetti). Contro: complesso, richiede una buona conoscenza della programmazione OOP.

Invito pertanto a leggere questo libro non come una rassegna di linguaggi, ma dei concetti che vengono espressi attraverso i linguaggi e le notazioni. Ho fatto ogni sforzo per evitare di introdurre troppi inutili dettagli o di essere pedante sulle forme sintattiche, sui parametri delle funzioni e sui formalismi dei vari linguaggi, per concentrarmi invece sui concetti. Ho lasciato al lettore il compito di intuire come si costruiscono i programmi (come normalmente avviene) osservando gli esempi. La mia avvertenza di fondo è non saltare un capitolo perché "questo linguaggio non interessa": ci sono concetti che servono più avanti. Per esempio, il capitolo su Perl approfondisce la programmazione Web, entrando nei dettagli della programmazione CGI, e inoltre introduce i concetti di tabelle e array, che di fatto sono utili sia per PHP sia per JavaScript e sono usati anche in Java. Spero che il lettore riesca ad avvertire il filo conduttore che lega i vari argomenti in maniera complementare.

Di fatto, conoscere la shell consente già di conoscere molto di Perl. Conoscere la programmazione Perl dà un'infarinatura su PHP e JavaScript. A sua volta JavaScript fornisce vari concetti su Java, il quale può essere impiegato sia sul lato client sia sul lato server. Senza dimenticare che una applicazione Web può benissimo essere composta (e spesso lo è) da parti in Java sia server sia client, altre in Perl, altre in PHP che generano pagine contenenti codice JavaScript. Ciò porta alla paradossale conclusione che conoscere tutte queste tecnologie è meno complesso che apprendere le singole parti separatamente, perché molti concetti sono simili.

| << |  <  |  >  | >> |

Pagina 1

Capitolo 1

Introduzione a Linux


Il sistema operativo Linux è venuto alla ribalta in questi ultimi anni come una valida alternativa ai sistemi operativi tradizionali, a testimoniare la validità dello sviluppo software secondo le modalità dell'open source e del free software. La principale caratteristica di questo sistema è il fatto che gran parte dei programmi che lo compongono sono gratuiti e disponibili in codice sorgente. Linux non è l'hobby di uno studente finlandese, ma il risultato della collaborazione di migliaia di persone che per anni hanno prodotto software affidabile e potente, generalmente per motivi di ricerca, e lo hanno reso disponibile al pubblico gratuitamente, per ragioni diverse.

A molti può sembrare strano che si possa utilizzare con fiducia software gratuito, al quale si associa facilmente il concetto di "bassa qualità". La qualità offerta dal software per Linux invece è molto alta, paragonabile o addirittura superiore a quella del software commerciale.

Può anche sembrare strano che ci siano programmatori che lavorino per produrre software ceduto gratuitamente. Lo sviluppo di software è notoriamente un'attività molto complessa, che richiede tempo e lavoro: se qualcuno impiega il suo tempo per sviluppare software che non viene pagato, ci si chiede di che cosa possa vivere. In realtà in questi termini il problema dello sviluppo di Linux è mal posto.

In effetti, esiste già da tempo un'istituzione che lavora per l'umanità, e che cede a tutti, indistintamente e senza richiedere compensi, il risultato del suo lavoro. Questa istituzione ha l'obiettivo di far avanzare la conoscenza e produce continuamente risultati fondamentali per la vita di tutti noi. Stiamo parlando della ricerca scientifica e tecnologica, di cui Linux è un importante prodotto. In realtà i vantaggi della ricerca sono così evidenti che da secoli essa è finanziata in varia misura e le istituzioni, sia pubbliche sia private, offrono ai ricercatori i mezzi per sostentarsi (tipicamente con l'insegnamento) e di continuare a fare ricerca. Ovviamente, la condizione per fare ciò è che i risultati della ricerca siano resi di dominio pubblico.

| << |  <  |  >  | >> |

Pagina 85

Capitolo 3

Apache


Apache è tra i server Web più usati. La principale caratteristica di questo server, che è distribuito gratuitamente insieme con il codice sorgente, è quella di essere un progetto in collaborazione, di tipo open source. Questo Web server è così diffuso perché, oltre a essere veloce e affidabile, è caratterizzato da una notevole estensibilità. Il software è stato sviluppato completamente in linguaggio C (portabile) e ha un'architettura modulare. Non essendo software proprietario, dispone di una grande quantità di moduli aggiuntivi, realizzati da terze parti, che gli consentono di soddisfare le molteplici esigenze legate alla programmazione Web. Apache è disponibile in varie versioni, per una gran quantità di piattaforme, come Linux e Windows 95/NT.

Tutte le applicazioni Web descritte in questo libro si basano su un server Apache, necessario almeno quanto il kernel del sistema operativo. In questo capitolo viene descritta in dettaglio la configurazione, facendo riferimento alla versione 1.3.6, anche se la maggior parte delle caratteristiche è presente anche in versioni meno recenti. Anche se esistono varie interfacce grafiche per semplificare la configurazione del server (tra cui una compresa in Red Hat Linux, Comanche), nel pacchetto non ne è stata integrata alcuna, poiché, data la possibilità di aggiungere nuovi moduli, è piuttosto difficile creare uno strumento grafico in grado di evolversi insieme al programma, che viene quindi configurato modificando un apposito file di direttive. La potenza e la flessibilità offerte da questo approccio sono comunque superiori a quelle raggiungibili utilizzando uno strumento grafico.

| << |  <  |  >  | >> |

Pagina 133

Capitolo 4

Perl


La programmazione di shell consente di risolvere molti problemi, ma è in qualche modo limitata. I problemi vengono al pettine quando si scrivono script complessi che debbono anche essere efficienti e portabili. Dato il meccanismo della shell, che invoca a ogni passo un comando (e quindi lo carica in memoria), l'efficienza lascia alquanto a desiderare. Per esempio, un ciclo che richiama un comando esterno carica in memoria il comando tante volte quante sono le iterazioni del ciclo. Per quanto riguarda invece la portabilità, abbiamo visto che esistono numerose shell diverse; inoltre, uno script di shell fa riferimento a comandi di sistema, che possono differire nella sintassi fra i vari sistemi operativi o addirittura per versioni diverse dello stesso sistema operativo. In breve, uno script di shell funziona con certezza solo nella particolare installazione di sistema operativo (fissata una versione e un determinato insieme di programmi installati). Con Linux si può contare più o meno sulla GNU Shell Bash e sulle GNU Shell Utils: scrivendo script che fanno riferimento solo a questa installazione, si ottiene una discreta portabilità degli script. Infine, un problema fondamentale si presenta quando si parla di sicurezza: gli script di shell sono poco sicuri, perché ci sono molti dettagli che un malintenzionato può sfruttare per eseguire comandi non autorizzati. La shell non è stata progettata tenendo presente la sicurezza.

Il linguaggio Perl è nato quando Larry Wall (il suo creatore) dovette affrontare un complesso problema che coinvolgeva l'analisi di una grande quantità di dati in formato testo. Per questo tipo di problemi la programmazione di shell era adatta come metodologia, ma non per efficienza. Ai tempi in cui fu sviluppata la prima versione del linguaggio Perl (verso il 1988) di Wall, l'unica alternativa era il linguaggio C, di gran lunga più complesso e costoso in termini di tempo necessario per la codifica. Wall si ritrovò pertanto a dover scrivere in C gran parte del codice, ma per non buttare via il lavoro decise di realizzare uno strumento che sarebbe stato anche utile in altri contesti. Nacque così la prima versione del Practical Extraction and Retrieving Language (linguaggio pratico per l'estrazione e il recupero di informazioni). Il linguaggio era modellato sui principali elementi tipici di un sistema Unix: la programmazione di shell, le utility come tr, find, sed e awk, e il linguaggio C. Perl sintetìzza l'essenza di Unix in un linguaggio e in una libreria. Il linguaggio è in gran parte autosufficiente: le numerose primitìve consentono di evitare la chiamata a programmi esterni. In questo modo si evita quello che per la shell è un grande problema, sia per l'efficienza sia per la portabilità e la sicurezza. Se Perl ha conosciuto un discreto successo per quanto riguarda l'amministrazione di sistemi, solo con il Web ha raggiunto la grande popolarità che ha oggi. Il Web è nato in ambiente Unix e fin dall'inizio si è sentita l'esigenza di affiancare, alle pagine statiche, programmi gateway che generino dinamicamente le pagine a partire da informazioni esterne, solitamente mantenute in basi di dati. Il linguaggio più adatto per la programmazione Web già disponibile in numerosi sistemi Unix come strumento per la programmazione di sistema era appunto il linguaggio Perl, che è diventato per questo motivo uno dei più utilizzati e supportati in questo ambito.

| << |  <  |  >  | >> |

Pagina 223

Capitolo 6

PHP


Abbiamo visto nei capitoli precedenti il linguaggio Perl, che è stato usato fin dagli albori della programmazione Web per realizzare semplici script. Perl, comunque, è un linguaggio nato come strumento per la programmazione di sistema e che si rivela indispensabile per compiti di amministrazione e per la realizzazione di procedure di media complessità che richiedono il trattamento di grandi quantità di testi o di dati non strutturati. D'altra parte, Perl è spesso l'unica o la migliore opzione disponibile su numerosi sistemi e applicazioni. In alcuni casi, per la programmazione Web è disponibile esclusivamente il linguaggio Perl. In particolare, ciò accade per molti fornitori di spazio Web, che offrono Perl come servizio per l'esecuzione di script. Esiste poi una notevole quantità di script disponibili nei vari archivi su Internet.

I browser hanno invece adottato Java come linguaggio per l'estensione lato client. In particolare è noto che le applet, ossia quelle piccole applicazioni che possono essere trasferite dalla rete ed eseguite nel browser, sono scritte in Java. Tratteremo le applet Java nel Capitolo 9. Trattandosi però di un linguaggio piuttosto complesso, è stato affiancato da una versione semplificata, più adatta per essere inserita direttamente in una pagina Web: stiamo parlando del linguaggio JavaScript. JavaScript è molto più usato di Java, perché la maggior parte dei compiti da esso svolti sono semplici, mentre Java viene riservato per lo sviluppo di applicazioni più complesse. Per quanto riguarda la programmazione lato server, si può considerare che esista una situazione analoga: infatti, Perl è stato affiancato da un linguaggio che in un certo senso ne rappresenta una versione semplificata, ossia PHP. PHP è l'acronimo di Personal Home Page. Mentre Perl è un linguaggio di uso generico utilizzato con i Web server, PHP è ottimizzato, semplificato e specializzato per essere incorporato nelle pagine HMTL ed eseguito sul server, un po' come accade con Java, che è un linguaggio di uso generico usato con i Web browser, mentre JavaScript è ottimizzato, semplificato e specializzato per l'uso incorporato nelle pagine HTML e per essere eseguito direttamente nel browser.

Il linguaggio PHP è nato come un semplice interprete (tra l'altro implementato in origine in Perl) di un essenziale linguaggio di scripting incorporato in HTML. Questo linguaggio di scripting era però eseguito sul lato server ed era nato per consentire l'esecuzione di applicazioni di limitata complessità. Il piccolo PHP raccolse l'interesse di molti utenti e venne realizzato nuovamente in linguaggio C, nonché esteso. La prima versione di PHP che conobbe una certa notorietà fu la seconda. PHP versione 2 è stato successivamente riscritto da capo, reso modulare e dotato di una libreria di funzioni molto ampia. In questo capitolo tratteremo di PHP versione 3.

PHP, oltre a riprendere alcuni aspetti di Perl, comprende anche molti concetti, sia sintattici sia semantici, presi da Java e da JavaScript. Le sue caratteristiche (tipi di dati, librerie) sono esplicitamente progettate per la realizzazione di applicazioni Web lato server, che possono essere realizzate in maniera immediata, semplice ed efficace. È sufficiente infatti scrivere una pagina HTML aggiungendovi direttamente codice PHP e richiamarla. L'interprete PHP viene mandato in esecuzione contemporaneamente all'invio della pagina all'utente, eseguendo tutte le operazioni di gestione basi di dati, di form HTML e numerose altre.

Il lato negativo di questo linguaggio è che si tratta di un sistema molto specifico. PHP non si trova totalmente a suo agio quando è necessario interagire con sistemi e applicazioni già esistenti o elaborare in maniera efficiente grandi moli di dati. Per esempio, immaginiamo un'applicazione come un motore di ricerca: per realizzare l'interfaccia Web e le interrogazioni a un database, è più che adeguato, ma non è certo lo strumento ideale per esplorare il Web ed estrarre informazioni da inserire in una base di dati: per queste applicazioni è senz'altro più opportuno usare Perl. Ancora, per realizzare un sistema aziendale distribuito a più strati, in cui occorre utilizzare sistemi di oggetti distribuiti esportati tramite CORBA, Java è senz'altro più appropriato.

| << |  <  |  >  | >> |

Pagina 267

Capitolo 7

JavaScript


In origine, le pagine HTML erano semplici documenti statici e l'unica forma di interattività prevista era il link, ossia il collegamento ipertestuale. In un documento Web alcune parole sono sottolineate, perché consentono di passare a un altro documento semplicemente facendo clic sulla parola. Nel progetto originario di Tim Berners-Lee, l'inventore del World Wide Web, HTML doveva essere un linguaggio di descrizione dei documenti astratto, che non doveva contenere informazioni sulla visualizzazione della pagina. Doveva essere compito del browser la decisione di come interpretare la descrizione del documento per visualizzare una pagina HTML.

A causa della frenetica evoluzione del Web, HTML ha perso però questa nozione di descrizione astratta dei documenti ed è diventato il linguaggio di programmazione delle pagine Web. Per questo motivo è stato arricchito con una serie di tag (marcature) che non specificano informazioni logiche sul documento (titolo, sottotitolo, paragrafo, elenco, listato e così via), ma specificano invece informazioni che si possono definire "tipografiche" (colore, centratura, bordi, tipo di carattere eccetera). Nel corso del processo di arricchimento di HTML per adattarlo alle mutate esigenze del Web è comparso anche un completo linguaggio di programmazione progettato per essere incorporato direttamente nel testo delle pagine: JavaScript. Il browser che ha definito gran parte degli standard a cui negli anni l'industria del Web si è adeguata è Netscape Navigator. In particolare, già dalla versione 2 del suo browser Netscape ha inserito ben due linguaggi di programmazione: Java e JavaScript. In effetti, sembra che questa scelta sia stata controversa: in principio si pensò di inserire solamente un linguaggio, Java, le cui caratteristiche di sicurezza e portabilità si sposavano perfettamente con l'intento di rendere il Web programmabile.

Il problema principale di Java è la sua relativa complessità. Java è adatto, in effetti, per la realizzazione di applicazioni complesse e sofisticate, ma non si può definire un linguaggio di scripting. Generalmente si parla di scripting quando si fa riferimento a sistemi di programmazione semplici che possano essere utilizzati anche da utenti con limitate conoscenze di programmazione.

In effetti, la maggior parte degli sviluppatori di pagine Web sono per lo più dei grafici, non programmatori professionisti. Per essi, Java, con la sua struttura a oggetti, la necessità di compilare i programmi e la libreria molto ampia, è più un ostacolo che un aiuto. In effetti, l'autore può confermare che anche per un programmatore con alcuni anni di esperienza l'impatto con Java non è dei più morbidi. Anche se questo linguaggio rivela presto la sua natura elegante e ordinata, si tratta comunque di un linguaggio indirizzato ai professionisti della programmazione. Era forte l'esigenza di rendere il Web programmabile, a livello di pagina, dal maggior numero di persone possibili. Per questo motivo si scelse di sviluppare un linguaggio, simile a Java, ma a esso complementare, molto più semplice da imparare e da utilizzare per utenti non esperti; questo linguaggio era appunto JavaScript.

| << |  <  |