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