Informatica, mezzi e sistemi d`informazione digitali

Transcript

Informatica, mezzi e sistemi d`informazione digitali
Informatica, mezzi e sistemi d’informazione digitali
(di T. Cariati, appunti per la riunione di SOS scuola del 25 gennaio 2013, giorno della conversione di san Paolo)
Avviso innanzitutto che la materia è ampia e complessa e sarò costretto a essere sintetico, per
esempio le sigle non sempre saranno sciolte e qualche volta i concetti saranno appena accennati. Il
lettore interessato utilizzando parole chiave e sigle potrà approfondire tramite il web le questioni
trattate.
1. Premessa
Paul Valéry, un intellettuale francese con radici italiane, molto stimato come studioso e poeta,
in uno studio del 1928, La conquista dell’ubiquità, scriveva: «Il sorprendente sviluppo dei nostri
mezzi, la duttilità e la precisione che hanno raggiunto, le idee e le abitudini che hanno introdotto ci
garantiscono cambiamenti imminenti e assai profondi nell’antica industria del bello. … Le opere
acquisteranno una sorta di ubiquità».
Ancora Valéry, in un altro passo posteriore, forse del ’34, profeticamente scrive: «Come
l’acqua, il gas o la corrente elettrica, entrano grazie a uno sforzo quasi nullo, provenendo da
lontano, nelle nostre abitazioni per rispondere ai nostri bisogni, così saremo approvvigionati di
immagini e di sequenze di suoni, che si manifestano a un piccolo gesto, quasi un segno, e poi subito
ci lasciano».
Se pensiamo alla televisione, alla tv via cavo, al digitale terrestre, alla televisione satellitare,
ai canali tematici; se pensiamo a Skype, a Facebook, a Youtube dobbiamo ammettere che Valéry è
stato un grande visionario: ha immaginato e forse previsto il flusso continuo di informazioni che
oggi ci bombarda perfino durante il sonno.
Walter Benjamin nel 1936 ha pubblicato un piccolo saggio destinato a divenire famoso
nell’ambito della critica della modernità, L’opera d’arte nel tempo della sua riproducibilità tecnica,
nel quale riprende le idee di Paul Valéry. Successivamente nel solco degli studi sui mezzi
d’informazione o di comunicazione sociale abbiamo avuto Mc Luhan, inventore della famosa
metafora del “villaggio globale”.
In Italia nello stesso ambito di ricerca abbiamo avuto Homo videns di Sartori e La terza fase
di Raffaele Simone, ma soprattutto gli studi di Umberto Eco sui mass media. Recentemente uno
studioso molto ascoltato a livello internazionale è Derrick De Kerckhove, allievo di Mc Luhan, del
quale si può leggere, per esempio, Dall’alfabeto a Internet.
Noi, già l’anno scorso, avevamo avvertito l’esigenza di orientare la nostra ricerca sui temi
delle applicazioni dell’informatica, della democrazia, e della produzione, diffusione e fruizione
della cultura, intesa nel senso più alto e lato. Finalmente oggi ci caliamo nelle viscere della scienza
che in poco più di mezzo secolo ha prodotto la più grande rivoluzione sociale che l’umanità abbia
conosciuto, e forse non siamo che ai primordi.
Nella relazione di avvio dei lavori di Sos Scuola l’anno scorso citavamo alcuni sistemi,
prodotti e mezzi, o possibilità e servizi disponibili sul mercato che sembra utile tenere d’occhio.
Partiamo da lì: riprendiamo ed arricchiamo quell’elenco. Oggi si parla di:
1.
posta elettronica, chat e messaggerie varie, Facebook;
2.
Twitter, Wikipedia, Treccani online, vocabolari online, quotidiani online, tv e radio
online, Youtube, Ansa.it, la Crusca online, Dop on line; TED, Livestation, Blackberry, Servizio
pubblico via Internet, Ipod, Ipad, Iphone, wordreference;
3.
musica in podcasting, juke box online, e-book, spazi liberi per e-book online (in uno
di questi abbiamo pubblicato i bollettini del nostro gruppo e sono accessibile dal sito di SOS Scuola
proprio come e-book);
4.
web o Internet 3.0, Augmented reality, Virtual reality, Quick read;
1
5.
web marketing, e-commerce, e-government, business intelligence, GPS, work flow
management, office automation, DSS, business process reengineering, smart city, democrazia
digitale, robotica, domotica;
6.
elaborazione parallela, multitasking, multiprogrammazione, basi di dati e di
conoscenza distribuite, cloud computing (Aruba, Dropbox, Googledrive), Wi max;
7.
Papertab, qbit, computer al grafene, esoscheletri.
Come si vede, ce n’è per tutti i gusti.
Derrick De Kerckhove però in un’intervista ha detto: «Uso l’iPhone, Facebook; e il mio
bigliettino da visita contiene il codice QR (Quick read) per la realtà aumentata. Ma la sera
preferisco avere in mano un libro anziché un e-book».
In Treccani on line, alla voce “calcolatore”, leggiamo tra l’altro: «Si parla spesso di quinta
generazione di c. perché la miniaturizzazione dei componenti ha aperto nuovi orizzonti e reso
possibili nuove applicazioni dei c., ormai integrati in una miriade di dispositivi e utilizzati per le
funzioni più disparate: si parla di ubiquitous computing o pervasive computing (“elaborazione molto
diffusa” ed “elaborazione dilagante”)».
Notate: si parla di “ubiquità”, proprio come ne parlava Paul Valéry negli anni Trenta del
Novecento, nel suo studio La conquista dell’ubiquità. Questo è uno dei fenomeni prodotti dai mezzi
digitali: l’annullamento dei concetti di spazio e di tempo; un altro fenomeno è la progressiva perdita
di consistenza fisica che i prodotti e i servizi offerti e venduti presentano nella “information
society” o nella società della conoscenza o nell’“era digitale” (o nell’era post-umana, secondo i
gusti e la visione dell’uomo e del mondo dei futurologi di turno).
Per cominciare la nostra ricerca, poniamoci alcune domande fondamentali: qual è l’“essenza”
del computer? Perché il calcolatore ha prodotto in breve tempo le più grandi innovazioni sociali che
l’uomo abbia conosciuto? Qual è l’“essenza” di ciò che qualifichiamo come “digitale”, come il
computer e la tv digitale?
Queste domande e le relative risposte dovrebbero aiutarci a comprendere qualcosa circa
questioni molto semplici ma importanti, per esempio, per la nostra scuola e per la nostra vita
quotidiana: 1. che cosa vuol dire “seguire un corso di informatica”, “essere esperti di informatica”?
2. che cosa vuol dire organizzare l’offerta formativa, come la nostra scuola deve fare, attuando la
riforma Gelmini, per formare tecnici economici con profilo d’esperti di Sistemi informativi
aziendali? 3. che cosa sta accadendo ai concetti di libertà, democrazia, cittadinanza in un mondo
alluvionato continuamente da innovazioni che oggi rendono obsoleto ciò che appena ieri era valido,
utile, d’avanguardia?
2. Il calcolatore, scatola magica o macchina particolarmente versatile
Il calcolatore è una macchina di concezione rivoluzionaria, si basa su un alfabeto povero: “0”
e “1”. La scrittura alfabetica ha una flessibilità superiore alla scrittura ideografica, perché
combinando un numero limitato di segni possiamo costruire un’infinità di parole. Il calcolatore non
si basa su ventuno segni diversi come la lingua italiana, né su dieci come i numeri arabi, ma sui due
del sistema binario: “0” e “1”. Questi due segni sono i valori dell’unità elementare di informazione,
il bit (da binary digit, cioè cifra binaria, da cui l’aggettivo “digitale”). Una combinazione di otto bit,
nel codice Ascii esteso, forma un byte, cioè un carattere dell’alfabeto o un segno di punteggiatura.
Per esempio, “a” ha codice binario “01100001”, “A” ha codice “01000001”, “1” ha codice Ascii
“00110001”. Il byte, una sequenza di otto bit, è l’unità di misura della memoria. Il colore, per
esempio, invece, nel sistema RGB (red, green, blue) viene rappresentato mediante tre byte, uno per
il red, uno per il green e uno per il blue, perciò ogni pixel, cioè ogni punto di immagine richiede
ventiquattro bit.
Il secondo elemento di versatilità del computer è la scomposizione della macchina in una
parte hardware, per così dire, estremamente semplice, e una parte software strutturata in diversi
strati, come una cipolla, in cui ogni livello di macchina virtuale offre servizi al livello più esterno. Il
2
software è la parte immateriale, logica, astratta, priva di consistenza fisica della macchina, di gran
lunga più importante della parte materiale.
Che il calcolatore sia una macchina che non assomiglia a nessuna di quelle costruite
precedentemente si intuisce dall’assenza di una forma obbligata, come l’auto, come un altoforno,
come un aereo. Il computer si incorpora in ogni “aggeggio”, dal forno a microonde, al telefonino,
all’automobile, ai missili perché esso non ha forma obbligata. Infatti, mentre le macchine precedenti
erano specializzate per svolgere una particolare funzione, il computer è una macchina general
purpose, adattabile a qualsiasi scopo, che all’occorrenza può essere forzata a svolgere un compito
particolare, come nel caso di computer di bordo o per il controllo di centrali nucleari o per il
controllo della traiettoria dei missili o per il funzionamento dei droni.
La potenza rivoluzionaria del computer è paragonabile solo alla potenza che si sprigiona dalla
fissione atomica, per nulla paragonabile a quella del carbone in una macchina a vapore, o a quella
del petrolio. Questa potenza è ancora largamente inesplorata, visto che l’informatica è una scienza
giovanissima, ma nell’ultimo quarto di secolo ne abbiamo cominciato ad intuire la portata.
Bisogna riconoscere, col senno di poi, che i francesi sono stati più lungimiranti degli
anglosassoni, perché “computer” significa “macchina per calcolare”, e “computer science” è la
“scienza della macchina per calcolare”; mentre “hardware” e “software” non significano
praticamente niente. I francesi hanno inventato “logiciel” per “software”, “matériel” per
“hardware”, “ordinateur” per “computer” e “informatique” per “scienza dei calcolatori”. Insomma, i
francesi hanno colto subito alcuni aspetti dei computer che si stanno svelando soltanto in questi
ultimi anni: la loro versatilità come mezzi per l’elaborazione dell’informazione di qualsiasi natura
(testi, immagini, suoni), oltre che come mezzo di calcolo.
(L’approccio linguistico dei francesi al calcolatore è stato davvero interessante. Vale la pena
darvi uno sguardo, anche perché gli italiani avevano fatto qualcosa di simile a cavallo tra la fine
dell’800 e i primi anni del ’900 a proposito dell’automobile. Riportiamo, senza traduzione, un testo
che abbiamo trovato nella rete in ambito francese. Si tratta della storia della parola “ordinateur”
scritta all’IBM ma anche alla Sorbona da un filologo come Perret, ispirandosi al pensiero di un
linguista insigne come il Littré.
«En 1954, la société IBM France voulait trouver un nom français pour sa nouvelle machine
électronique destinées au traitement de l'information (IBM 650), en évitant d’utiliser la traduction
littérale du mot anglais “computer” (“calculateur” ou “calcolatrice”), qui était à cette époque plutôt
réservé aux machines scientifiques. Aux États-Unis, les nouvelles machines de traitement
automatique de l’information (capables de faire aussi du traitement de texte, du dessin, etc.) étaient
appelées “electronic data processing systems” (EDPS) ou “data processing machines”.
Un cadre de la société conseilla de consulter un de ses anciens professeurs, Jacques Perret,
titulaire de la chaire de philologie latine à la Sorbonne. Le professeur Perret répondit par une lettre
du 16 avril 1955, dont la lecture donne un exemple intéressant de recherche terminologique :“Que
diriez vous d’‘ordinateur’? C’est un mot correctement formé, qui se trouve même dans le Littré
(Emile) comme adjectif désignant Dieu qui met de l’ordre dans le monde. Un mot de ce genre a
l’avantage de donner aisément un verbe, ‘ordiner’, un nom d’action, ‘ordination’. L’inconvénient
est que ‘ordination’ désigne une cérémonie religieuse ; mais les deux champs de signification
(religion et comptabilité) sont si éloignés et la cérémonie d’ordination connue, je crois, de si peu de
personnes que l’inconvénient est peut-être mineur. D’ailleurs votre machine serait ‘ordinateur’ (et
non ordination) et ce mot est tout a fait sorti de l’usage théologique”.»)
In informatica, vista la natura del mezzo, qualsiasi problema che possa essere schematizzato
con una procedura di calcolo, un modello di elaborazione di dati, un algoritmo, potrà essere
sottoposto al computer; ciò dal tempo di Alan Touring e John Von Neumann, due dei più grandi tra
i padri della scienza informatica.
Ma qual è la magia che rende possibile tutto ciò? Diremmo che vi sono due elementi magici:
uno è il progresso nel campo dei “materiali” impiegati per costruire l’hardware: valvole, transistor,
3
circuiti integrati, microchip ad alto livello di integrazione, computer quantistici, computer al
grafene, un ritrovato di questi anni che ha fruttato il premio Nobel ai suoi inventori. L’altro
elemento di magia è il “dialogo”, rapido e preciso, che si instaura, durante il funzionamento della
macchina, tra le parti che formano il computer al livello dell’hardware, in particolare tra la Cpu, il
processore, e la memoria centrale.
La memoria centrale svolge il compito di conservare le istruzioni che devono essere eseguite
per risolvere un determinato problema (si tratta del programma) e i dati da elaborare con quel
programma. La Cpu preleva un’istruzione dalla memoria centrale, la porta presso di sé (fetch), la
decodifica (decode) e la esegue (execute), prelevando anche i dati necessari per l’esecuzione, e
ponendo i dati parziali in memoria centrale. Ripetendo più volte questo lavoro “elementare”, grazie
all’unità di controllo, all’unità aritmetico-logica e ad alcuni semplici elementi di memoria detti
“registri”, la Cpu esegue il programma, un’istruzione alla volta, dall’inizio alla fine e così risolve il
problema.
Non si creda però che ogni problema possa essere facilmente risolto con un click. C’è una
branca dell’informatica che si occupa della complessità di calcolo e divide i problemi in classi di
complessità in base all’efficienza dei migliori algoritmi noti per ciascun problema di ogni classe, in
termini di risorse di calcolo necessarie per eseguirli. Ebbene, ci sono problemi considerati “difficili”
o “duri” da risolvere. La crittografia si basa su questi problemi NP-hard.
3. La logica e i linguaggi del computer
La logica di funzionamento del calcolatore, al livello della macchina, può apparire astrusa agli
occhi di chi oggi usa il computer con estrema facilità, senza una formazione di informatica di base.
Tuttavia, occorre sapere che ogni volta che svolgiamo un compito con l’ausilio del computer
effettuando uno o più click noi chiediamo alla Cpu di eseguire programmi. Ogni programma è stato
progettato e scritto da un programmatore, o sviluppato automaticamente, proprio per svolgere una
funzione utile per l’utente. Ogni programma contiene un algoritmo, cioè un procedimento, come
quello per calcolare una percentuale, o quello per risolvere le equazioni di secondo grado (descritto
in matematica dall’apposita formula risolutiva), o quello per tenere i conti mediante la “partita
doppia”, che eseguito dall’inizio alla fine dal computer, se ben congegnato, permette di risolvere il
problema dato.
Il programma o software si presenta come un insieme di “ordini” opportunamente organizzati,
impartiti al computer, in particolare alla Cpu; insieme che traduce un algoritmo in un linguaggio in
qualche modo comprensibile dal calcolatore. Anche se gli utenti non ne hanno consapevolezza, di
norma un programma si presenta sotto la forma di un testo (un file ascii) scritto in una “strana
lingua”, uno pseudo inglese: cioè in un linguaggio di programmazione. Un semplice programma
che permetta di introdurre dieci numeri e di calcolarne la somma, utile per esempio per controllare
l’esattezza dello scontrino della spesa, è il seguente “testo” scritto in linguaggio Pascal:
Program somma;
var
i: integer;
som, num: real;
begin
som:=0;
i:=1;
repeat
read(num);
som:=som+num;
i:=i+1
until i>10;
write(som)
end.
4
In Wikipedia leggiamo: «Un linguaggio di programmazione è un linguaggio formale, dotato
(al pari di un qualsiasi linguaggio naturale) di un lessico, di una sintassi e di una semantica ben
definiti. È utilizzabile per il controllo del comportamento di una macchina formale […] o in fase di
programmazione di questa attraverso la scrittura del codice sorgente di un programma ad opera di
un programmatore».
Insomma, un linguaggio di programmazione assomiglia a una lingua, ma una specie di lingua
artificiale, perciò formale e più rigida di quelle naturali. Però, come le lingue, con riferimento alla
scrittura, naturalmente, perché, come abbiamo visto, di scrittura si tratta, ha un alfabeto, un lessico,
una sintassi e una semantica, definiti a priori dall’inventore-sviluppatore del linguaggio: il
programmatore, se vuole comunicare correttamente con il computer, deve seguire scrupolosamente
le regole “grammaticali” del linguaggio.
I primi computer venivano programmati con il linguaggio binario, nel quale, lo ricordiamo,
dati ed istruzioni da eseguire, ancora oggi, sono espressi mediante sequenze di “0” e “1”, proprio
come la lettera “a” vista sopra, o in un linguaggio binario semplificato detto “short code”. Il
linguaggio binario, difficile da usare da parte degli uomini, è, per così dire, il “linguaggio naturale”
del computer, nel quale risiede una parte della grande versatilità e dell’“essenza” di questa strana
macchina. Una gran parte dello sviluppo dell’informatica, dall’Eniac, uno dei primi computer, ai
nostri giorni, può essere letta come il tentativo, riuscito, di rendere sempre più facile per gli utenti
l’accesso alle risorse di elaborazione presenti nei calcolatori.
Ma come fa il computer a comprendere i linguaggi di programmazione come il Pascal se il
suo linguaggio naturale è quello binario? Quale logica è stata seguita dai tecnici e dagli scienziati
per risolvere questo problema?
Spieghiamo meglio qual è il problema: se la macchina comprende il linguaggio binario, “0” e
“1”, “0” e “1” ecc., mentre l’utente si esprime facilmente in italiano o in russo o in francese, o
mediante schematizzazioni non troppo dissimili dalla sua espressione in lingua naturale, oppure
mediante schemi grafici, come avviene la comunicazione?
Ecco la soluzione: gli scienziati hanno pensato di far fare più lavoro possibile al computer,
colmando l’abisso che si apre tra il linguaggio umano e il linguaggio binario, attraverso programmi
che traducono in linguaggio binario gli ordini, le istruzioni, i programmi espressi dagli utenti o dai
programmatori in schematizzazioni che sono abbastanza naturali per loro, al limite espressi nella
propria lingua madre.
L’inventore-sviluppatore di un linguaggio per calcolatore, chiamiamolo “L”, allora deve
fornire ai programmatori le regole grammaticali ma anche l’opportuno software con cui gli
utilizzatori tradurranno in linguaggio binario i programmi da essi scritti con il linguaggio “L”.
Questi programmi di traduzione sono di due tipi fondamentali (anche se recentemente le cose si
sono complicate un poco): compilatori ed interpreti. I compilatori e gli interpreti, in quanto
programmi, sono anch’essi scritti in qualche linguaggio di programmazione.
Esistono moltissimi linguaggi di programmazione. Vediamo un elenco di nomi suddiviso in
sottogruppi:
Algol, Basic, Cobol, Fortran; Ada, C, Modula-2, Pascal; Attack, Clarion, C++, Delphi, Java,
Modula-3, Python, Simula, Smalltalk, Visual Basic; Lisp, Logo, Scala, Scheme; Curry, Mercury,
Prolog; SQL, QBE; Befunge, Brainfuck, FALSE, Malbolge; Occam, Linda, Axum; Applescript,
Actionscript, Hyper talk, Java script, Lingo, Perl, VBscript.
I linguaggi per computer possono essere classificati in base a diversi criteri. Un criterio è il
“grado di evoluzione” sulla scala che dal linguaggio binario porta alla lingua madre di ognuno di
noi. Un secondo criterio è la logica che il programmatore deve seguire per descrivere col suo
programma la procedura di risoluzione del problema. I due criteri non sono indipendenti l’uno
dall’altro.
In base al grado di evoluzione crescente, abbiamo linguaggi Assembly, linguaggi di alto
livello o di terza generazione, linguaggi di quarta generazione o productivity tools, e anche
linguaggi di quinta generazione. I linguaggi Assembly sono diversi da macchina a macchina e
5
vengono utilizzati per ottimizzare l’efficienza nel software di base come il sistema operativo, il
DBMS e il compilatore, o per garantire adeguati tempi di risposta nei sistemi in tempo reale, o nei
videogiochi. Nei linguaggi di terza generazione, a una istruzione corrispondono più azioni
dell’Assembly. I linguaggi Pascal, Cobol, Fortran, Visual Basic e moltissimi altri menzionati sopra
sono di terza generazione. I productivity tools, i diversi programmi di Office automation come
Word ed Excel sono linguaggi di quarta generazione; così come i linguaggi dichiarativi Prolog e
Datalog, e anche SQL e QBE, specifici per le basi di dati relazionali, sono linguaggi di quarta
generazione. I linguaggi di quinta generazione riguardano i sistemi esperti e i prodotti di
intelligenza artificiale, con i quali, al limite, si arriva a interagire con la macchina direttamente
mediante il linguaggio naturale o con il pensiero.
Diamo due esempi di “programmi” SQL:
Select nome, cognome
From Impiegato where titolo-studio=”laurea in lettere”;
Select nome, cognome
From Fornitore Where Exists (Select *
From Fornitura, Prodotto
Where Fornitura.codicef=Fornitore.codicef
and Fornitura.codicep=Prodotto.codicep
and Prodotto.nome= “vino”).
In base alla logica che il programmatore deve seguire per descrivere il problema da risolvere,
abbiamo i seguenti paradigmi di programmazione, cioè delle classi di linguaggi simili: imperativi,
orientati agli oggetti e dichiarativi, come già visto sopra. In verità l’elenco può essere più lungo:
linguaggi imperativi, strutturati, orientati agli oggetti, funzionali, logici o dichiarativi, dichiarativi
per data base, esoterici, paralleli, di scripting.
Algol, Basic, Cobol, Fortran, PL/1 sono imperativi; Ada, C, Modula-2, Oberon, Pascal sono
strutturati; Attack, Clarion, C++, Delphi, Eiffel, Java, Modula-3, Python, Simula, Smalltalk, Visual
Basic sono orientati agli oggetti; Lisp, Logo, Scala, Scheme sono funzionali; Curry, Prolog sono
logici o dichiarativi; SQL e QBE sono dichiarativi per data base; Befunge, Brainfuck, FALSE,
Malbolge, Whitespace sono detti esoterici; Occam, Linda, Axum sono paralleli; Applescript,
Actionscript, Hyper talk, Java script, Lingo, Perl, VBscript sono di scripting.
Diamo esempi di programmi in Prolog e in C, e uno object oriented in Visual Basic.
Esempio di programma Prolog che calcola il quadrato di numeri letti dall’esterno:
quadrato(X,Y) :Y is X * X.
start :write('Dai un numero: negativo per terminare'), nl,
read(X),
quadrato_ripeti(X).
quadrato_ripeti(X) :X < 0,
write('Arrivederci!').
quadrato_ripeti(X) :X >= 0,
quadrato(X,Q),
write('Il quadrato di '), write(X), write(' e'' '), write(Q),
nl,nl.
6
Programma scritto in C che stampa la tabellina:
main()
{
int i, j;
/* per I che va da 1 a 10*/
for( i = 1 ; i <= 10 ; i = j + 1 ){
/* per J che va da 1 a 10*/
for( j = 1 ; j <= 10 ; j = j + 1 )
/* stampare I * J
stampare uno spazio*/
printf("%3d ", i*j);
/* andare a capo*/
printf("\n");
}
}
Il programma che segue determina l’area e il perimetro di un rettangolo ed è scritto in Visual
Basic, seguendo l’approccio object oriented. Esso è diviso in due parti, la prima, fino a quando non
si incontra il secondo “option explicit”, rappresenta il modulo di classe, la seconda rappresenta il
codice relativo al form dell’interfaccia:
Option Explicit
Private mbase As Single
Private maltezza As Single
Public Property Get base() As Single
base = mbase
End Property
Public Property Let base(ByVal vbase As Single)
mbase = vbase
End Property
Public Property Get altezza() As Single
altezza = maltezza
End Property
Public Property Let altezza(ByVal valtezza As Single)
maltezza = valtezza
End Property
Public Function area() As Single
area = mbase * maltezza
End Function
Public Function perimetro() As Single
perimetro = 2 * (mbase + maltezza)
End Function
7
Option Explicit
Private Sub Cmdesegui_Click()
Dim r1 As rettangolo
Set r1 = New rettangolo
r1.base = Val(Txtbase.Text)
r1.altezza = Val(txtaltezza.Text)
MsgBox ("area" + Str(r1.area) + " " + "perimetro" + Str(r1.perimetro))
End Sub
Per concludere questa parte sui linguaggi, diciamo qualche parola riguardo ai sistemi software
particolari che prendono il nome di sistemi operativi, perché come sistemi software devono essere
scritti con qualche linguaggio di programmazione. Il sistema operativo è il software più importante
del calcolatore, senza il quale il computer non può funzionare. In Wikipedia leggiamo: «È un
insieme di componenti software che garantisce l’operatività di base di un calcolatore, coordinando e
gestendo le risorse hardware di processamento e memorizzazione, le periferiche, le risorse/attività
software (i processi) e facendo da interfaccia con l’utente, senza il quale quindi non sarebbe
possibile l’utilizzo del computer stesso e di altri software più specifici, come applicazioni o librerie
software». I sistemi operativi, di norma, vengono scritti con linguaggi di basso livello come sono i
linguaggi Assembly.
Noi tutti usiamo Windows o Linux o Mac OS ma ci sono tantissimi sistemi operativi.
Dell’IBM menzioniamo OS/2, OS/360 e OS/390. Citiamo ovviamente anche UNIX dal quale
discende Linux, e GNU da cui discende per esempio Ubuntu. È il caso qui di citare il free software,
per il quale Richard Stallman con la Free Software Foundation, distributrice di GNU, combatte in
nome della democrazia una guerra senza quartiere contro i colossi dell’informatica come Apple,
Microsoft, Google: emblematica è stata la polemica che egli ha innescato alla morte di Steve Jobs e
l’altra, recentissima, su Android, del quale avrebbe detto che si tratta di un “cavallo di Troia”. La
Free Software Foundation ha definito quattro livelli di libertà per poter parlare di software libero.
Livello 0: libertà di eseguire il programma per qualsiasi scopo. Livello 1: libertà di studiare il
programma e modificarlo. Livello 2: libertà di distribuire copie del programma in modo da aiutare il
prossimo. Livello 3: Libertà di migliorare il programma e di distribuirne pubblicamente i
miglioramenti, in modo tale che tutta la comunità ne tragga beneficio.
Oltre a Stallman, anche altri hanno definito criteri in base ai quali parlare di software libero.
Per esempio il progetto Debian stabilisce dieci principi.
4. La frontiera delle applicazioni dei computer e dei sistemi informatici
In questo paragrafo esploriamo alcuni ambiti di ricerca o di applicazione dell’informatica.
Office automation
Sotto questo nome vanno tutti quei programmi, metodi e sistemi che mirano ad aumentare la
produttività dell’ufficio, migliorando possibilmente la qualità dei risultati del lavoro. Microsoft
Office è un insieme di programmi di Office automation, come pure Open office. Rientrano in questa
categoria anche programmi di gestione progetti come Project e di Cad come Autocad. Naturalmente
fa parte dell’automazione d’ufficio anche l’infrastruttura hardware come la rete locale che permette
di collegare tutte le apparecchiature che fanno parte di un ufficio. Potremmo considerare parte di un
sistema d’automazione d’ufficio anche la posta elettronica e i sistemi di collegamento e controllo
remoto al nostro computer installato in un ufficio situato da un’altra parte, nonché i recenti sistemi
di archiviazione di ogni tipo di file in “nuvole” o “pseudo nuvole” come Dropbox e Googledrive, e
tutti i sistemi che permettono tutte le forme di telelavoro o “distance working”. Rientrano in questa
classe di applicazioni anche tutti gli strumenti di comunicazione che permettono di lavorare stando
in treno o in aeroporto, come portatili, black berry, smart phone ecc. Ricordiamo che l’obiettivo
8
dell’Office automation era quello di realizzare l’ufficio senza carta ma ha realizzato l’ufficio senza
ufficio (Google pare che a riguardo abbia intrapreso un percorso a ritroso). Pensate al modo di
lavorare di Ryanair e di tante aziende di cui non si trova più un ufficio dove mettere piede ed essere
ascoltati, come Enel e Telecom.
Basi di dati e basi di conoscenza
Una base di dati è un sistema integrato di archivi elettronici progettato in modo unitario e
gestito mediante un software speciale detto DBMS (Data Base Management System). Tutti i sistemi
informativi basati sul computer praticamente contengono una base di dati. Quasi tutti i sistemi web,
specialmente quelli per l’e-commerce, contengono anche una base di dati, così come i sistemi
informativi bancari, compreso il sistema Bancomat. Il sistema di archivi che è la base di dati poi
viene “interrogato” mediante linguaggi particolari come l’SQL per estrarre dati utili all’utente. Più
frequentemente però la base di dati viene creata come “infrastruttura” di base su cui appoggiare il
funzionamento di programmi particolari detti “transazioni”. In questi casi, il sistema integrato base
di dati più sistema delle transazioni costituisce un sistema informatico prezioso, per esempio per
una banca o per un ente pubblico.
Una base di conoscenza è un tipo particolare di base di dati, non tanto orientata alle
transazioni, cioè allo svolgimento di operazioni continue di aggiornamento, ma mirata alla gestione
della conoscenza relativa a una organizzazione o a un ente. Una base di conoscenza non archivia
solo dati strutturati come “nome”, “cognome”, “sesso” e “data di nascita” delle persone, ma tutto il
materiale informativo che riguarda l’ambito operativo di un’organizzazione o di un ente,
proveniente anche dal funzionamento di uno o più database. La conoscenza, per essere utile, viene
costruita, per esempio con tecniche di data mining, classificata e strutturata opportunamente e poi
reperita grazie a motori di ricerca, quando serve, per esempio per prendere decisioni.
Data mining
Le tecniche di data mining mirano a estrarre non solo dati ma un sapere o una conoscenza da
grandi quantità di dati. Per esempio, in statistica non interessano soltanto le serie di dati ma anche le
informazioni sintetiche che possiamo ottenere dai dati, quali medie, varianze, massimi, minimi,
tendenze ecc. Ebbene, l’attività di data mining, letteralmente estrazione di dati come da una
miniera, è simile a quello che la statistica fa con le serie storiche di dati, salvo che questo nuovo
campo di attività si misura con montagne di dati di ogni tipo, come abbiamo visto a proposito delle
basi di conoscenza. Quest’approccio persegue due finalità: estrarre da dati strutturati informazioni
nascoste o implicite, oppure esplorare in modo automatico o semiautomatico grandi quantità di dati
per scoprire in essi “pattern”, cioè schemi significativi presenti in quei dati.
In Wikipedia leggiamo: «Questo tipo di attività è cruciale in molti ambiti della ricerca
scientifica, ma anche in altri settori (per esempio in quello delle ricerche di mercato). Nel mondo
professionale è utilizzata per risolvere problematiche diverse tra loro, che vanno dalla gestione delle
relazioni con i clienti, all’individuazione di comportamenti fraudolenti, fino all’ottimizzazione di
siti web».
Ancora Wikipedia avverte che “cercare un numero di telefono in un elenco” o cercare in
Internet “Vacanze alle Maldive” non è fare data mining, mentre lo è “scoprire che Benetton,
Troncon, Cavasin, Trevisan sono cognomi comuni in particolari aree d’Italia” o “scoprire i clienti
che hanno maggiore propensione all’acquisto di certi prodotti o che sono più sensibili a certe
campagne pubblicitarie”. Pare che le tecniche di data mining, associate al concetto di “big data”,
promettano di prevedere e forse evitare eventi umani come rapimenti, assassinii, attentati terroristici
e stragi, perciò sono molto gradite alle forze dell’ordine e ai servizi segreti. Certamente sono molto
impiegate dalle imprese commerciali, le quali anche per questo distribuiscono carte con cui i clienti
accumulano punti o hanno diritto a sconti. Nel film “A beautiful mind” c’è un genio della
matematica, un poco picchiatello che pratica senza mezzi, tutto a mente, il data mining.
9
Reti neurali
Le reti neurali, per certi versi, sono un modello di calcolatore, basato su un gran numero di
elementi semplici ma interconnessi tra loro, alternativo a quello di Von Neumann. Esse si basano
sul concetto di “neurone” come unità elementare di calcolo, similmente a quello che accade con i
neuroni del cervello: si tratta di simulazioni del comportamento del neurone umano. Una rete
neurale potrebbe essere simulata mediante una o più strutture di dati come vettori e matrici, persino
in Pascal. L’unità “neurone” riceve uno o più segnali d’ingresso provenienti da altri neuroni ed
emette un solo segnale d’uscita, eventualmente diretto ad altri neuroni della rete. Questi segnali
assumono valori compresi tra 0 e 1. A ogni segnale il neurone associa un “peso” come fattore
moltiplicativo. La somma pesata di tutti i segnali costituisce l’“attivazione interna” del neurone,
mentre il suo segnale di uscita è detto “attività”. Un segnale uscente da un neurone e diretto a un
altro neurone costituisce una sorta di sinapsi. Nelle reti neurali è importante l’apprendimento.
Queste reti neurali e i cosiddetti algoritmi genetici vengono impiegati nelle basi di conoscenza e
nell’attività di data mining.
Data warehouse
Un Data warehouse è letteralmente un magazzino di dati, per esempio di un’azienda, e
rappresenta una estensione del concetto di base di dati e di base di conoscenza. Il data warehouse
descrive il processo di acquisizione, trasformazione e distribuzione di informazioni presenti
all’interno o all’esterno delle aziende come supporto per il processo decisionale, il quale deve
tenere conto di sempre più importanti quantità di fatti e variabili. Si tratta di un archivio contenente
tendenzialmente tutti i dati di un’organizzazione, di qualsiasi natura essi siano.
In Wikipedia leggiamo che William H. Inmon, colui che per primo ne ha parlato
esplicitamente, definisce un data warehouse come “una raccolta di dati integrata, orientata al
soggetto, variabile nel tempo e non volatile di supporto ai processi decisionali”. Il data warehouse
può essere solo interrogato dall’utente, non aggiornato: dell’aggiornamento si occupano i
responsabili. Un elemento molto importante del data warehouse è il “metadato”, cioè dati aggiunti
ai dati veri e propri che permettono di specificarne la provenienza, l’utilizzo, il valore e la funzione.
DSS (Decision Support Systems)
Un sistema di supporto alle decisioni viene concepito per aiutare i “decision maker” aziendali
che si misurano quotidianamente con i processi decisionali. Il DSS permette di sintetizzare e
presentare in modo semplice grandi masse di dati, di simulare situazioni e scenari tra i quali i
decisori poi sceglieranno quello che riterranno più conveniente. Il DSS si appoggia su un database o
su una base di conoscenza o sul data warehouse. Inoltre, contiene una base di modelli tipici dei
sistemi esperti e delle applicazione di business intelligence. Nei DSS un ruolo importante gioca
l’attività di data mining, mirata a estrarre, per esempio grazie a reti neurali o a algoritmi particolari,
informazioni come relazioni e associazioni tra i dati presenti nel data base, precedentemente
sconosciute all’utente.
Altre applicazioni comuni dei computer sono:
il web marketing, l’e-commerce e l’home banking delle quali tutti noi facciamo ormai
esperienza.
L’e-government, invece, è l’applicazione dei computer all’amministrazione della pubblica
amministrazione, la quale in questo modo digitalizza i documenti e trasferisce on line i
procedimenti.
Business intelligence
In Internet leggiamo: «Con la locuzione business intelligence (BI) ci si può solitamente
riferire a:
10
1.
un insieme di processi aziendali per raccogliere ed analizzare informazioni
strategiche,
2.
la tecnologia utilizzata per realizzare questi processi,
3.
le informazioni ottenute come risultato di questi processi».
Le tecniche di business intelligence sono strettamente collegate a quelle di data mining, di
data warehouse, di OLAP (on line analytical processing) ecc.
Altre applicazioni che riguardano le imprese ma anche la pubblica amministrazione sono
quelle dei Workflow management systems che permettono di razionalizzare l’organizzazione, molto
utilizzate nelle banche e nelle assicurazioni.
E-learning fa riferimento, invece, alla possibilità di apprendere mediante i computer, grazie a
sussidi multimediali, anche on line. Del resto è esperienza comune apprendere mediante canali
tematici, mediante Youtube o mediante le reti televisive straniere che permettono di praticare la full
immersion nelle lingue.
Recentemente, la fondazione “Mondo digitale” di Roma, in collaborazione con Microsoft ha
proposto alle scuole superiori del nostro paese una modalità originale di apprendimento, basata non
su contenuti ma su processi: ogni gruppo-classe è invitato a escogitare un’idea progettuale di
innovazione sociale, pianificarla e realizzarla. I progetti vengono raccolti sulla piattaforma
“Phyrtual.org”, messi a confronto e sostenuti. In questo modo si spera di fare acquisire agli studenti
alcune competenze considerate importanti per la loro vita, come saper lavorare in gruppo, saper
apprendere e risolvere problemi cooperando, saper elaborare un progetto e realizzarlo, saper
utilizzare i nuovi mezzi digitali d’informazione.
Robotica e robotica umanoide
È una classe di applicazioni che trovano spazio nell’industria, dove ormai il lavoro manuale è
stato sostituito dai robot, ma anche in casa o sul campo di battaglia, e perfino nella didattica. I robot
soldato insieme ai droni, velivoli senza pilota, e forse agli esoscheletri, permettono di cambiare
totalmente il modo di fare la guerra guerreggiata. L’altra frontiera della guerra, a metà strada tra lo
spionaggio e la guerra vera e propria, è la cosiddetta cyber war, cioè quella combattuta a distanza da
hacker e pirati informatici.
Domotica
Si tratta di applicazioni dei computer alla gestione della casa, per esempio al fine di
ottimizzare i consumi energetici e rendere più gradevole la vita.
Sistemi esperti
Con i sistemi esperti si cerca di emulare il comportamento degli esperti umani. Per esempio,
un sistema di questo tipo può permettere di fare la diagnosi a un paziente a partire dai sintomi, come
farebbe un medico. Questo è possibile grazie a una base di conoscenza comprendente regole
deduttive e procedure tipiche dell’ambiante in cui il sistema deve operare, e grazie a un motore
inferenziale.
Intelligenza artificiale
Le applicazioni di intelligenza artificiale sono quelle che mirano a dotare un computer di
abilità che lo rendano capace di svolgere funzioni e ragionamenti tipici della mente umana. Questa
branca dell’informatica cerca di rispondere alla domanda: “I computer possono pensare?”. Gli
esperti di intelligenza artificiale si occupano di apprendimento automatico, di rappresentazione della
conoscenza e di ragionamento, di cooperazione, di linguaggio naturale, di simulazione della visione
e di riconoscimento di immagini.
11
Un ricercatore dell’Unical, nostro conterraneo, ha ottenuto un premio perché «i proponenti
avevano evidenziato gli straordinari risultati di ricerca in Intelligenza Artificiale conseguiti … che
spaziano dalla teoria degli ipergrafi, al “constraint satisfaction” ed alla logica computazionale,
sottolineando la notevole combinazione della ricerca di base con la ricerca applicata ed il
trasferimento tecnologico, che ha coniugato la dimostrazione di teoremi e proprietà fondamentali
con lo sviluppo di sistemi complessi ed innovative applicazioni dell’Intelligenza Artificiale».
Altri fronti aperti della ricerca informatica riguardano: l’elaborazione parallela, il cloud
computing, la realtà virtuale, i sistemi di quick read, la realtà aumentata, il web 3.0, lo studio di
interfacce a campo sensibile, senza dispositivi fisici, fino ai sistemi di interazione basati sul
pensiero.
Nella scheda biografica di un altro ricercatore dell’Unical, dunque un altro calabrese,
leggiamo che egli si occupa di: «Workflow e Process Mining: modellazione di processi utilizzando
strategie (chiamate workflow mining) …; Data Warehouse, Sistemi OLAP (online analytical
processing) ed Integrazione dei Dati …; gestione di dati continui da sensori in griglie
computazionali …; linguaggi basati sulla logica e non-determinismo: introduzione di meccanismi di
punto fisso inflazionario, di gestione di eventi ed altre estensioni per la rappresentazione di basi di
conoscenza ed ontologie …».
5. Il computer nei sistemi di comunicazione e nei processi di produzione e diffusione della
conoscenza
Il computer nei sistemi di comunicazione e nei processi di elaborazione e diffusione della
conoscenza richiede una riunione a parte. Nel mese di aprile metteremo a confronto tre o quattro
studenti e un giovane insegnante su questi temi specifici. Qui ci limitiamo a ribadire che alcuni
servizi o strumenti ormai di uso quotidiano, che non devono essere trascurati, sono i seguenti:
1.
posta elettronica, distance working, chat e messaggerie varie, Facebook;
2.
Twitter, Wikipedia, Treccani online, vocabolari online, quotidiani online, tv e radio
online, Youtube, Ansa.it, la Crusca on line, Dop on line; TED, Livestation, Blackberry, Servizio
pubblico via Internet, Ipod, Ipad, Iphone, wordreference;
3.
musica in podcasting, juke box on line, e-book, spazi liberi per e-book online;
4.
smart city, e-book, Papertab, qbit, computer al grafene, esoscheletri, interfacce senza
dispositivi fisici.
12