|
|
|
| << | < | > | >> |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 XIIILinux 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 1Capitolo 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 85Capitolo 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 133Capitolo 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 223Capitolo 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 267Capitolo 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.
|