8° incontro - Linguaggi programmazione - Criteri di

Transcript

8° incontro - Linguaggi programmazione - Criteri di
Ciao, ragazzi! Vi vedo particolarmente contenti. Evidentemente sentite già
il profumo delle vacanze pasquali.
A proposito, vi dico sin da ora che,
naturalmente, non ci incontreremo sabato 11 aprile, che sarà il sabato santo.
Noi, intanto, ci avviciniamo a grandi passi ad argomenti sempre più direttamente
riguardanti il nostro fine, imparare a creare del software ; ad apprendere, con
la dovuta umiltà, l' abc della sublime arte dei nostri Progettisti.
Oggi iniziamo a parlare dei linguaggi di programmazione. Abbiamo visto
che, essendo i linguaggi-macchina per noi troppo difficili, abbiamo inventato i
Sistemi operativi, di cui ci serviamo come interpreti per dare alla macchina gli
ordini più semplici e ricorrenti. Se, però, vogliamo dare ordini più complessi
e più particolari, come, ad esempio, scegliere dal menù di un ristorante oppure
disegnare qualcosa, il Sistema operativo non basta più e, allora, abbiamo
inventato i linguaggi di programmazione, una sorta di interpreti più bravi e
istruiti, che conoscano un po' i nostri problemi e parlino una lingua più simile
alla nostra.
Allora, facendo il caso del Visual Basic, cosa succede? Noi
raccontiamo al Visual Basic (ovviamente, nella sua lingua) tutto ciò che
vogliamo;
il Visual Basic, da perfetto maggiordomo, impartisce i dovuti
ordini al Sistema operativo, che, a sua volta, dettaglia gli ordini a quel grande
stupidone di hardware, che, bovinamente (chiedo scusa al bue, che è molto più
intelligente di lui), finalmente esegue.
Ebbene, a questo punto, ho l'onore di presentarvi il più grande linguaggio
di programmazione mai esistito, vecchio amico di Vanni, il FORTRAN .
2
No, la Microsoft non ha ideato il FORTRAN, come vedremo, ma ha
solamente scritto un suo compilatore per il proprio ambiente.
Ma mi accorgo di essermi fatto trascinare dal mio grande amore per questo
linguaggio.
Occorre dire che il FORTRAN appartiene alla classe dei linguaggi
avanzati, ossia più lontani dai linguaggi-macchina e più vicini ai nostri
linguaggi parlati, mentre esistono linguaggi molto meno avanzati, nati ancor
prima, gli Assembler, che oggi sono usati solamente da pochi esperti.
Essi
sono ancora oggi utilizzati per automatizzare funzioni molto particolari e per
realizzare Interpreti o Compilatori di nuovi linguaggi di programmazione
avanzati
(in uno dei prossimi incontri vi parlerò delle caratteristiche degli
Interpreti e dei Compilatori).
Il FORTRAN (il nome deriva da FORmula TRANslation) è ideato, nel
1954, da un gruppo di lavoro guidato da John Backus. Pensato per elaboratori
IBM, è un linguaggio compilato rivolto a problemi matematici e ingegneristici.
A partire dal 1990 il nome in tutte maiuscole è stato sostituito da quello attuale,
con la sola iniziale maiuscola, Fortran.
È utile che vi spieghi come mai Vanni ha adottato il Fortran come suo
linguaggio e come mai, molto a malincuore, lo ha dovuto poi abbandonare. Il
grande pregio del Fortran è la sua grandissima semplicità nelle operazioni che si
svolgono in Memoria Centrale (MC, il cervello della macchina). Dovete sapere
che l'intelligenza al tuo software la dai proprio quando lavori in MC e, nei casi di
problemi molto complessi, che ti fanno scoppiare il cervello, l'uso d'un
linguaggio semplice, che non ti carichi di altre difficoltà è veramente decisivo.
In questo il Fortran è insuperabile e tu lo apprezzi molto, se sei portato a fornire
tanta intelligenza ai tuoi software. A questo va aggiunto che, nel corso degli
anni, grazie alla sua grande diffusione, sono state create sterminate librerie di
funzioni, richiamabili automaticamente.
Il risultato è che il Fortran è tuttora vivo e vegeto.
Perché Vanni ha abbandonato il Fortran? È stato nei primi anni Novanta,
quando è stato introdotto il software object oriented, con il Sistema Operativo
Windows.
Il Fortran, data la sua diffusione, fu reso subito compatibile con l'ambiente
emergente Windows e fu rilasciato un compilatore Microsoft Fortran, ma fu
fatto per motivi di portabilità, fu un matrimonio di pura convenienza. Il Fortran
non ha accresciuto la sua importanza e il suo ingresso nel mondo dei software
object oriented trova solamente giustificazioni di mercato ; anzi, direi che per
esso le potenzialità offerte dal nuovo ambiente sono solamente zavorra.
D'altra parte, Vanni non poteva sacrificare la portabilità del suo software e
quindi doveva seguire le novità dell' object oriented.
3
Hai ragione.
Oltre ad aver scritto tanti software riguardanti il settore
scientifico, mi è toccato automatizzare diversi ambienti di natura gestionale,
per i quali un linguaggio scientifico come il Fortran non era certamente adatto.
Ma vedete, il forte desiderio di conservare l' enorme vantaggio della semplicità in
MC di cui ho detto, mi ha subito convinto a costruirmi, una volta per tutte, una
mia piccola libreria di moduli che risolvessero tutti i problemi gestionali che via
via incontravo, con il risultato di avere un linguaggio con tutti i pregi e nessun
difetto. Avevo a disposizione un software (il Fortran ritoccato), che una
persona bene educata definirebbe general purpose. Questo è il vantaggio di
essere un professionista del software. Ecco perché spero che molti di voi lo
diventino.
Dovendo, con la morte nel cuore, lasciare il suo Fortran, Vanni ha riflettuto
a lungo prima di scegliere il nuovo linguaggio. Alla fine ha scelto il Visual
Basic, che all' inizio era stato chiamato REAL-basic,
e vi dico in poche
parole con quale criterio è stata fatta tale scelta.
Oltre alla semplicità d'uso in MC, di cui vi ho detto, occorre pensare alla
portabilità del software che produrrete, vale a dire la probabilità che esso sia
compatibile con il maggior numero possibile di ambienti e, da questo punto di
vista, la Microsoft, piaccia o non piaccia, offre le migliori garanzie, quindi il
Microsoft Visual Basic, che, oltre tutto, prevede sia un Interprete (molto utile
nella fase di sviluppo) sia un Compilatore, che garantisce eseguibili (.exe)
molto veloci.
Sempre allo scopo di ottimizzare la portabilità del vostro software, va tenuto
presente un altro aspetto di cui pochi parlano.
Quando nasce un nuovo linguaggio, i suoi Compilatori e/o Interpreti,
ovviamente, non nascono perfetti e, allora, si susseguono nel tempo successive
loro versioni.
Per tale motivo, conviene attendere una versione abbastanza
affidabile; una volta fatta questa scelta (Vanni ha scelto la 6.0), non bisogna
cadere nella tentazione di adottare le versioni successive, magari più potenti, in
quanto questo limiterebbe la portabilità del vostro software; potrebbe infatti
accadere che esso non risulti compatibile con ambienti non opportunamente
aggiornati. Conviene rinunciare a qualche vantaggio in favore della portabilità.
La versione 7.0 del Visual Basic, a lungo preannunciata, non è stata più
rilasciata.
4
Sì, questa è la scelta giusta anche per voi,
ma questo non è molto
importante. Per voi l'importante è cogliere l'occasione, imparando il primo
linguaggio di programmazione, di avere la giusta impostazione. Avuta questa,
già il secondo linguaggio potrete impararlo anche da soli ; si tratterà, magari, di
dare diversi nomi agli stessi concetti, già da voi bene acquisiti. Vanni, nella sua
carriera, di linguaggi ne ha usati almeno una dozzina e vi assicuro che, quando
ne conosci già altri, puoi imparare un nuovo linguaggio in una decina di giorni.
Per completezza, dal punto di vista storico, occorre fare un cenno a due
linguaggi di programmazione che hanno segnato lo sviluppo dell' EAD
(Elaborazione Automatica Dati).
Il COBOL (COmmon Business-Oriented Language), che, come dice il
suo nome, è un linguaggio compilato orientato alle applicazioni commerciali
comuni. Nacque nel 1961 e ancora oggi ha una larga diffusione, grazie
anche al fatto che, essendo molto vicino alla lingua inglese, fu riconosciuto
come linguaggio ufficiale dal Dipartimento della Difesa USA. Ad esempio,
sono stati scritti in COBOL i software che controllano il funzionamento dei
Bancomat e l'operatività di molte banche e assicurazioni.
Occorre dire, però, che per essenzialità e semplicità il COBOL non è, neanche
lontanamente, paragonabile al Fortran.
Avevamo, quindi, due signori linguaggi;
uno orientato a problemi
matematici e ingegneristici
ed uno rivolto alle applicazioni commerciali.
Mancavano linguaggi con caratteristiche intermedie, che potessero adattarsi un
5
po' a tutti i problemi, definibili, secondo una terminologia che si affermerà,
linguaggi general purpose.
Sì, ma lo usavo solamente io, quindi .....
Invece, nel 1964 ci pensò la Microsoft, creando il primo linguaggio general
purpose, il BASIC (acronimo da Beginner's All-purpose Symbolic Instruction
Code), un linguaggio avanzato semplice, per principianti, dotato di un
Interprete, che ebbe subito larga diffusione.
Si trattò di un evento storico dell' Elaborazione elettronica, tanto che si ricorda:
il primo programma in BASIC "girò" il primo maggio 1964, alle ore 4:00.
Nato con un Compilatore, questo da subito non fu più usato, lasciando il posto a
diverse versioni di Interpreti.
Il BASIC fu subito adottato dalla stragrande maggioranza di studenti
universitari di ogni facoltà ;
costituito da un insieme limitato di istruzioni a
bassa complessità, consentiva la creazione di programmi chiari e comprensibili.
Inoltre, sin dall'inizio, il BASIC fu progettato curandone la portabilità
potenziale, ossia la facilità di renderlo compatibile con le nuove macchine, via
via disponibili sul mercato.
6
Nel 1981, in coincidenza con il rilascio del Sistema operativo MS DOS, fu
scritto il Microsoft BASIC. Negli anni dei primi microcomputer, fra cui il
mitico Commodore 64, un Interprete del BASIC era offerto con la macchina.
Il BASIC con gli anni subisce una naturale evoluzione sia in termini di
complesso di istruzioni che in termini di possibilità di gestione delle periferiche.
Vanni era tranquillamente indifferente di fronte a questo successo. Il suo
Fortran "rinforzato", come ha detto simpaticamente il nostro Sottosegretario agli
Esteri, in MC continuava ad essere il migliore e poteva affrontare qualunque
tipo di problema. Tutto questo sino al momento fatidico.
Praticamente sì, anche se la successiva scelta del Visual Basic non è stata
immediata ; era necessario aspettare versioni affidabili dei nuovi linguaggi
object oriented e valutare con molta attenzione i loro vantaggi e i loro limiti,
visto che la scelta del linguaggio con il quale produrre il proprio software non è
da prendere alla leggera.
Al nostro prossimo incontro del 4 aprile prenderemo atto della scelta fatta, che
resta ancora valida, faremo nostro il Visual Basic 6.0 e inizieremo il nostro
"corso di programmazione", anche se io ritengo che sarebbe più esatto chiamarlo
“Introduzione alla progettazione del software”, che è qualcosa di più ; non a
caso, prima di iniziare, abbiamo dedicato ben otto nostri incontri a darvi le basi
per divenire, non dei semplici manovali dell' informazione, ma architetti del
software: solamente un primo passo, ma necessario.
Prima di chiudere, vorrei darvi un paio di concetti base del software che
andrete a realizzare.
Vi piace l'immagine che ho preparato per voi sullo
schermo? Non è carina? Come vedete, si tratta di una pizza preparata a mo' di
orologio ;
le ore sono rappresentate mediante appetitose fette di salame.
Vedrete cosa ha a che fare la pizza con il nostro discorso.
7
Nel realizzare un software tramite un linguaggio di programmazione avanzato,
noi, essenzialmente, miriamo a due obiettivi:
a. lo sfruttamento adeguato della grande potenza dell' hardware ;
b. il trasferimento di intelligenza, di cui l' hardware è assolutamente sprovvisto.
Ebbene, ognuno di questi principali obiettivi sono conseguiti da altrettanti tipi
di istruzione, che, magari, nei diversi linguaggi assumono nomi diversi, ma
raggiungono gli stessi scopi.
Usando, ad esempio, i nomi scelti dal Visual
Basic, l'obiettivo a. è conseguito soprattutto con l’istruzione "For" (in Fortran
"Do"); l'obiettivo b. è conseguito mediante l'istruzione "If" (il nome coincide
nei due linguaggi).
La pizza-orologio richiama il concetto di ciclo, che caratterizza l'istruzione "For".
Portiamo un esempio di applicazione dell' istruzione "For". Volendo valutare
il tempo che questo mio portatile impiega a leggere l' intera Divina Commedia,
che è registrata su disco e conta 4811 terzine, e a portarla in Memoria Centrale
(in un'area chiamata Commedia), scrivo le seguenti istruzioni:
Commedia = ""
For Contatore1 = 1 To 100
For Contatore2 = 1 To 4811
Get #6, Contatore2, Terzina
Commedia = Commedia + VbCrLf + Terzina
Next Contatore2
Next Contatore1
In pratica, sottopongo l'elaboratore a un lavoro massacrante: gli faccio compiere
100 volte l'operazione sull' intero Poema, questo per rilevare meglio il tempo
impiegato per la singola operazione, sapendo che esso sarà molto basso. Per
ottenere lo scopo, ordino due cicli "For", uno annidato nell'altro. Rimandando
ai prossimi incontri la spiegazione completa di queste istruzioni, vi posso dire
che, rilevando dall'orologio del Sistema il tempo prima e dopo i due cicli "For"
e facendo i dovuti conti,
il risultato è che questo mio portatile, di media
potenza, riesce a leggere l'intera Divina Commedia in circa due centesimi di
secondo.
Sì, me lo ricordo e rammento anche che vi feci notare che questa potenza,
che sembra eccezionale, in effetti è ben poca cosa, se paragonata alla potenza del
cervello umano. Noi non riusciremo mai a leggere la Commedia in una frazione
di secondo, proprio in quanto siamo immensamente più intelligenti del mio
8
portatile ; mentre il poverino fa, praticamente, un solo lavoro, legge la
Commedia, senza capirci assolutamente nulla, il nostro cervello, durante quella
lettura, svolge contemporaneamente innumerevoli lavori molto più complessi.
Per concludere, passiamo ora all'obiettivo b. del software, quello fornire
intelligenza all' hardware,
obiettivo conseguito principalmente mediante
istruzioni "If", che, funzionalmente, si possono pensare equivalenti a: "Se
accade tale evento, comportati in questo modo".
In altri termini, si insegna
alla macchina a sapersi muovere nel proprio ambiente.
L'immagine sullo schermo suggerisce questo esempio: a una persona
(l'hardware) che si trova ad un incrocio stradale offro diverse indicazioni, che
influenzeranno il suo comportamento. Se prenderai via Cesare Battisti, allora
troverai la Farmacia e quindi compra il digestivo X, etc., etc....
In Visual
Basic si dirà:
If . . . . . . then . . . . .
Dopo avervi fatto sentire il profumo del vostro futuro linguaggio di
programmazione, vi saluto e arrivederci al prossimo incontro.