Introduzione ai computer, a Internet e a Visual Basic

Document Sample
Introduzione ai computer, a Internet e a Visual Basic Powered By Docstoc
					CAPITOLO 1

Introduzione ai computer,
a Internet e a Visual Basic .NET
      Obiettivi
      •    Illustrare alcuni concetti fondamentali dell’informatica
      •    Conoscere i vari linguaggi di programmazione
      •    Capire l’importanza della programmazione orientata agli oggetti
      •    Conoscere la storia del linguaggio di programmazione Visual Basic .NET
      •    Descrivere il processo evolutivo di Internet e del World Wide Web
      •    Capire il progetto .NET di Microsoft
      •    Breve panoramica dei capitoli del libro




1.1       Introduzione
Benvenuti nel mondo di Visual Basic .NET! Abbiamo lavorato intensamente per offrire ai
nostri lettori informazioni complete e accurate su questo linguaggio di programmazione e
sulle sue applicazioni. Questo libro è destinato a lettori di qualsiasi livello, dai programmatori
con poca o nessuna esperienza a quelli più esperti. Ci auguriamo che lo studio di questo testo
possa essere un’esperienza istruttiva, interessante e piacevole per tutti. Com’è possibile scrivere
un libro per un pubblico così vasto? La risposta sta nel fatto che abbiamo cercato di insegnare
a programmare con chiarezza applicando le tecniche fondamentali della programmazione
strutturata, della programmazione basata sugli oggetti, della programmazione orientata agli oggetti
e della programmazione controllata dagli eventi. I lettori che non hanno esperienza di pro-
grammazione possono imparare i concetti che stanno alla base della buona programmazione;
i programmatori esperti ricevono una rigorosa esposizione del linguaggio e possono perfe-
zionare il loro stile di programmazione. Un’altra caratteristica importante di questo volume
è che i programmi presentati sono funzionanti e per ogni programma eseguito nel computer
viene mostrato l’output risultante. Tutti i concetti di programmazione sono dunque presen-
tati in un contesto di programmi reali; è l’approccio che abbiamo definito live-code, in quanto
fa uso di codici sorgenti di programmi veri. Il codice degli esempi proposti nel libro può
essere scaricato dal sito Web http://www.apogeonline.com/libri/02094/allegati/.
    I computer si stanno diffondendo in quasi tutte le nostre attività. In un’epoca di infla-
zione in continua crescita, i prezzi dei computer sono diminuiti drasticamente, grazie alla
rapida evoluzione del software e dell’hardware. Computer che soltanto vent’anni fa avrebbero
potuto riempire intere stanze e costare milioni di dollari oggi possono essere racchiusi all’in-
terno di minuscoli chip al silicio (più piccoli dell’unghia di una mano) al costo di pochi
2                                                                                      CAPITOLO 1


dollari. Il silicio è uno dei materiali più abbondanti sulla Terra (è un componente della
sabbia comune). La tecnologia dei chip al silicio ha reso così conveniente il prezzo dei com-
puter che oggi ci sono centinaia di milioni di computer in tutto il mondo che aiutano le
persone a svolgere meglio il loro lavoro e migliorano le attività industriali, commerciali e i
servizi. Questo numero potrebbe facilmente raddoppiare nei prossimi anni.

1.2       Che cos’è un computer?
Un computer è un dispositivo in grado di effettuare operazioni matematiche e di prendere
decisioni a velocità milioni di volte superiori rispetto agli esseri umani. Per esempio, molti
computer moderni sono in grado di svolgere centinaia di milioni di addizioni al secondo. Una
persona munita di carta e penna impiegherebbe rimanere inchiodata alla scrivania per decenni
prima di completare le stesse operazioni. I supercomputer attualmente disponibili sono in grado
di eseguire centinaia di miliardi di addizioni al secondo, quasi quante ne eseguirebbero in un
anno centinaia di migliaia di persone. Nei laboratori di ricerca esistono già prototipi di compu-
ter che lavorano a un ritmo di migliaia di miliardi di operazioni al secondo.
     I computer elaborano i dati sotto il controllo di insiemi di istruzioni detti programmi;
questi indicano al computer di svolgere determinate azioni, che sono definite da persone
chiamate programmatori. Le varie unità che costituiscono un computer rappresentano il co-
siddetto hardware: la tastiera, lo schermo, il mouse, i dischi, i CD-ROM, la memoria e i
processori. I programmi che vengono eseguiti in un computer sono il software. I prezzi delle
unità hardware sono in continuo calo, al punto che i computer oggi sono considerati normali
beni di consumo. Al contrario, i costi relativi allo sviluppo del software sono in aumento; ciò
è dovuto alla richiesta di applicazioni sempre più potenti e complesse, senza che vi sia stato
un miglioramento significativo nelle tecnologie di sviluppo del software. Questo libro illu-
stra le metodologie di sviluppo già sperimentate, in grado di ridurre i costi di realizzazione
del software: ci riferiamo alla programmazione struttura, alla definizione dei programmi
attraverso tecniche di affinamento top-down, alla modularità delle funzioni e alla program-
mazione orientata agli oggetti.

1.3       La struttura del computer
A parte le differenze estetiche fra un computer e l’altro, tutti i computer sono composti da sei
sezioni o unità logiche:
1. Unità di input. È la sezione ricevente del computer. Riceve le informazioni (dati e programmi)
   da varie periferiche di input e le mette a disposizione di altre unità per consentirne l’elabo-
   razione. Le informazioni, di solito, vengono immesse nei computer tramite la tastiera e il
   mouse. Fra le altre unità di input figurano i microfoni (per parlare al computer), gli scan-
   ner (per digitalizzare le immagini), le videocamere e le macchine fotografiche digitali.
2. Unità di output. È la sezione trasmittente del computer. Riceve le informazioni già elaborate
   e le invia alle varie periferiche di output per renderle disponibili all’esterno. Gran parte delle
   informazioni vengono oggi inviate allo schermo, stampate su carta o utilizzate per il con-
   trollo di altre periferiche.
3. Memoria. È la parte del computer che conserva i dati, è di rapido accesso, ma ha una
   capacità relativamente bassa. Le memoria contiene le informazioni immesse nell’unità di
   input e le mette subito a disposizione per essere elaborate. La memoria contiene anche
   le informazioni già elaborate, che sono in attesa di essere trasmesse alle unità di output.
   Viene anche detta memoria primaria; la memoria RAM (Random Access Memory) è un
INTRODUZIONE AI COMPUTER, A INTERNET E A VISUAL BASIC .NET                                         3


   esempio di memoria primaria. La memoria primaria è volatile, nel senso che il suo con-
   tenuto viene cancellato quando viene spento il computer.
4. Unità logico-aritmetica (Arithmetic Logic Unit o ALU). È la sezione che svolge i calcoli o
   elabora i dati. Effettua addizioni, sottrazioni, moltiplicazioni e divisioni. Include anche
   dei meccanismi decisionali, che consentono al computer di confrontare due dati presenti
   in memoria e determinare se sono uguali.
5. Unità centrale di elaborazione (Central Processing Unit o CPU). È la sezione amministra-
   tiva del computer. Coordina le operazioni e ha compiti di supervisione sulle altre sezioni.
   È la CPU a decidere quando le informazioni presenti nelle unità di input dovranno
   essere trasferite in memoria, quando l’ALU dovrà elaborarle e quando i dati risultanti
   dovranno essere inviati alle unità di output.
6. Unità di memorizzazione secondaria. Questa sezione memorizza i dati e, diversamente dalla
   memoria primaria, è in grado di conservarli a lungo e ha una capacità molto alta. I pro-
   grammi e i dati che non vengono usati da altre unità vengono immagazzinati nelle unità
   di memorizzazione secondarie (come i dischi) e possono essere prelevate in qualsiasi
   momento, dopo un’ora, un giorno, un mese o perfino dopo anni. L’accesso a queste unità
   è molto più lento rispetto a quello della memoria primaria, ma il costo di un’unità di
   memorizzazione secondaria è molto più basso. La memoria secondaria di solito non è
   volatile, nel senso che mantiene le informazioni anche quando il computer viene spento.

1.4       L’evoluzione dei sistemi operativi
I primi computer erano in grado di effettuare una solo compito (job o task) alla volta. Questo
tipo di elaborazione si chiama elaborazione batch per un solo utente: il computer esegue un solo
programma per volta ed elabora i dati in gruppi detti batch. Gli utenti di questi sistemi immettevano
i dati nel computer utilizzando delle schede perforate. Spesso bisognava attendere alcune ore e
perfino giorni prima di vedere qualche risultato. In seguito furono inventati i cosiddetti sistemi
operativi per rendere più agevole l’uso dei computer. I primi sistemi operativi gestivano la
successione dei compiti immessi dagli utenti e i passaggi da un compito all’altro. In questo
modo si risparmiava il tempo necessario agli operatori per inviare i compiti da eseguire, uno
dopo l’altro, e di conseguenza aumentò il carico di lavoro sostenuto dai computer.
     Al crescere della potenza di calcolo dei computer risultò chiaro che l’elaborazione batch per
un solo utente non sfruttava completamente le loro potenzialità. Si pensò allora che i vari
processi potessero condividere (share) le risorse del computer per utilizzarle al meglio. Da questa
idea nacque la multiprogrammazione, che consiste nell’elaborazione simultanea di diversi com-
piti nello stesso computer. Le risorse del computer vengono condivise dai vari compiti, quando
questi ne fanno richiesta. Nei primi sistemi a multiprogrammazione gli utenti adottavano an-
cora le schede perforate e aspettavano ore o giorni prima di ottenere i risultati.
     Negli anni ’60 alcuni gruppi industriali e università sperimentarono un nuovo tipo di
sistema operativo, detto timesharing (condivisione del tempo). Il timesharing è un caso partico-
lare di sistema a multiprogrammazione, in cui gli utenti accedono al computer attraverso i
terminali, che sono dispositivi tipicamente composti da uno monitor e una tastiera. In un
tipico sistema timesharing possono esserci decine o anche centinaia di utenti che condividono
contemporaneamente le risorse del computer centrale. Il computer non soddisfa simultanea-
mente tutte le richieste degli utenti, ma esegue una piccola parte del compito di un utente,
quindi passa a eseguire una piccola parte del compito di un altro utente e così via. La velocità di
esecuzione, tuttavia, è talmente elevata che il computer può tornare sulla richiesta di un deter-
4                                                                                  CAPITOLO 1


minato utente più volte in un secondo. Per questo motivo i programmi degli utenti sembrano
essere eseguiti tutti simultaneamente. Un vantaggio del timesharing consiste nel fatto che la
richiesta di un utente viene soddisfatta quasi istantaneamente, anziché dopo diverse ore.
     Il sistema operativo UNIX, che attualmente è largamente utilizzato per l’elaborazione
avanzata, nacque come sistema operativo timesharing sperimentale. Dennis Ritchie e Ken
Thompson svilupparono UNIX alla fine degli anni ’60 e crearono il linguaggio C per scrivere
UNIX. Idearono UNIX come un software open-source, distribuendo gratuitamente il codice
sorgente ad altri programmatori che intendessero utilizzarlo, modificarlo o ampliarlo. Il numero
di utenti UNIX aumentò molto presto. Grazie alla collaborazione di vari esperti e ricercatori,
UNIX divenne un potente e flessibile sistema operativo in grado di gestire praticamente tutti
i tipi di compiti che gli utenti potessero richiedere. Da UNIX deriva anche il popolare
sistema operativo Linux.

1.5 I personal computer, i sistemi distribuiti
    e i sistemi client/server
Nel 1977, la Apple Computer ideò una nuova categoria di computer: i personal computer.
All’inizio si trattava soltanto di un sogno per pochi appassionati, ma presto i computer
divennero abbastanza economici da poter essere acquistati da aziende e privati. Nel 1981
IBM, leader mondiale nel campo dell’hardware, commercializzò il Personal Computer IBM,
che si diffuse rapidamente nelle aziende, industrie e organizzazioni statali. Tuttavia, questi
computer erano unità singole e separate per cui, dopo avere lavorato su una macchina, era
necessario trasportare le informazioni sui dischetti per poterle condividere con altri utenti. I
primi personal computer non erano così veloci da permettere il timesharing fra più utenti,
ma tutti i computer di un’organizzazione potevano ugualmente essere collegati in rete, tra-
mite la linea telefonica o una rete locale LAN (Local Area Network). Da qui ebbero origine i
sistemi distribuiti: i dati elaborati da un’azienda non erano più vincolati a una postazione
fissa, ma potevano essere distribuiti attraverso una rete di computer. In ogni nodo della rete
era presente un computer che effettuava una parte di lavoro.
     Soltanto venti anni fa, i personal computer potenti come quelli di oggi potevano costare
un milione di dollari. I moderni PC offrono ai singoli utenti prestazioni davvero incredibili.
Le informazioni attraversano le reti telematiche ad alta velocità, dove alcuni computer detti
server conservano le informazioni condivise; a queste informazioni accedono tanti computer,
detti client, sparsi su tutta la rete. Questa configurazione di computer si chiama client/server.
I moderni sistemi operativi, come UNIX, Linux, Solaris, MacOS, Windows 2000/XP offrono
le funzionalità necessarie a realizzare i sistemi descritti in questo paragrafo.

1.6       I linguaggi macchina, assembly e ad alto livello
I programmatori possono scrivere le istruzioni da dare al computer in vari linguaggi di pro-
grammazione. Alcuni linguaggi vengono compresi direttamente dai computer, mentre altri
richiedono dei passaggi intermedi di traduzione. Attualmente, esistono centinaia di linguaggi
di programmazione, che possono essere classificati in tre grandi categorie:
1. Linguaggi macchina
2. Linguaggi assembly
3. Linguaggi ad alto livello
INTRODUZIONE AI COMPUTER, A INTERNET E A VISUAL BASIC .NET                                   5


    Un computer è in grado di capire soltanto il suo linguaggio macchina, che deve essere
considerato un po’ come la sua lingua naturale, perché è definito dalla progettazione dei suoi
componenti hardware. In genere i linguaggi macchina sono formati da sequenze numeriche
(composte da 0 e 1) che ordinano al computer di eseguire le operazioni più elementari. I
linguaggi macchina dipendono dall’architettura del computer su cui sono stati definiti; questo
significa che un linguaggio macchina può essere eseguito soltanto su un tipo di computer. Il
seguente frammento di programma in linguaggio macchina, che somma lo straordinario alla
paga base e memorizza il risultato nella paga totale, dimostra l’incomprensibilità di questo
linguaggio per noi umani:
       +1300042774
       +1400593419
       +1200274027

     Al crescere della popolarità dei computer ci si rese conto che continuare a programmare
in linguaggio macchina era un’operazione decisamente noiosa, lenta e soggetta a errori. Anziché
scrivere stringhe numeriche che i computer potevano capire direttamente, i programmatori
cominciarono a far uso di abbreviazioni che rappresentavano le operazioni più elementari
dei computer. Tali abbreviazioni costituirono la base dei linguaggi assembly. Parallelamente
furono sviluppati dei programmi di traduzione, detti assembler, che convertivano i programmi
scritti in linguaggio assembly in linguaggio macchina. Osservate come si presenta il prece-
dente frammento di programma in linguaggio assembly:
       LOAD       BASEPAY
       ADD        OVERPAY
       STORE      GROSSPAY

     Questo codice è molto più chiaro per un essere umano, ma non ha alcun significato per
un computer finché non viene tradotto nel suo linguaggio macchina. L’uso dei computer
aumentò sensibilmente con l’introduzione dei linguaggi assembly, anche se i programmatori
dovevano scrivere ugualmente un gran numero di istruzioni per svolgere perfino il più sem-
plice dei compiti. Per velocizzare la programmazione furono allora inventati i linguaggi ad
alto livello, nei quali una singola istruzione poteva eseguire compiti anche complessi. Pro-
grammi di traduzione detti compilatori convertivano poi i programmi scritti nel linguaggio
ad alto livello in linguaggio macchina. I linguaggi ad alto livello consentivano di scrivere
delle istruzioni che somigliavano a una normale frase in lingua inglese e che contenevano i
comuni operatori matematici. Il precedente frammento di programma può essere scritto con
la seguente istruzione in un ipotetico linguaggio ad alto livello:
       grossPay = basePay + overTimePay

     Ovviamente, i programmatori preferiscono i linguaggi ad alto livello ai linguaggi assembly
o macchina. Visual Basic .NET è uno dei linguaggi ad alto livello più utilizzato. La compila-
zione di un programma ad alto livello in linguaggio macchina può richiedere una notevole
quantità di tempo. Questo problema fu risolto con lo sviluppo di appositi interpreti, che
erano in grado di eseguire direttamente i programmi scritti con un linguaggio ad alto livello,
evitando il processo di compilazione. Anche se i programmi compilati sono più veloci di
quelli interpretati, gli interpreti sono utilizzati spesso negli ambienti di sviluppo in cui è
necessario apportare continue modifiche ai programmi, per evitare di doverli compilare con-
tinuamente. Una volta raggiunta la versione definitiva di un programma, è possibile creare la
versione compilata, che viene eseguita alla massima velocità.
6                                                                                   CAPITOLO 1


1.7       Visual Basic .NET
Visual Basic .NET deriva dal linguaggio BASIC (Beginner’s All-Purpose Symbolic Instruction
Code), che fu sviluppato nella metà degli anni ’60 dai professori John Kemeny e Thomas
Kurtz del Dartmouth College come un linguaggio per scrivere semplici programmi. L’obiet-
tivo primario del BASIC era quello di consentire ai principianti di acquisire dimestichezza
con le tecniche di programmazione.
     L’uso del BASIC su vari tipi di computer (che formano una piattaforma hardware) ha
portato a numerosi miglioramenti del linguaggio. Quando Bill Gates fondò la Microsoft
Corporation, aveva implementato il BASIC su diversi tipi di personal computer. Con lo
sviluppo dell’interfaccia grafica GUI di Windows (a cavallo fra gli anni 80’ e 90’), la naturale
evoluzione del BASIC fu Visual Basic, che venne introdotto dalla Microsoft nel 1991. Prima
dell’avvento di Visual Basic, lo sviluppo delle applicazioni Windows era un compito difficile
e laborioso. Sebbene Visual Basic derivi dal BASIC, tuttavia è un linguaggio completamente
diverso che offre funzionalità molto potenti, quali le interfacce grafiche con gli utenti, la
gestione degli eventi, l’accesso all’API a 32 bit (Windows 32-bit Application Programming
Interface), la programmazione orientata agli oggetti e la gestione delle eccezioni.
    Visual Basic .NET è un linguaggio di programmazione grafica o visiva, controllato dagli
eventi, i cui programmi sono creati utilizzando l’IDE (Integrated Development Environment o
ambiente di sviluppo integrato). Grazie all’IDE un programmatore può scrivere, eseguire,
provare e correggere comodamente i programmi Visual Basic, riducendo il tempo necessario
a produrre un programma funzionante a una piccola frazione del tempo che occorrerebbe
per farlo senza l’IDE. Il processo che permette di realizzare rapidamente un’applicazione si
chiama Rapid Application Development (RAD). Visual Basic è il linguaggio RAD più diffuso.
     Il costante progresso tecnologico degli strumenti di programmazione e delle apparecchiature
elettroniche ha creato nuove sfide. Inizialmente era difficile integrare i componenti software
creati con linguaggi differenti e installare le nuove versioni dei componenti perché incompa-
tibili con il vecchio software. Gli sviluppatori avevano bisogno di applicazioni basate sul
Web che potessero essere utilizzate attraverso Internet. La rapida diffusione delle unità
programmabili, come i PDA (Personal Digital Assistant) e i telefoni cellulari, che si è verificata
alla fine degli anni 90’, ha fatto crescere drasticamente l’esigenza di mettere in comunicazione
queste unità attraverso Internet. Gli sviluppatori di software hanno capito che i loro clienti
non sono più vincolati a restare utenti da scrivania. Occorre un software che sia accessibile da
qualsiasi tipo di apparecchiatura elettronica.
    Per soddisfare queste esigenze, la Microsoft ha ideato nel 2000 la strategia .NET (che si
legge “dot net”). La piattaforma .NET permette di distribuire le applicazioni Web su un’ampia
gamma di unità (come i telefoni cellulari) e personal computer. La piattaforma .NET rap-
presenta un nuovo modello di programmazione che consente di mettere in comunicazione i
programmi scritti con linguaggi di programmazione differenti.
     La Microsoft ha ideato una versione di Visual Basic per .NET. Le prime versioni di
Visual Basic offrivano poche funzionalità orientate agli oggetti, mentre Visual Basic .NET
offre un supporto completo alla programmazione orientata agli oggetti, inclusa una ricca
libreria di potenti componenti, che consentono ai programmatori di sviluppare i programmi
ancora più velocemente. Visual Basic .NET migliora anche l’interoperabilità dei linguaggi: i
componenti software di linguaggi differenti possono interagire come non hanno mai fatto
prima. Gli sviluppatori possono perfino riutilizzare il vecchio software con i nuovi programmi
INTRODUZIONE AI COMPUTER, A INTERNET E A VISUAL BASIC .NET                                      7


di Visual Basic .NET. Le applicazioni Visual Basic .NET possono interagire via Internet,
utilizzando i protocolli e i linguaggi standard come SOAP (Simple Object Access Protocol) e
XML (che è descritto nel volume “Tecniche avanzate e Web Services”). Visual Basic .NET è
un elemento cruciale nella strategia .NET della Microsoft, perché consente agli attuali
sviluppatori Visual Basic di passare agevolmente a .NET. I miglioramenti introdotti da .NET
e Visual Basic .NET porteranno a un nuovo stile di programmazione, perché le applicazioni
saranno create da componenti (detti Servizi Web) disponibili su Internet.

1.8       I linguaggi C, C++, Java e C#
Nel periodo di maggiore sviluppo dei linguaggi ad alto livello, molti nuovi linguaggi nac-
quero da quelli esistenti; così il linguaggio C++ fu l’evoluzione naturale del C, che a sua volta
era stato costruito su due linguaggi preesistenti, BCPL e B. Il linguaggio BCPL fu sviluppato
nel 1967 da Martin Richards per scrivere sistemi operativi, software e compilatori. Ken
Thompson ideò il linguaggio B utilizzando come modello il BCPL. Nel 1970, Thompson
utilizzò il B per creare le prime versioni del sistema operativo UNIX. Il B e il BCPL erano
linguaggi “privi di tipi di dati”: ogni dato occupava una parola nella memoria del computer.
Era compito del programmatore trattare i singoli dati come numeri interi o reali.
     Il linguaggio C, che Dennis Ritchie sviluppò dal B, fu implementato originariamente
nel 1973. Sebbene il C mantenga molte delle caratteristiche tipiche del B e del BCPL, include
il nuovo concetto di “tipo di dato”. Inizialmente, il C fu noto come linguaggio di sviluppo
del sistema operativo UNIX. Oggi la maggior parte dei sistemi operativi sono scritti in C e
C++. Attualmente, il C è disponibile per la maggior parte dei computer ed è indipendente
dall’hardware; con una progettazione attenta è possibile scrivere programmi in C che possono
essere eseguiti praticamente su qualsiasi tipo di computer.
     Il linguaggio C++, un’estensione del C che usa gli elementi di Simula 67 (un linguaggio di
simulazione), è stato sviluppato da Bjarne Stroustrup agli inizi degli anni ’80 presso i Bell
Laboratories. Il linguaggio C++ offre una serie di funzionalità che potenziano il C e, ancora più
importante, include un supporto alla programmazione orientata agli oggetti. In un periodo in
cui è cresciuta notevolmente la richiesta di nuove e più potenti applicazioni software, è cruciale
sapere creare software in modo veloce, corretto ed economico. Questo obiettivo può essere
raggiunto in parte utilizzando gli oggetti, che sono componenti software riutilizzabili modellati
sul mondo reale. Gli sviluppatori di software si sono resi conto che la progettazione modulare
e orientata agli oggetti può migliorare la produttività dei team di programmazione rispetto al
passato, quando l’unica tecnica di sviluppo era la programmazione strutturata. In aggiunta, i
programmi orientati agli oggetti sono più semplici da capire, da correggere e da modificare.
     Oltre al C++ sono stati sviluppati molti altri linguaggi orientati agli oggetti, fra i quali
ricordiamo Smalltalk, sviluppato presso il PARC (Palo Alto Research Center) di Xerox. Smalltalk
è un linguaggio orientato agli oggetti “puro”, nel senso che al suo interno esistono soltanto
oggetti. Il C++, invece, è un linguaggio ibrido, perché è possibile programmare nel vecchio
stile C, nel nuovo stile orientato agli oggetti, o in entrambi gli stili.
     Il contributo più importante alla rivoluzione dei microprocessori è stato forse lo sviluppo
dei personal computer, che hanno avuto un profondo impatto sulla vita delle persone e
ancora di più sull’organizzazione delle aziende. Sono in molti a credere che il prossimo settore
in cui i microprocessori avranno un impatto di questo tipo sarà quello delle apparecchiature
elettroniche di largo consumo. In vista di questo, Sun Microsystems lanciò nel 1991 un
progetto di ricerca interno, chiamato Green. Da questo progetto nacque un nuovo linguag-
8                                                                                   CAPITOLO 1


gio basato su C e C++, che il suo ideatore chiamò Oak (la quercia che vedeva dalla finestra).
Il nome fu poi cambiato in Java (nome di una marca di caffé) perché esisteva già un linguaggio
chiamato Oak.
     Il progetto Green incontrò gravi difficoltà, perché il mercato delle apparecchiature elet-
troniche di largo consumo non si stava espandendo secondo le previsioni di Sun Microsystems;
ancora peggio, la società non riuscì ad aggiudicarsi un contratto molto importante. Il pro-
getto Green rischiava di essere annullato. Fortunatamente, nel 1993 iniziò la straordinaria e
inarrestabile diffusione del World Wide Web. Sun intuì le potenzialità di Java per creare
pagine Web dinamiche (animazioni e dati interattivi); presentò ufficialmente il linguaggio
Java nel maggio del 1995, suscitando un grande interesse. Attualmente, Java viene utilizzato
per creare pagine Web dai contenuti dinamici e interattivi, per sviluppare applicazioni aziendali
su larga scala, per migliorare le funzionalità dei server Web (i computer che forniscono i dati
che vedete con i vostri browser), per realizzare applicazioni destinate alle apparecchiature
elettroniche di largo consumo (PDA, telefoni cellulari e così via) e per molte altre applicazioni.
     Nel 2000 la Microsoft annunciò il linguaggio C# (che si legge “C sharp”) e la strategia
.NET. Questa strategia prevede Internet con un nuovo modello di programmazione per
creare applicazioni basate sul Web che possono essere utilizzate dagli utenti tramite varie
unità (personal computer da scrivania, notebook e apparecchiature wireless). Il linguaggio di
programmazione C#, sviluppato da Anders Hejlsberg e Scott Wiltamuth, fu appositamente
ideato per la piattaforma .NET, ma affonda le sue radici nei linguaggi C, C++ e Java, dai
quali ha estratto le migliori funzionalità. Come Visual Basic .NET, C# è un linguaggio
orientato agli oggetti e include una ricca libreria di componenti predefiniti che consentono
ai programmatori di ridurre notevolmente i tempi di sviluppo delle applicazioni.

1.9       Altri linguaggi ad alto livello
Sono centinaia i linguaggi ad alto livello che sono stati sviluppati, ma solo pochi hanno
avuto successo. Il linguaggio FORTRAN (FORmula TRANslator) fu sviluppato da IBM
Corporation tra il 1954 e il 1957 per applicazioni scientifiche che richiedevano calcoli mate-
matici complessi. Il FORTRAN è ancora utilizzato, specialmente nelle applicazioni di inge-
gneria. Il linguaggio COBOL (Common Business Oriented Language) fu sviluppato nel 1959
da un gruppo di costruttori di computer, industrie e organizzazioni governative statunitensi.
Il COBOL è utilizzato specialmente nelle applicazioni di tipo commerciale, dove è richiesta
una gestione efficiente di enormi quantità di dati. Attualmente, oltre il 50% delle applica-
zioni commerciali sono scritte in COBOL. Il linguaggio Pascal fu progettato negli stessi anni
del C dal professor Niklaus Wirth, soprattutto per applicazioni in ambito universitario.
Parleremo più approfonditamente del linguaggio Pascal nel prossimo paragrafo.

1.10        La programmazione strutturata
Nel corso degli anni ’60 il mercato del software ha attraversato una profonda crisi. Le com-
messe di software venivano evase in ritardo, i costi eccedevano di gran lunga i budget previsti
e i prodotti finiti non erano poi completamente affidabili. Gli operatori si accorsero che
creare software era un’attività decisamente più complessa di quanto si credeva. L’attività di
ricerca di quegli anni portò all’evoluzione della programmazione strutturata: un approccio
disciplinato alla scrittura dei programmi, con l’obiettivo di avere programmi più chiari e più
semplici da provare e modificare.
INTRODUZIONE AI COMPUTER, A INTERNET E A VISUAL BASIC .NET                                         9


     Uno dei risultati più tangibili di questa ricerca fu lo sviluppo del linguaggio di program-
mazione Pascal ad opera di Niklaus Wirth, nel 1971. Il Pascal, chiamato così in onore del
matematico del XVII secolo Blaise Pascal, fu progettato per insegnare la programmazione
strutturata negli ambienti accademici e divenne rapidamente il linguaggio di programma-
zione più utilizzato nelle università. Purtroppo il Pascal non possiede molte delle caratteristiche
richieste dalle applicazioni commerciali e industriali, quindi non ha avuto successo al di
fuori dell’ambito universitario. D’altra parte, il linguaggio C, anch’esso nato dalla ricerca
sulla programmazione strutturata, non aveva le limitazioni del Pascal e i programmatori lo
adottarono immediatamente.
     Il linguaggio Ada fu sviluppato nell’ambito di un progetto finanziato dal Dipartimento
della Difesa degli Stati Uniti (DoD), a cavallo degli anni ’70 e ’80. I sistemi di controllo
complessi presenti presso il DoD erano stati sviluppati in vari linguaggi di programmazione,
ma il DoD intendeva sviluppare un unico linguaggio capace di soddisfare tutte le esigenze.
Utilizzando come modello il linguaggio Pascal, fu sviluppato il linguaggio Ada. Il nome Ada
deriva da Lady Ada Lovelace, figlia del poeta Lord Byron. Si ritiene che il primo programma
per computer sia stato scritto da Lady Lovelace agli inizi del secolo XIX; il programma avrebbe
dovuto operare con un calcolatore meccanico ideato da Charles Babbage. Una caratteristica
degna di nota di Ada è il cosiddetto multitasking, ovvero la possibilità di eseguire più compiti
in parallelo. Visual Basic .NET ha una caratteristica simile, detta multithreading, che è descritta
nel volume “Tecniche avanzate e Web Services”.

1.11         Il futuro del software
Uno degli autori di questo libro (H. M. Deitel) ricorda il grande senso di frustrazione che si
provava negli anni ’60 presso le società di software, specialmente quelle che sviluppavano
applicazioni su larga scala. Durante le estati dei suoi anni universitari, H. M. Deitel ebbe il
privilegio di lavorare presso un’azienda leader nello sviluppo di sistemi operativi e unità
timesharing. Per un giovane studente era una bellissima esperienza, ma nell’estate del 1967 il
sogno cominciò a svanire. L’azienda rinunciò a produrre quel sistema che aveva impegnato
centinaia di persone per parecchi anni. Non riuscivano a fare funzionare correttamente quel
software. Il software è “roba complessa”.
     Negli anni ’70, grazie all’introduzione della programmazione strutturata (e delle regole di
analisi e progettazione dei sistemi strutturati), la tecnologia di sviluppo del software cominciò
a migliorare. Ma fu soltanto con l’avvento della programmazione orientata agli oggetti (a
cavallo degli anni ’80 e ‘90) che gli sviluppatori pensarono di avere trovato finalmente gli
strumenti adatti a migliorare drasticamente il processo di sviluppo del software. In effetti, le
tecniche della programmazione basata sugli oggetti risalgono alla fine degli anni ’60, ma le
prime applicazioni su larga scala di tale tecnologia si hanno soltanto con il linguaggio C++.
Sebbene non sia un vero linguaggio orientato agli oggetti, C++ ha incorporato le funzioni
dei linguaggi C e Simula per creare e manipolare gli oggetti. C++ fu ideato per essere utiliz-
zato soltanto all’interno dei laboratori di ricerca di AT&T; tuttavia, grazie al contributo di
vari ricercatori, divenne presto un linguaggio ibrido.
    Che cosa sono gli oggetti e perché sono così speciali? La tecnologia degli oggetti è un
modello di progettazione che permette di creare unità software significative. Queste unità
sono ampie e si concentrano su particolari aree applicative. Ci sono oggetti per le date,
oggetti per le fatture, oggetti per i file audio, i file video e così via. In effetti, qualsiasi nome
10                                                                                        CAPITOLO 1


potrebbe essere rappresentato da un oggetto software. Gli oggetti hanno proprietà (o attributi
come il colore, le dimensioni e il peso) e svolgono azioni (spostamenti, disegni o pause). Le
classi sono gruppi di oggetti correlati. Per esempio, tutte le automobili appartengono alla
classe “automobili”, anche se le singole auto possono differire nella marca, nel modello, nel
colore e nelle caratteristiche meccaniche. Una classe specifica il formato generale dei suoi
oggetti; le proprietà e le azioni disponibili per un oggetto dipendono dalla sua classe di
appartenenza.
     Viviamo in un mondo di oggetti. Basta guardarsi attorno; ci sono auto, aerei, persone,
animali, edifici, ascensori, semafori e così via. Prima dell’avvento dei linguaggi orientati agli
oggetti, i linguaggi di programmazione procedurale (Fortran, Pascal, BASIC e C) si basavano
sulle azioni (verbi), anziché sugli oggetti o sulle cose (nomi). Viviamo in un mondo di oggetti,
ma i primi linguaggi di programmazione costringevano i programmatori a scrivere il codice
principalmente con i verbi. Questo complicava la scrittura dei programmi. Tuttavia, dopo
l’avvento dei linguaggi orientati agli oggetti, come il C++, C# e Visual Basic .NET, i pro-
grammatori possono programmare in uno stile orientato agli oggetti che rispecchia il modo
in cui percepiscono il mondo reale. Questo processo, che sembra più naturale della program-
mazione procedurale, ha determinato un significativo guadagno della produttività.
     Uno dei problemi chiave della programmazione procedurale è che le unità create non
rispecchiano con efficacia le entità del mondo reale e, quindi, non sono perfettamente
riutilizzabili. I programmatori spesso scrivono e riscrivono le stesse sezioni di codice per vari
progetti. Questo implica uno spreco di tempo e denaro perché le persone sono costrette
ripetutamente a “reinventare la ruota”. Grazie alla tecnologia degli oggetti, le entità software
opportunamente progettate (le classi) possono essere riutilizzate nei progetti futuri. Le ricche
librerie di componenti riutilizzabili, come MFC (Microsoft Foundation Classes), consentono
di ridurre notevolmente il lavoro richiesto per implementare determinati tipi di sistemi (rispetto
al lavoro che sarebbe richiesto per reinventare queste funzioni per ogni nuovo progetto).
     Alcuni ritengono che il vantaggio principale della programmazione orientata agli oggetti
non sia la riutilizzabilità del software; piuttosto fanno notare che la programmazione orien-
tata agli oggetti tende a produrre un software che è più comprensibile perché è organizzato
meglio e ha meno problemi di manutenzione. Circa l’80% dei costi del software non riguarda
il lavoro iniziale di sviluppo, ma la continua evoluzione e la manutenzione del software
durante il suo ciclo di vita. La tecnologia degli oggetti consente ai programmatori di ignorare
i dettagli realizzativi del software e di concentrarsi sugli aspetti più generali. Anziché preoc-
cuparsi delle minuzie, il programmatore può focalizzare la sua attenzione sul comportamen-
to e sulle interazioni degli oggetti. Una segnaletica stradale che indica tutti gli edifici, alberi
e strade sarebbe difficile, se non impossibile, da leggere; eliminando tutti i dettagli e lascian-
do le indicazioni essenziali (le strade), la segnaletica diventa più facile da capire. Nello stesso
modo, un programma che è suddiviso in oggetti è più facile da capire, modificare e aggiornare,
perché nasconde la maggior parte dei dettagli. La programmazione orientata agli oggetti sarà
il modello di programmazione chiave almeno per il prossimo decennio.
         Ingegneria del software 1.1
         Quando create i programmi, seguite uno schema di programmazione basato su blocchi
         di codice riutilizzabili. Eviterete così di reinventare la ruota ogni volta che dovrete iniziare
         un nuovo progetto. La riutilizzabilità del software è un concetto centrale della program-
         mazione orientata agli oggetti.
INTRODUZIONE AI COMPUTER, A INTERNET E A VISUAL BASIC .NET                                         11


     Il vantaggio di creare il proprio codice è che ogni programmatore potrà sapere con esat-
tezza come funzionerà il suo codice. Il codice sarà di sua proprietà e potrà essere esaminato,
modificato e migliorato. Lo svantaggio è il lavoro che occorrerà per progettare, sviluppare e
collaudare il nuovo codice.
         Obiettivo efficienza 1.1
         Riutilizzare componenti di codice collaudati, anziché scrivere le proprie versioni, può
         migliorare le prestazioni dei programmi, perché questi componenti di solito sono scritti
         per garantire la massima efficienza.
         Ingegneria del software 1.2
         Il Web include varie librerie di componenti software riutilizzabili, molte delle quali possono
         essere scaricate gratuitamente.

1.12        Il futuro dell’hardware
Ogni anno le persone prevedono di spendere un po’ di più per la maggior parte dei prodotti
e dei servizi. Per l’informatica e le comunicazioni avviene il contrario, specialmente per le
componenti hardware che supportano queste tecnologie. Per alcuni decenni (e forse anche
per molti anni ancora) i costi delle unità hardware sono diminuiti rapidamente, se non
precipitosamente. Ogni due anni circa, le capacità dei computer si raddoppiano (secondo la
cosiddetta legge di Moore). Questo è particolarmente vero per la quantità di memoria che i
computer mettono a disposizione dei programmi, per la quantità di memoria secondaria
(per esempio, i dischi) che usano per conservare dati e applicazioni per lunghi periodi di
tempo e per la velocità dei processori (la velocità alla quale i computer eseguono i programmi
o svolgono i loro compiti). Lo stesso ritmo di crescita si è avuto nel campo delle comunica-
zioni, dove i costi sono caduti a picco perché l’enorme richiesta di una maggiore larghezza di
banda ha innescato una forte concorrenza. Non conosciamo altri settori in cui la tecnologia
si è evoluta così rapidamente e i costi si sono ridotti così drasticamente. Gli straordinari
progressi che si sono verificati nei settori dell’informatica e delle comunicazioni stanno davvero
favorendo la cosiddetta “rivoluzione informatica”.
     In seguito alla rapida diffusione dei computer che si ebbe negli anni ’60 e ’70, molte
persone discutevano sui notevoli miglioramenti che avrebbero avuto le attività umane. Tut-
tavia, questi miglioramenti non si materializzarono. Le aziende investivano ingenti capitali
nei computer e li utilizzano con efficienza, ma non realizzavano i previsti guadagni di pro-
duttività. L’invenzione della tecnologia del chip con microprocessore e il suo vasto impiego a
cavallo degli anni 70’ e ’80 ha gettato le basi per ottenere i miglioramenti produttivi che
aziende e privati hanno raggiunto in questi ultimi anni.

1.13        Storia di Internet e del World Wide Web
Alla fine degli anni sessanta, uno degli autori di questo libro (H. M. Deitel) era studente
presso il MIT. La sua ricerca al Project Mac (l’attuale Laboratory for Computer Science - la
sede del World Wide Web Consortium) era sovvenzionata da ARPA (Advanced Research
Projects Agency), un ente del Dipartimento della Difesa degli USA. ARPA organizzò una
conferenza presso l’University of Illinois di Urbana-Champaign cui parteciparono molti stu-
denti dei suoi progetti. Durante questa conferenza fu illustrato il progetto per connettere in
rete i computer di una dozzina di università e istituti di ricerca finanziati da ARPA.
12                                                                                     CAPITOLO 1


     I computer dovevano essere collegati mediante linee di comunicazione operanti alla
sbalorditiva velocità di 56 Kbps (56.000 bit al secondo), se si pensa che a quell’epoca i pochi
utenti privilegiati collegavano i loro computer a linee telefoniche che funzionavano a 110 bit
al secondo. H. M. Deitel ricorda ancora le emozioni di quella conferenza. I ricercatori di
Harvard parlarono della possibilità di collegarsi al “supercomputer” Univac 1108 dell’University
of Utah per svolgere i calcoli delle loro ricerche sulla grafica computerizzata. Furono
presentate molte altre affascinanti applicazioni. La ricerca accademica stava per compiere un
balzo da gigante. Subito dopo questa conferenza, ARPA iniziò a implementare ciò che presto
sarebbe diventato ARPAnet, il progenitore dell’attuale Internet. Le cose non andarono secondo
i piani originali. ARPAnet consentì ai ricercatori di condividere i computer, ma il beneficio
più importante fu un altro: la capacità di comunicare rapidamente e facilmente attraverso
ciò che adesso chiamiamo posta elettronica (e-mail o electronic mail). Questo vale ancora oggi
in Internet, perché la posta elettronica è uno strumento che facilita lo scambio delle informa-
zioni fra milioni di utenti in tutto il mondo.
     Uno dei principali obiettivi che ARPA voleva raggiungere con la rete era consentire a più
utenti di trasmettere e ricevere informazioni simultaneamente lungo lo stesso mezzo di comu-
nicazione (come le linee telefoniche). Il funzionamento della rete si basava su una tecnica
chiamata commutazione di pacchetto (packet switching), che consentiva ai dati digitali di essere
trasmessi sotto forma di piccoli pacchetti (packet). Questi pacchetti contenevano dati e infor-
mazioni sugli indirizzi, sul controllo degli errori e sulla sequenza di ordinamento dei dati. Le
informazioni sugli indirizzi servivano a instradare (routing) i pacchetti di dati alle loro desti-
nazioni; le informazioni sulla sequenza di ordinamento erano utilizzate per ricomporre i vari
pacchetti (che, a causa dei meccanismi complessi di routing, potevano arrivare fuori sequenza)
nell’ordine originale prima di essere presentati al destinatario. La tecnica della commutazione
di pacchetto ridusse significativamente i costi di trasmissione.
    La rete era progettata per operare senza un controllo centralizzato. Questo significava
che se una porzione della rete avesse avuto un guasto, le altre parti avrebbero potuto conti-
nuare a instradare i pacchetti dal mittente al destinatario seguendo percorsi alternativi. I
protocolli per comunicare su ARPAnet furono chiamati TCP (Transmission Control Protocol).
Questi protocolli garantivano che i messaggi potessero essere appropriatamente instradati
dal mittente al destinatario e che arrivassero intatti alle loro destinazioni.
     Parallelamente alla prima evoluzione di Internet, molte aziende in tutto mondo iniziarono
a implementare le loro reti per comunicazioni intra-aziendali (all’interno della stessa azienda)
o per comunicazioni inter-aziendali (fra aziende diverse). Furono sviluppate numerose unità
hardware e software per queste reti; il problema principale era che tutte queste reti non
comunicavano fra di esse. Per risolvere questo problema, ARPA sviluppò il protocollo IP
(Internet Protocol), creando “una rete di reti”, che è l’attuale architettura di Internet. La combi-
nazione dei protocolli oggi si chiama TCP/IP.
     Inizialmente, l’uso di Internet era limitato alle università e agli istituti di ricerca; succes-
sivamente venne esteso alle forze armate americane; infine, il governo americano autorizzò
l’accesso a Internet per svolgere attività commerciali. Questa scelta non fu accolta favorevol-
mente negli ambienti accademici e militari, perché si pensava che i tempi di risposta della
“rete” si sarebbero allungati al crescere del numero degli utenti. In pratica, si verificò l’esatto
contrario. Le aziende capirono subito che, utilizzando in modo efficiente Internet, avrebbero
potuto ampliare le loro attività e offrire servizi nuovi e migliori ai loro clienti. Iniziarono a
investire ingenti risorse di denaro nello sviluppo e nel potenziamento di Internet; da qui
INTRODUZIONE AI COMPUTER, A INTERNET E A VISUAL BASIC .NET                                       13


scaturì una feroce competizione fra aziende di telecomunicazione e produttori di hardware e
software per soddisfare questa domanda. Il risultato fu che la larghezza di banda (la capacità
di trasportare informazioni di una linea di comunicazione) di Internet si ampliò notevol-
mente e i costi si ridussero drasticamente. Molti ritengono che Internet abbia giocato un
ruolo significativo nella prosperità economica che gli Stati Uniti d’America e altri Paesi indu-
strializzati hanno avuto nell’ultimo decennio e che questo fenomeno non sia ancora terminato.
     Il World Wide Web consente agli utenti di trovare e visualizzare documenti multimediali
(che contengono testi, grafici, animazioni, elementi audio e/o video) su qualsiasi argomento.
Anche se lo sviluppo di Internet è iniziato da oltre trent’anni, l’introduzione del World Wide
Web è un evento relativamente recente. Nel 1989, Tim Berners-Lee del CERN (European
Laboratory for Particle Physics) iniziò a sviluppare una tecnologia per condividere le informa-
zioni utilizzando documenti collegati attraverso link ipertestuali. Il suo nuovo linguaggio, che
chiamò HTML (HyperText Markup Language), si basava su SGML (Standard Generalized Markup
Language), uno standard per lo scambio dei dati gestionali, che è descritto nel Paragrafo 1.6.
Tim Berners-Lee scrisse anche i protocolli di comunicazione per formare la struttura portante
del suo nuovo sistema di informazioni ipertestuali, che chiamò World Wide Web.
     Internet e il World Wide Web saranno certamente annoverati fra le più importanti realiz-
zazioni del genere umano. In passato, molte applicazioni software erano eseguite in
computer “isolati” (nel senso che non erano collegati ad altri computer). Oggi è possibile scri-
vere applicazioni che mettono in comunicazione centinaia di milioni di computer. Internet è
una miscela di tecnologie di calcolo e comunicazione; semplifica il nostro lavoro e ci permette
di accedere comodamente e rapidamente a immense risorse di dati e informazioni distribuite in
tutto il mondo. Permette ai singoli individui e alle piccole aziende di rendersi visibili agli occhi
del mondo. Sta cambiando il modo di svolgere le attività commerciali; gli utenti possono
acquistare prodotti e servizi, dopo averne confrontato i prezzi. Le persone possono comunicare
più facilmente. I ricercatori possono conoscere in tempo reale le nuove scoperte.

1.14        World Wide Web Consortium (W3C)
Nell’ottobre del 1994 Tim Berners-Lee fondò l’organizzazione World Wide Web Consortium
(W3C) per sviluppare tecnologie destinate al World Wide Web. Uno dei principali obiettivi
del W3C è rendere accessibile a tutti il Web, senza distinzioni di cultura, lingua, razza e così via.
Il W3C (www.w3.org) si occupa anche di standardizzazione; è costituito da tre ospiti - MIT
(Massachusetts Institute of Technology), INRIA (Institut National de Recherche en
Informatique et Automatique) e Keio University of Japan - e da oltre 400 membri (fra cui
Deitel & Associates, Inc.). I membri sono i principali finanziatori del W3C e contribuiscono
alle scelte strategiche del consorzio.
     Una tecnologia Web standardizzata dal W3C si chiama recommendation. Fra le attuali
recommendation del W3C figurano HyperText Markup Language (HTML), Cascading Style
Sheets (CSS) e Extensible Markup Language (XML). Le recommendation non sono i prodotti
software reali, ma i documenti che specificano il ruolo, la sintassi, le regole e altre caratteristi-
che di una tecnologia. Prima di diventare recommendation, un documento deve superare tre
fasi: working draft, una bozza del documento in evoluzione che può subire delle modifiche;
candidate recommendation, una versione stabile del documento che può essere implementata
dall’industria del software; proposed recommendation, una specifica considerata matura (per-
ché è stata implementata e collaudata per un certo periodo di tempo) e pronta per essere
14                                                                                   CAPITOLO 1


convertita in recommendation del W3C. Per informazioni dettagliate sul processo di standar-
dizzazione del W3C, consultate il paragrafo “6.2 The W3C Recommendation track” del
documento
       www.w3.org/Consortium/Process/Process-19991111/process.html#RecsCR


1.15        Il linguaggio XML
La rapida espansione del Web ha messo in evidenza i limiti intrinseci del linguaggio HTML.
La sua mancanza di flessibilità ha frustrato gli sviluppatori e la sua definizione ambigua ha
permesso il proliferare di documenti HTML con errori sintattici. Come soluzione a questi
problemi, il W3C ha creato una nuova tecnologia di fogli stile per HTML, chiamata Cascading
Style Sheets (CSS). Questi rimedi, tuttavia, sono soltanto delle soluzioni temporanee. Appare
evidente l’esigenza di un nuovo linguaggio standardizzato, estremamente flessibile e
sintatticamente rigoroso. Per questo è stato ideato il linguaggio XML (Extensible Markup
Language). XML combina la potenza e la flessibilità del suo antenato SGML con la caratte-
ristica di semplicità richiesta dagli utenti del Web. Contemporaneamente, il W3C ha iniziato
a sviluppare gli standard basati su XML per i fogli stile e i link avanzati. Il linguaggio XSL
(Extensible Stylesheet Language) incorpora gli elementi dei fogli stile CSS e del linguaggio
DSSSL (Document Style and Semantics Specification Language). Il linguaggio XLink (Extensible
Linking Language) si basa su HyTime e Text Encoding Initiative (TEI), che definisce le direttive
SGML per le comunità accademiche.
     L’indipendenza dei dati (la separazione dei contenuti dalla loro rappresentazione) è la
caratteristica essenziale del linguaggio XML. Poiché un documento XML descrive i dati, può
essere facilmente elaborato da qualsiasi applicazione. Sulla base di questo, molti sviluppatori
di software stanno integrando il codice XML nelle loro applicazioni per sfruttare la funzio-
nalità e l’interoperabilità del Web. Grazie alle sue caratteristiche di flessibilità ed efficienza,
XML sta diventando il linguaggio ideale per implementare lo strato intermedio delle interfacce
client/server, dove è richiesta la massima interoperabilità. Poiché le informazioni strutturali e
semantiche del linguaggio XML consentono a qualsiasi applicazione di elaborare un docu-
mento XML, molti processi che prima erano riservati ai server potranno essere svolti dai
client. Questo ridurrà il carico sui server e il traffico in rete e, di conseguenza, il Web sarà
utilizzato in modo più rapido ed efficiente. Il linguaggio XML non è limitato soltanto alle
applicazioni nel Web. Il suo impiego si sta estendendo ai database, in quanto la natura strut-
turata e non formattata di un documento XML agevola le tipiche elaborazioni delle applica-
zioni per database. È probabile che XML diventerà il linguaggio universale per rappresentare
i dati; finalmente, tutte le applicazioni potranno comunicare, purché ogni applicazione sia
in grado di capire il markup o vocabolario di un’altra applicazione.
     SOAP è un protocollo basato su HTTP e XML che consente alle applicazioni di comuni-
care facilmente in Internet, utilizzando documenti XML chiamati messaggi SOAP. SOAP è
stato progettato e sviluppato da IBM, Lotus Development Corporation, Microsoft,
DevelopMentor e Userland Software ed è supportato da Sun Microsystems. È compatibile
con qualsiasi modello di oggetti, purché includa le funzioni strettamente necessarie per definire
un ambiente di comunicazione. Quindi, SOAP è indipendente dalle piattaforme e dal software
e può essere implementato con qualsiasi linguaggio. SOAP è adattabile a qualsiasi protocollo.
Un messaggio SOAP è formato da tre parti: un involucro (envelope) che descrive il contenuto e
il destinatario del messaggio; le regole di codifica del messaggio, basate su XML; una chiamata di
procedura remota (Remote Procedure Call o RPC), che è una richiesta fatta a un’altra macchina
INTRODUZIONE AI COMPUTER, A INTERNET E A VISUAL BASIC .NET                                    15


per svolgere un determinato compito. Microsoft .NET (di cui diremo nel prossimo paragrafo)
usa XML e SOAP per contrassegnare e trasferire i dati su Internet. XML e SOAP sono il cuore
di .NET, perché agevolano la comunicazione fra i componenti software (interoperabilità).

1.16        Introduzione a Microsoft .NET
Nel giugno 2000, la Microsoft ha annunciato la sua iniziativa .NET, una nuova strategia per
includere Internet e il Web nello sviluppo, nell’ingegneria e nell’uso del software. Un aspetto
chiave della strategia .NET è la sua indipendenza da un particolare linguaggio o piattaforma.
Anziché costringere gli sviluppatori a utilizzare un solo linguaggio di programmazione, è
possibile creare un’applicazione .NET con qualsiasi linguaggio compatibile con .NET. I pro-
grammatori possono contribuire allo sviluppo dello stesso progetto software scrivendo il
codice con il linguaggio .NET (Visual Basic .NET, Visual C++ .NET, C# e altri) che cono-
scono meglio. Parte dell’iniziativa .NET include la tecnologia Active Server Pages (ASP) .NET,
che consente ai programmatori di creare applicazioni per il Web. L’architettura .NET può
essere applicata a più piattaforme, estendendo ulteriormente la portabilità dei programmi
.NET. In aggiunta, la strategia .NET prevede un nuovo processo di sviluppo dei programmi
che potrebbe cambiare il modo in cui i programmi vengono scritti ed eseguiti, con un signi-
ficativo incremento della produttività del software.
     Un componente chiave dell’architettura .NET sono i servizi Web: applicazioni che pos-
sono essere utilizzate in Internet. I client e altre applicazioni possono usare questi servizi Web
come blocchi di codice riutilizzabile. Un esempio di servizio Web è il sistema di prenotazione
delle auto Dollar Rent a Car (Microsoft Corporation, “Dollar Rent A Car E-Commerce Case
Study on Microsoft Business,” 1 July 2001 <www.microsoft.com/BUSINESS/casestudies/
b2c/dollarrentacar.asp>). Una compagnia aerea può consentire ai suoi clienti di preno-
tare un’auto dal suo sito Web. Per fare questo, la compagnia aerea deve accedere al sistema di
prenotazione Dollar; il sistema Dollar risponde creando un servizio Web che permette alla
compagnia di accedere al suo database per effettuare le prenotazioni. I servizi Web consento-
no alle due compagnie di comunicare tramite il Web, anche se la compagnia aerea usa Unix
e Dollar usa Microsoft Windows. Se Dollar avesse realizzato una soluzione per quella parti-
colare compagnia aerea, non avrebbe potuto riutilizzare un progetto così personalizzato.
Creando un servizio Web, Dollar può consentire ad altre compagnie aeree o hotel di usare il
suo sistema di prenotazione, senza creare un programma personalizzato per ogni utente.
     La strategia .NET estende il concetto di software riutilizzabile a Internet, per consentire
ai programmatori di concentrarsi sul loro particolare problema, senza bisogno di implemen-
tare tutti i componenti di ogni applicazione. Piuttosto, un’azienda di software può acquistare
i servizi Web e dedicare tempo e risorse allo sviluppo dei suoi prodotti specifici. La program-
mazione visiva (descritta nel Capitolo 2) si è diffusa rapidamente, perché consente ai pro-
grammatori di creare facilmente le applicazioni, utilizzando i componenti predefiniti, come
i pulsanti, i box di testo e la barre di scorrimento. Analogamente, i programmatori possono
creare applicazioni utilizzando i servizi Web per i database, la protezione, l’autenticazione e
la memorizzazione dei dati e la traduzione dei linguaggi, senza bisogno di conoscere i dettagli
di questi componenti. La programmazione dei servizi Web è descritta nel volume “Tecniche
avanzate e Web Services”.
     La strategia .NET incorpora l’idea del software riutilizzabile. Quando le aziende collegano
i loro prodotti in questo modo, è possibile condividere le esperienze specifiche dei vari utenti.
Per esempio, un’applicazione potrebbe occuparsi della gestione dei pagamenti delle fatture,
16                                                                                     CAPITOLO 1


delle tasse e degli affitti, utilizzando i servizi Web delle varie aziende. Un’azienda che intende
creare un sito Web e-commerce può acquistare i servizi Web per gestire il database del magaz-
zino, i pagamenti online con le carte di credito, l’autenticazione degli utenti e la sicurezza dei
                                                                        ,
dati. Gli elementi chiave di questa interazione sono XML e SOAP che consentono ai servizi
Web di comunicare fra di loro. XML ha il compito di dare un significato ai dati, mentre SOAP
è il protocollo che permette la comunicazione fra i vari servizi Web. XML e SOAP operano
come un collante che mantiene uniti i servizi Web per formare le applicazioni.
     L’accesso universale ai dati è un altro concetto fondamentale della strategia .NET. Se esistono
due copie di un file (una copia su un personal computer e l’altra su un computer dell’azienda),
la versione più recente deve essere costantemente aggiornata; questo processo si chiama sincro-
nizzazione dei file. Se le versioni dei file sono diverse (non sincronizzate), potrebbero verificarsi
errori molto gravi. Sotto .NET, i dati possono trovarsi in un sistema centrale, anziché in sistemi
separati. Qualsiasi unità collegata a Internet può accedere ai dati (ovviamente, dopo un con-
trollo rigoroso), che possono essere opportunamente formattati per essere utilizzati e visualizzati
su ogni unità. Quindi, lo stesso documento potrebbe essere visto e modificato su un PC, un
PDA, un telefono cellulare o un’altra unità. Gli utenti non hanno bisogno di sincronizzare le
informazioni, perché il file che le contiene è sempre aggiornato nel sistema centrale.
     I servizi Web HailStorm della Microsoft facilitano questa organizzazione dei dati (Microsoft
Corporation, “Building User-Centric Experiences: An Introduction to Microsoft Hail-Storm,”
30 July 2001 <http://www.microsoft.com/net/hailstorm.asp>). HailStorm consente
agli utenti di memorizzare i dati in modo che siano accessibili da qualsiasi unità compatibile
con HailStorm (come i PDA, i telefoni cellulari e i PC). HailStorm offre numerosi servizi,
come la posta elettronica, una rubrica di indirizzi, la memorizzazione dei documenti, un’agenda
e un portafoglio digitale. I servizi Web di terze parti possono interagire con HailStorm; gli
utenti possono essere avvisati quando vincono un’asta online o le loro agende possono essere
automaticamente aggiornate se un aereo è in ritardo. Le informazioni possono essere lette da
qualsiasi luogo e sono sempre sincronizzate. Naturalmente, aumentano i problemi della pri-
vacy, perché tutti i dati di un utente si trovano in un unico sistema. La Microsoft ha risolto
questo problema offrendo agli utenti il controllo totale dei loro dati. Gli utenti devono
autorizzare l’accesso ai loro dati e specificare la durata di ogni accesso. La strategia .NET ha
un futuro immenso. Questo libro descrive i vari aspetti di .NET; per ulteriori informazioni,
visitate il sito Web della Microsoft (www.microsoft.com/net).

1.17        .NET Framework e CLR
.NET Framework è il cuore della strategia .NET: gestisce ed esegue le applicazioni e i servizi
Web, contiene una libreria di classi (chiamata Framework Class Library o FCL), migliora la
sicurezza dei dati e offre molti altri strumenti di programmazione. I dettagli di .NET Framework
si trovano nella specifica CLS (Common Language Specification), che contiene le informa-
zioni sulla memorizzazione dei tipi di dati, sugli oggetti e così via. È in corso il processo di
standardizzazione di CLS presso l’ECMA (European Computer Manufacturers Association),
per agevolare la creazione di .NET Framework per altre piattaforme. Attualmente, .NET
Framework esiste soltanto per la piattaforma Microsoft Windows, sebbene sia in fase di
sviluppo una versione per il sistema operativo FreeBSD (Microsoft Corporation, “The Microsoft
Shared Source C# and CLI Specifications,” 30 July 2001 <http://www.microsoft.com/
net/sharedsourcewp.asp> ). Il progetto FreeBSD è un sistema operativo, distribuito gra-
tuitamente e open-source come UNIX, che si basa su BSD (Berkeley System Distribution).
INTRODUZIONE AI COMPUTER, A INTERNET E A VISUAL BASIC .NET                                 17


     Common Language Runtime (CLR) è un’altra parte centrale di .NET Framework, perché
esegue i programmi Visual Basic .NET. I programmi vengono compilati in istruzioni speci-
fiche della macchina in due passaggi. Nel primo passaggio, il programma viene compilato
nel linguaggio MSIL (Microsoft Intermediate Language), che definisce le istruzioni per CLR.
Il codice convertito in MSIL da altri linguaggi e codice sorgente può essere confezionato da
CLR. Nel secondo passaggio, un altro compilatore di CLR traduce le istruzioni MSIL in
codice macchina (per una particolare piattaforma), creando un’unica applicazione. Perché
serve un passaggio intermedio da Visual Basic .NET a MSIL? Non sarebbe meglio compilare
direttamente in linguaggio macchina? Questi passaggi servono a garantire la portabilità fra i
sistemi operativi, l’interoperabilità fra i linguaggi e alcune funzioni di esecuzione, gestione
della memoria e protezione dei dati. Se .NET Framework è installato per una piattaforma,
qualsiasi programma .NET può essere eseguito su questa piattaforma. La capacità di un
programma di essere eseguito, senza essere modificato, su più piattaforme si chiama indipen-
denza dalle piattaforme. Il codice scritto una volta può essere utilizzato in un’altra macchina
senza modifiche, risparmiando tempo e denaro.
     .NET Framework garantisce anche un alto livello di interoperabilità fra i linguaggi. I
programmi scritti in nei vari linguaggi di programmazione sono tutti compilati in MSIL; le
diverse parti possono essere combinate per creare un unico programma unificato. MSIL
consente a .NET Framework di essere indipendente dai linguaggi, perché i programmi .NET
non sono vincolati a un particolare linguaggio di programmazione. Un linguaggio che può
essere compilato in MSIL si chiama linguaggio compatibile .NET. La Figura 1.1 elenca molti
dei linguaggi che supportano la piattaforma .NET.

Linguaggi di programmazione
APL                                 Oberon
C#                                  Oz
COBOL                               Pascal
Component Pascal                    Perl
Curriculum                          Python
Eiffel                              RPG
Fortran                             Scheme
Haskell                             Smalltalk
J#                                  Standard ML
Jscript                             Visual Basic .NET
Mercury                             Visual C++ .NET
Figura 1.1 Linguaggi .NET
     L’interoperabilità fra i linguaggi offre numerosi vantaggi alle società di software. Gli
sviluppatori che usano Visual Basic .NET, C# e Visual C++ .NET possono lavorare fianco a
fianco sullo stesso progetto senza dover imparare un altro linguaggio di programmazione; il
loro codice viene compilato in MSIL e collegato insieme per formare un unico programma.
In aggiunta, .NET Framework può confezionare insieme vecchi e nuovi componenti; questo
consente alle aziende di riutilizzare il codice che ha richiesto anni di sviluppo, integrandolo
nel nuovo codice .NET. Un altro vantaggio di .NET Framework sono alcune funzioni im-
portanti di CLR, quali la gestione della memoria e la protezione dei dati, che sollevano i
18                                                                                    CAPITOLO 1


programmatori da queste responsabilità. Con i linguaggi come C++, i programmatori devono
creare le funzioni di gestione della memoria. Questo può causare dei problemi se i programmatori
allocano la memoria e poi non la liberano; i programmi potrebbero occupare tutta la memoria
disponibile e questo impedirebbe l’esecuzione di altre applicazioni. Poiché .NET Framework
si occupa della gestione della memoria, i programmatori possono concentrarsi su altri compiti.
.NET Framework offre ai programmatori una ricca libreria di classi. Questa libreria, che si
chiama Framework Class Library (FCL), può essere utilizzata da qualsiasi linguaggio .NET.
FCL contiene numerosi componenti riutilizzabili che risparmiano ai programmatori il lavoro
di creare nuovi componenti.

1.18        Panoramica del libro
Capitolo 1 - Introduzione ai computer, a Internet e a Visual Basic .NET. Il primo capitolo
descrive i computer, il loro funzionamento e come sono programmati. Descrive l’evoluzione
dei linguaggi di programmazione, dal linguaggio macchina ai linguaggi ad alto livello. Il
capitolo contiene alcune notizie storiche su Internet, il World Wide Web e le varie tecnologie
(come HTTP, XML e SOAP) che hanno migliorato l’impiego dei computer. Segue una
descrizione dell’evoluzione del linguaggio Visual Basic e della strategia .NET della Microsoft.
Capitolo 2 - Introduzione all’IDE. Introduce l’IDE, l’ambiente di sviluppo integrato di Visual
Studio .NET, che consente di creare i programmi Visual Basic .NET. La caratteristica più
importante dell’IDE è la programmazione visiva o grafica: il programmatore può trascinare e
rilasciare con il mouse i controlli (come i pulsanti e i box di testo), senza scrivere una sola riga
di codice. La programmazione visiva ha accresciuto notevolmente la produttività del software
degli sviluppatori perché elimina molti dei compiti più noiosi e ripetitivi.
Capitolo 3 - Introduzione alla programmazione con Visual Basic. Questo capitolo presenta ai
lettori l’approccio live-code: ogni concetto viene illustrato con un programma Visual Basic
funzionante, seguito da una o più videate di output che dimostrano il risultato del programma.
Il primo esempio visualizza una riga di testo; ogni riga del programma viene dettagliatamente
analizzata. Il capitolo descrive le operazioni fondamentali di un programma, l’input e l’output
dei dati e come scrivere le espressioni aritmetiche. L’ultimo esempio dimostra come visualizzare
una stringa di caratteri all’interno di una finestra.
Capitolo 4 - Le strutture di controllo - 1. La prima parte del capitolo descrive il processo di
sviluppo di un programma; mostra come sia possibile, partendo dall’esposizione di un
problema, sviluppare un programma Visual Basic perfettamente funzionante. La seconda
parte introduce alcune semplici strutture di controllo (If/Then e While) che permettono a
un programma di prendere delle decisioni.
Capitolo 5 - Le strutture di controllo - 2. Il capitolo presenta altre strutture di controllo e gli
operatori logici. Usa i diagrammi di flusso per illustrare la sequenza delle operazioni delle
strutture di controllo For/Next , Do/Loop While e Select Case. Il capitolo si conclude con
una sintesi della programmazione strutturata, dove vengono elencate tutte le strutture
di controllo di Visual Basic .NET. Le tecniche descritte nei Capitoli 4 e 5 costituiscono gran
parte di ciò che tradizionalmente viene insegnato nelle università come “programmazione
strutturata”.
Capitolo 6 - Procedure. Una procedura consente al programmatore di creare un blocco di codice
che può essere chiamato da vari punti di un programma. Un programma può essere formato
raggruppando procedure correlate in unità chiamate classi e moduli. Il capitolo descrive come
INTRODUZIONE AI COMPUTER, A INTERNET E A VISUAL BASIC .NET                                      19


creare delle procedure personalizzate per accettare l’input dall’utente, elaborare i dati di input e
visualizzare il risultato. Viene esaminata la classe Math, che contiene i metodi (ovvero le proce-
dure in una classe) per svolgere calcoli complessi (come i logaritmi, le funzioni trigonometriche).
Vengono analizzate le procedure ricorsive (procedure che chiamano sé stesse) e le procedure
sovraccaricate (più procedure con lo stesso nome). Il capitolo si conclude con una simulazione
grafica del gioco a dadi “craps” utilizzando le tecniche di generazione dei numeri casuali.
Capitolo 7 - Array. Il Capitolo 7 descrive la prima struttura di dati: l’array. Le strutture dei
dati svolgono un ruolo importante per memorizzare, ordinare e manipolare grandi quantità
di dati. Gli array sono gruppi di dati correlati cui il programmatore può accedere diretta-
mente. Sono descritte le tecniche per dichiarare e allocare gli array, per ordinare gli elementi
di un array e per effettuare delle ricerche all’interno di un array.
Capitolo 8 - Programmazione basata sugli oggetti. Il capitolo introduce due concetti molto
importanti: gli oggetti e le classi. La tecnologia degli oggetti ha consentito di migliorare signi-
ficativamente il processo di sviluppo del software, grazie alla possibilità di creare componenti
riutilizzabili. Sono descritti i fondamenti della programmazione basata sugli oggetti, come
l’incapsulamento, l’astrazione dei dati e i tipi di dati astratti. Alcuni esempi spiegano come
creare classi simili a quelle di FCL (Framework Class Library). Questo capitolo crea le basi
per capire la programmazione orientata agli oggetti descritta nei Capitoli 9 e 10.
Capitolo 9 - Programmazione orientata agli oggetti: ereditarietà. Il capitolo tratta il concetto di
ereditarietà: una forma di riutilizzabilità del software in cui le classi (dette classi derivate)
sono create ereditando gli attributi e i metodi di classi esistenti (dette classi base). La classe
derivata può contenere ulteriori attributi e metodi, oltre a quelli ereditati. Lo studio detta-
gliato di un caso applica il concetto di ereditarietà. Il capitolo illustra i vantaggi offerti dalla
programmazione orientata agli oggetti.
Capitolo 10 - Programmazione orientata agli oggetti: polimorfismo. Questo capitolo continua
la formale introduzione della programmazione orientata agli oggetti. Il polimorfismo per-
mette di trattare le classi in maniera generale, consentendo a uno stesso metodo di compor-
tarsi in modo diverso a seconda del contesto in cui viene chiamato. Oltre a questo, il
polimorfismo permette di aggiungere facilmente nuove classi a un sistema. Vengono esami-
nati i casi in cui conviene applicare il polimorfismo. Le tecniche di programmazione descritte
in questo capitolo e nel precedente consentono ai programmatori di creare componenti
software versatili e riutilizzabili.
Capitolo 11 - Gestione delle eccezioni. La gestione delle eccezioni è uno degli argomenti più
importanti di Visual Basic .NET perché consente di creare applicazioni in grado di risolvere
automaticamente i problemi. Un’eccezione è l’indicazione di un problema che si è verificato
durante l’esecuzione di un programma. Le funzionalità descritte in questo capitolo consen-
tono ai programmatori di scrivere programmi chiari, affidabili e in grado di superare situa-
zioni critiche durante l’esecuzione (programmi resistenti agli errori).
Capitolo 12 - Interfacce grafiche - 1. Il capitolo spiega come aggiungere un’interfaccia grafica
a un programma. L’interfaccia grafica utente (Graphical User Interface o GUI) consente a un
utente di interagire visivamente con un programma. L’IDE di Visual Studio .NET agevola la
creazione delle interfacce grafiche perché consente ai programmatori di posizionare i com-
ponenti in una finestra tramite la programmazione visiva. Il capitolo spiega come costruire le
interfacce utilizzando i componenti dei form, come le label, i pulsanti, i box di testo e le
barre di scorrimento. Vengono descritti anche gli eventi, che sono messaggi inviati da un
20                                                                                     CAPITOLO 1


programma per segnalare a un oggetto o un gruppo di oggetti che è accaduto qualcosa.
Tipicamente, gli eventi sono utilizzati per segnalare le interazioni dell’utente con i compo-
nenti GUI, ma anche per segnalare azioni interne a un programma.
Capitolo 13 - Interfacce grafiche - 2. Questo capitolo introduce i componenti GUI più com-
plessi, come i menu, i link, i controlli Tab, le liste a discesa e le finestre MDI (Multiple
Document Interface). Sono descritti i componenti GUI che incapsulano componenti GUI
più piccoli. Questi componenti consentono agli sviluppatori di creare applicazioni reali con
sofisticate interfacce grafiche. Visual Studio .NET offre un’ampia gamma di componenti
GUI, molti dei quali sono descritti in questo capitolo. I programmatori possono creare con-
trolli personalizzati e aggiungere questi controlli a quelli predefiniti di Visual Studio .NET.
Le tecniche presentate in questo capitolo costituiscono le basi per creare interfacce GUI
complesse e controlli personalizzati.
Capitolo 14 - Stringhe e caratteri. Il capitolo descrive le funzionalità di Visual Basic che con-
sentono di elaborare le stringhe di caratteri. Le tecniche presentate possono essere utilizzate
per sviluppare editor di testi, software di impaginazione e altri tipi di applicazioni per l’ela-
borazione dei testi. Un interessante esempio applica le stringhe per creare un programma che
mescola e distribuisce le carte da gioco. Il capitolo illustra anche le espressioni regolari, che
permettono di manipolare e ricercare i testi.
Appendice A - Priorità e associatività degli operatori. Elenca gli operatori Visual Basic e i rispet-
tivi livelli di priorità.
Appendice B - Debugger di Visual Studio .NET. Descrive il debugger di Visual Studio .NET
che permette di localizzare e correggere gli errori logici dei programmi.
Appendice C - Caratteri ASCII. Contiene una tabella con i 128 simboli alfanumerici e i
corrispondenti numeri ASCII (American Standard Code for Information Interchange).
Appendice D - Caratteri speciali HTML/XHTML. Elenca i caratteri speciali HTML/XHTML
più utilizzati, chiamati riferimenti a entità di caratteri.
Appendice E - Colori HTML/XHTML. Una tabella elenca i nomi e i valori esadecimali dei
colori HTML/XHTML più utilizzati.

Esercizi di autovalutazione
1.1    Completate le seguenti frasi.
       a) I computer possono capire direttamente il loro linguaggio ____________, che è composto
           da una serie di 0 e 1.
       b) I computer elaborano i dati sotto il controllo di una serie di istruzioni che si chiamano
           ____________.
       c) SOAP è un acronimo di ____________.
       d) ____________ è una tecnologia derivata da SGML che è utilizzata per creare linguaggi di
           markup.
       e) I tre tipi di linguaggi descritti in questo capitolo sono i linguaggi macchina, ____________
           e ____________.
       f ) I programmi che traducono il codice scritto in un linguaggio ad alto livello si chiamano
           ____________.
       g) Visual Studio .NET è un ambiente di ____________ (IDE) dove i programmatori svilup-
           pano programmi Visual Basic .NET.
       h) C è noto come il linguaggio di sviluppo del sistema operativo ____________.
INTRODUZIONE AI COMPUTER, A INTERNET E A VISUAL BASIC .NET                                           21


        i) ____________ della Microsoft offre una vasta libreria di classi per i linguaggi .NET.
        j) Il Dipartimento della Difesa degli Stati Uniti (DoD) ha sviluppato il linguaggio Ada con
           una capacità chiamata ____________, che consente ai programmatori di specificare i compiti
           che possono essere svolti in parallelo.
        k) I servizi Web usano ____________ e ____________, rispettivamente, per contrassegnare
           e inviare le informazioni su Internet.
1.2     Determinate se le seguenti affermazioni sono vere o false. Se sono false, spiegate il perché.
        a) L’accesso universale ai dati è un altro aspetto essenziale di .NET.
        b) Gli standard del W3C si chiamano recommendation.
        c) Visual Basic .NET è un linguaggio orientato agli oggetti.
        d) CLR (Common Language Runtime) richiede che i programmatori si occupino della
            gestione della memoria.
        e) Visual Basic .NET è l’unico linguaggio disponibile per creare applicazioni .NET.
        f ) La programmazione procedurale rappresenta la realtà meglio della programmazione orien-
            tata agli oggetti.
        g) I computer possono capire direttamente i linguaggi ad alto livello.
        h) MSIL è il formato intermedio comune in cui sono compilati tutti i programmi .NET,
            indipendentemente dal loro linguaggio .NET di origine.
        i) .NET Framework è portabile per le piattaforme non Windows.
        j) I programmi compilati vengono eseguiti più velocemente dei corrispondenti programmi
            interpretati.
        k) Il termine throughput indica la quantità di lavoro che un computer può svolgere in un
            determinato periodo di tempo.

Risposte agli esercizi di autovalutazione
1.1    a) macchina. b) programmi. c) Simple Object Access Protocol. d) XML. e) linguaggi assembly,
linguaggi ad alto livello. f ) compilatori. g) sviluppo integrato (Integrated Development Environment
o IDE). h) UNIX. i) Framework Class Library (FCL). j) multitasking. k) XML, SOAP.
1.2     a) Vero. b) Vero. c) Vero. d) Falso. CLR gestisce la memoria. e) Falso. Visual Basic .NET è
uno dei tanti linguaggi .NET (come C# e Visual C++). f ) Falso. La programmazione orientata agli
oggetti è un modo più naturale di rappresentare la realtà rispetto alla programmazione procedurale.
g) Falso. I computer possono capire direttamente soltanto il loro linguaggio macchina. h) Vero. i) Vero.
j) Vero. k) Vero.

Esercizi
1.3     Classificate ciascuno dei seguenti elementi come hardware o software:
        a) CPU.
        b) Compilatore.
        c) Unità di input.
        d) Word processor.
        e) Programma Visual Basic .NET.
1.4     Qual è la differenza fra i termini HTML, XML e XHTML?
1.5    I programmi di traduzione, come gli assembler e i compilatori, convertono i programmi da un
linguaggio (detto linguaggio sorgente) in un altro linguaggio (detto linguaggio oggetto o target). Deter-
minate se le seguenti istruzioni sono vere o false.
       a) Un compilatore traduce un programma da un linguaggio ad alto livello a un linguaggio oggetto.
       b) Un assembler traduce un programma da un linguaggio sorgente a un linguaggio macchina.
22                                                                                  CAPITOLO 1


       c) Un compilatore converte un programma da un linguaggio sorgente a un linguaggio oggetto.
       d) I linguaggi ad alto livello, di solito, sono dipendenti dalla macchina.
       e) Un programma in linguaggio macchina deve essere tradotto prima di essere eseguito in un
           computer.
       f ) Il compilatore di Visual Basic .NET traduce un linguaggio ad alto livello in SMIL.
1.6    Quali sono i requisiti fondamentali di un linguaggio .NET? Che cosa occorre per eseguire un
programma .NET in un nuovo tipo di computer (macchina)?
1.7    Qual è il significato dei seguenti acronimi?
       a) W3C.
       b) XML.
       c) SOAP.
       d) TCP/IP.
       e) OOP   .
       f ) CLR.
       g) CLS.
       h) FCL.
       i) MSIL.
1.8    Quali sono i vantaggi principali di .NET Framework e CLR? Quali sono gli svantaggi?