- presentazione del sito
- Registrazione
- Eventi, mostre, convegni ed iniziative segnalate dalle aziende
- Recensioni ed articoli
- Le Mailing Lists
- La rivista Pc Ciechi
- Wiki
- Chi siamo
- Donazioni
- Un progetto degno di nota: Wintalbra
- Come navigare in questo sito
- rss
- Bancomat Accessibili sul territorio nazionale
- Contattaci
- I sostenitori di SpazioAusili
Corso visual basic script\Due preamboli prima del corso
Guido Ruggeri su winguidotecnica,dal 16\12\2009, h. 17.15.
a)Primo Preambolo: processori e linguaggi.
Ed ora, un po' di pubblicità
:Come dicevo, entreremo nel vivo tra un paio di giorni, per
dare tempo a chi ancora volesse iscriversi di farlo.
Nel frattempo, cominciamo con qualche preambolo
introduttivo, anche per riepilogare quanto è già stato
detto su MondoWinGuido.
Innanzitutto, il cuore del computer è il processore.
Senza quello, non c'è il computer, Tutto il resto, sono
unità periferiche ed accessori.
E' come il motore per una automobile. E' vero che oltre al
motore ci sono varie altre cose: i freni, lo sterzo, il
volante, i pneumatici, le sospensioni, il cambio, il
tergicristalli, l'alzavetri, l'aria condizionata,
l'autoradio, insomma tutto quell'insieme di oggetti che
concorre a far sì che una automobile sia una automobile.
Ma se non ci fosse il motore, di automobile non si
parlerebbe nemmeno.
Come è anche vero il contrario, cioè che il motore da
solo non farebbe mai una automobile, se non ci fossero anche
tutte le altre cose.
Allora, per il computer l'equivalente del motore è il
processore.
Cosa fa il processore? Ha la logica di calcolo e di
confronto.
Dati due numeri, può farne la somma, o la sottrazione, o
la moltiplicazione, o la divisione. Questa è la logica di
calcolo.
Inoltre, dati due numeri, il processore può dire se sono
uguali, oppure quale dei due è maggiore dell'altro: questa
è la logica di confronto.
Tu dirai: tutto qui, quello che fa il processore?
E io ti rispondo: si, tutto qui. Beh, magari non è proprio
vero, i processori di oggi integrano anche dei coprocessori
che gli consentono di svolgere operazioni anche più
complesse, ma questo è un altro discorso e lasciamolo
stare.
Atteniamoci dunque all'idea che quello che fa il processore
è tutto qui.
Allora tu dirai: ma come, tutto quello che faccio col
computer, ci scrivo testi, ci navigo in Internet, ci ascolto
musica, ci gioco, ci parlo, ci mando la posta, insomma
possibile che tutto dipenda da un processore che sa solo
fare quattro operazioni?
E io ti rispondo: certo. D'altronde, cosa fa il motore di
una automobile? gira, no? sa forse fare altro? non mi pare.
Il motore gira, e non sa nulla di strade, di incroci, di
pavimentazioni, di regolamenti, di vigili urbani e polizia
stradale.
Eppure, su quel motore che sa soltanto girare, ci si basa
tutto il funzionamento dell'automobile, e quindi l'uso che
ne facciamo, i viaggi, il traffico, gli autobus, i taxi,
eccetera.
Torniamo a noi. Il processore dunque sa soltanto di numeri,
calcoli e confronti. Non sa nulla di file, di cartelle, di
programmi, di Internet e di tutte le altre cose che noi
invece ci siamo abituati a maneggiare.
Queste cose esistono perché il processore è inserito in
un computer che ha anche una memoria, ha delle unità
periferiche, e, cosa importante, ha un sistema operativo.
Il sistema operativo, nel nostro caso, si chiama Microsoft
Windows, ed è l'erede di un precedente sistema che si
chiamava MS-DOS.
E' lui, il sistema operativo, che organizza il complesso di
cartelle, file e programmi, con cui ci siamo abituati a
lavorare.
Allora programmare cosa significa? Significa dare delle
istruzioni al processore.
Processore, sei sveglio? Processore, mi senti? bene.
Allora, processore, adesso io ti indico una posizione nella
memoria del computer. Bene, lì c'è un numero. Copiatelo
dentro di te. Hai fatto?
Bene. Adesso ti indico un'altra posizione nella memoria.
Lì c' è un altro numero.
Copiati anche quello.
Fatto? Bene, adesso hai due numeri. Voglio moltiplicare il
primo per il secondo.
Hai fatto?
Bene. Adesso, il risultato che hai ottenuto me lo metti in
una posizione della memoria del computer, che io ti indico.
E bravo processore.
E' questo il modo con cui dobbiamo dialogare con il
processore e dargli ordini.
Ma noi non faremo questo.
Eh già, perché se lo facessimo ci metteremmo una vita
per dare al processore tutte le istruzioni necessarie
perché quello arrivi a fare ciò che ci serve.
Figuriamoci, se solo per fargli fare una moltiplicazione mi
devo mettere a dirgli tutta quella roba lì, allora se
dovessi scrivere un intero testo, salvarlo su disco e poi
inviarlo per posta elettronica, quanta roba dovrei dirgli?
non finirei mai.
Ecco perché ci vuole un linguaggio di programmazione.
Il linguaggio serve a me per scrivere le mie istruzioni in
una forma semplificata. Ad esempio: ho due numeri, ne voglio
il prodotto.
Molto più immediato e chiaro di tutto quel papocchio che
ho scritto prima, no?
Però, attenzione, sarà chiaro per me, ma per il
processore questo non significa niente.
Il processore vuole sapere quello che ho scritto prima: in
quali posizioni di memoria si trovano i due numeri, che
operazione deve farci, in quale posizione di memoria deve
mettere il risultato.
Allora ci deve essere qualcosa in mezzo che si frappone tra
me che programmo e il processore.
Qualcosa che sappia tradurre le istruzioni che io scrivo in
istruzioni che il processore possa eseguire.
E questo è l'interprete del linguaggio di programmazione.
Non male come preambolo, no?
Mi fermerei qui in attesa di andare avanti. Fatemi sapere se
fin qui il discorso è chiaro.
***
b)Secondo preambolo: Programmi interpretati e compilati.
Andiamo avanti con il nostro riepilogo introduttivo.
Con una precisazione: alcuni dei concetti di cui stiamo
parlando sono parzialmente superati dalle attuali tecniche
di programmazione.
Ad esempio, quando si programma nell'ambiente di NET
Framework, la distinzione tra programma interpretato e
programma compilato non è più così netta: i programmi,
praticamente, sono tutti interpretati, anche quando sono
compilati. Infatti, se non c'è NET Framework che fa da
interprete, non possono funzionare, nemmeno se sono
compilati.
Comunque, noi ci atteniamo a concetti che risalgono a prima
di queste innovazioni, cercando di esemplificarli al
massimo.
Allora, avevamo detto: un programma, che sia interpretato o
compilato, nasce sempre da un codice sorgente, così come
un brano musicale nasce sempre da uno spartito.
Il programmatore scrive il codice sorgente, così come il
compositore scrive lo spartito.
Lo spartito esprime l'idea della musica, che però ancora
non esiste. Fai vedere lo spartito a qualcuno che non sa
leggerlo, e chiedigli: ti piace questa musica? Quello
risponderà: e che ne so? io non sento niente!
Allo stesso modo, il codice sorgente esprime l'idea di come
funzionerà il programma, ma il programma ancora non c'è.
Per ottenere la musica, oltre allo spartito ci vogliono dei
suonatori con gli strumenti: loro leggeranno lo spartito, e
lo tradurranno in musica. In che modo? mediante movimenti
che imporranno ai loro strumenti.
Lo spartito non gli dice quali movimenti fare.
Ad esempio, in uno spartito per pianoforte, mica c'è
scritto: adesso metti il dito indice della mano sinistra nel
tale tasto, il medio in quest'altro, l'anulare in
quest'altro ancora, e premi con la mano.
C'è semplicemente un simbolo che dice al pianista che deve
suonare un certo accordo. Poi è lui che deve sapere come
tradurre quel simbolo in movimenti che per il piano abbiano
un significato.
Nel nostro caso, ci deve essere un programma che faccia da
interprete.
Il programma interprete legge il codice sorgente, e lo
traduce in istruzioni che abbiano un senso per il processore
e gli altri componenti del computer. Istruzioni come quelle
di cui parlavamo ieri, ricordate? Processore, ti indico una
posizione nella memoria. Prendi il numero che c'è e
copialo dentro di te. eccetera.
Lo spartito è il codice sorgente. Il suonatore è
l'interprete. Lo strumento musicale è il processore.
E se i suonatori sono in una sala di registrazione? Vuol
dire che il risultato della loro esecuzione sarà qualcosa
che rimarrà permanentemente registrato, su un disco, su un
nastro, su un supporto informatico, insomma su qualcosa che
renderà possibile, da quel momento in poi, ascoltare quel
brano musicale senza più bisogno né dello spartito, né
dei suonatori.
Infatti quando tu ascolti della musica registrata, ti basta
la registrazione. Lo spartito non ti serve, a meno che tu
non sia un intenditore che vuole approfondire la conoscenza
di quel brano. E non ti servono i suonatori.
Nel nostro caso, dal codice sorgente abbiamo la
possibilità di generare un programma compilato, cioè
sotto forma di file eseguibile.
Il file eseguibile contiene istruzioni già tradotte in una
forma che può essere eseguita dal processore o da altri
componenti del computer.
Questa forma prende il nome di: linguaggio macchina, ed è
fatta di istruzioni simili a quelle di cui parlavamo ieri:
processore, adesso ti indico una posizione in memoria, tu
prendi il numero che c'è e lo copi dentro di te, eccetera.
Istruzioni che, se le dovessimo scrivere direttamente noi,
presto usciremmo fuori di testa. Così come farebbe il
povero compositore se dovesse mettersi a scrivere, uno per
uno, tutti i movimenti che i suonatori debbono fare.
Tradizionalmente, un programma si fa funzionare in
modalità interpretata finché è in corso di sviluppo.
In questo modo il programmatore ha la possibilità di fare
le sue prove, correggere il codice sorgente, e poi riprovare
ancora.
Solo quando si arriva ad una versione definitiva, pronta per
essere consegnata, il programmatore compila il suo
programma, generando dei file eseguibili. E sono quelli che
consegnerà agli utenti del programma.
Gli utenti, quindi, non hanno bisogno dell'interprete.
Quello serve al programmatore.
Come presto vedremo, però, molte cose sono cambiate da
quando si lavora in Internet: lì, molti programmi
rimangono sotto forma di codice sorgente che deve essere
interpretato.
E l'interprete è inglobato nello stesso navigatore
Internet. In qualcosa, cioè, che è presente in tutti i
computer, perché fornita dallo stesso sistema operativo.
Tra poco, cominceremo a scrivere la nostra prima riga di
codice sorgente, e a farla interpretare.
Che dite, cominciamo oggi pomeriggio o aspettiamo domani?