|
|
| << | < | > | >> |IndiceIntroduzione 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.
|