Sunti di fondamenti di informatica
Prof. Giancarlo Iannizzotto – Libro consigliato: "Informatica arte e mestiere" (IV edizione) – D. Mandrioli, S. Ceri, L. Sbattella, P. Cremonesi, G. Cugola
Introduzione
Che cos'è l'informatica?
Gli autori del libro considerano l'informatica come la scienza della rappresentazione e dell'elaborazione dell'informazione. Il prodotto principale della tecnologia informatica è quindi l'informazione, la cui elaborazione avviene in modo sistematico e rigoroso e perciò può essere automatizzata, cosa che non avviene nel giornalismo, che rappresenta un’attività meno formalizzata. La Association Computing Machinery, principale organizzazione di ricercatori e professionisti informatici, definisce l'informatica come lo studio sistematico degli algoritmi che descrivono e trasformano l'informazione: la loro teoria, analisi, progetto, efficienza, realizzazione e applicazione.
Il concetto di algoritmo
È una sequenza precisa di operazioni comprensibili ed eseguibili (istruzioni di montaggio, operazioni di prelievo al bancomat) da uno strumento automatico. È essenziale che un algoritmo sia comprensibile al suo esecutore. I calcolatori elettronici sono definiti esecutori di algoritmi. Questi vengono descritti tramite programmi, sequenze di istruzioni scritte in un linguaggio comprensibile al calcolatore. L'informatica produce algoritmi, capisce la sequenza di passi che portano alla soluzione di un problema, e li rende cioè comprensibili al calcolatore codificandoli in programmi. Il calcolatore esegue i programmi passo passo, ma è privo di buon senso, perché non devia dalla loro esecuzione anche se questa è sbagliata. Un algoritmo è corretto se perviene alla soluzione del compito cui è preposto, senza sbagliare alcun passo; è efficiente quando perviene alla soluzione nel modo più veloce e/o meno dispendioso, compatibilmente con la sua correttezza. Anche ascoltare un disco con un lettore CD portatile comporta l'esecuzione di un piccolo algoritmo. Inserendo il CD erroneamente però il disco non verrà eseguito. Gli esseri umani sono buoni esecutori di algoritmi, ma possono anche decidere di abbandonarli usando il buon senso (reinserendo correttamente il CD), mentre i calcolatori, non possedendolo necessitano la descrizione di tutte le situazioni fuori dal normale, per ottenere una reazione appropriata.
Esempio esteso: consultazione di una carta geografica
Possiamo consultarla prima di partire in vacanza per valutare le distanze. Il problema di trovare la via più breve per raggiungere la meta può essere risolto tramite algoritmo, in quanto non dipende da giudizi soggettivi. Spesso però nel consultare le carte usiamo il colpo d’occhio: strada migliore non molto diversa dal percorso in linea d’aria, a meno di zone di difficile attraversamento. Non è chiaro a che punto un algoritmo possa ritenersi sufficientemente specificato da poter essere eseguito dall’esecutore prototipo ed anche per questo motivo rimane il problema di rappresentare la cartina geografica e le sue informazioni, in modo che siano comprensibili al calcolatore.
I linguaggi per la programmazione di algoritmi
Sono i linguaggi che consentono di scrivere gli algoritmi sotto forma di programmi che possono essere compresi dal calcolatore. La presenza di tanti linguaggi di programmazione, da un lato offre il vantaggio di scegliere quello più adatto a codificare specifici algoritmi; dall’altro provoca problemi come l’esigenza di imparare linguaggi diversi e quella di comunicare informazioni tra programmi scritti in linguaggi diversi. L’uso principale dei calcolatori consisteva nel risolvere problemi di calcolo numerico ed il primo linguaggio di alto livello per la programmazione dei calcolatori fu il FORTRAN (FORmula TRANslator); vi seguì il COBOL, orientato alle applicazioni gestionali e adatto alla memorizzazione ed elaborazione di dati. Durarono molto per gli ingenti investimenti in alcuni ambienti applicativi. Tra i linguaggi basati sui principi della programmazione invece vi è l’ALGOL 60 (ALGOrithmic Language), il Pascal, il C, l’Ada, prescelto dal Dipartimento della Difesa degli USA. Ultimamente sono nati linguaggi orientati agli oggetti come il C++ e Java e caratterizzati da una corrispondenza tra gli oggetti che caratterizzano un’applicazione e la loro codifica. I linguaggi di scripting (Python e Javascript) invece sono in grado di specificare ogni algoritmo e spesso vengono usati anche fuori dall’interazione con la macchina. Infine i linguaggi che si rifanno a un modo di pensare più vicino al linguaggio matematico: LISP, basato sul concetto matematico di funzione; PROLOG, basato sul formalismo della logica matematica, ecc.
Architettura dei sistemi informatici
Un sistema informatico (dal calcolatore portatile più piccolo al sistema informatico multiutente) è un oggetto complesso, costituito da molte parti che interagiscono tra loro. Si distinguono: hardware, i componenti fisici del sistema, e software, i programmi eseguiti dal sistema.
Hardware
È composto da un insieme di elementi funzionali, presenti in ogni calcolatore anche se diversi per numero e caratteristiche. L’unità di elaborazione o processore (Central Processing Unit) svolge le elaborazioni e coordina il trasferimento dei dati all’interno dell’intero sistema informatico. Ha il compito interpretare ed eseguire le istruzioni dei programmi. La memoria centrale (Random Access Memory) è utilizzata per memorizzare programmi e dati utili al funzionamento dell’elaboratore. Ha capacità limitata ed il suo contenuto viene perduto quando il calcolatore si spegne, ma l’accesso all’informazione in questo tipo di memoria è molto rapido. La memoria di massa è utilizzata per memorizzare grandi quantità di programmi e dati. Viene spesso realizzata tramite tecnologia magnetica, ottica o a stato solido non volatile (memoria flash). L’informazione non viene persa con lo spegnimento, ma l’accesso ad essa è molto meno rapido. Le unità periferiche consentono al calcolatore di comunicare con l’esterno: terminali dotati di tastiera, mouse e video, stampanti e prodotti cartacei. Il bus di sistema collega tutti gli elementi funzionali elencati e consente lo scambio di dati fra essi. Se l’ambiente esterno non è costituito da utente umano (impianti industriali, strumenti aereo) la comunicazione avviene mediante sensori, che percepiscono fenomeni esterni misurando valori fisici o rilevando immagini e suoni; gli attuatori traducono comandi appropriati in azioni che possono influenzare l’ambiente circostante come suoni, movimenti, regolazioni.
Personal computer
Tutti gli elementi funzionali citati sono presenti in un PC, che ha un corpo (box) contenente unità centrale, memoria centrale e di massa. Il box è collegato a: mouse, tastiera e video. La memoria di massa di un PC è formata da un disco fisso (hard disk) e da 1 o più unità ausiliarie. Il disco fisso è inamovibile e può contenere molti dati e programmi. Altre unità di memoria di massa, come le chiavette USB (dall’uscita del calcolatore), sono estraibili dal calcolatore, hanno capacità ridotta e vengono usate per memorizzare e scambiare dati e programmi fra utenti e o sedi diverse. I dischi ottici come i CD, Digital Versatil Disc, Blue-ray disc, sono basati su tecnologia laser, usati sia come memoria di sola lettura (Read Only Memory), sia come memoria di lettura/scrittura. L’informazione contenuta nella memoria di massa è organizzata in file, dotato di proprio nome e dati. Possono contenere testi, programmi eseguibili, immagini. I PC “fissi” sono definiti desktop computer.
Altri sistemi informatici
Le work-station sono dotate di un video di grandi dimensioni e ad alta risoluzione e di diversi processori di elevate prestazioni e sono in grado di servire decine di utenti contemporaneamente. I mainframe arrivano anche a centinaia di utenti, con molti processori, organizzati in cluster o gruppi, e gigantesche memorie di massa. Possono avere migliaia di terminali, si pensi ai sistemi di prenotazione dei viaggi aerei. La capacità di elaborazione di un sistema informatico si ottiene aggiungendo memoria, processori, terminali, ma anche mettendo insieme vari calcolatori e formando le reti di calcolatori. Le reti possono essere: locali (Local Area Network) e geografiche (Wide Area Network). Le prime collegano calcolatori e terminali fisicamente vicini tra loro e sono molto veloci. Quelle geografiche collegano elaboratori medio grandi (host) che sono a grande distanza fra loro e la trasmissione di informazioni su WAN è più lenta e onerosa rispetto alla LAN.
Software
Si distinguono: il software di base, dedicato alla gestione dell’elaboratore, che opera al di sopra dell’hardware o del firmware (microprogrammi scritti sulle memorie permanenti del calcolatore dai suoi costruttori); software applicativo, dedicato alla realizzazione di specifiche esigenze applicative, che opera al di sopra del software di base. Il principale programma del software di base è il sistema operativo, che gestisce le varie risorse hardware presenti nell’elaboratore. In un PC esso: interpreta ed esegue comandi elementari (eseguire un programma, stampare un file), organizza le risorse della macchina come processore e memoria centrale (organizza la memoria consentendo lettura, scrittura, cancellazione, ecc. di un file) e permette il collegamento con altri calcolatori della rete e l’accesso ai relativi servizi. La complessità del sistema operativo cresce al crescere della complessità del sistema informatico. Un utente non può modificare le sue istruzioni. Il sistema di gestione di basi dei dati serve ad accedere e maneggiare grandi quantità di dati contenute in archivi e condivise tra molti utenti. Ad esempio: i sistemi di prenotazione, quelli che consentono la gestione dei conti correnti nelle banche, quelli per la gestione dei dati ambientali. Il software è in gran parte responsabile della gestione delle trasmissioni dati e delle reti di calcolatori. I canali di trasmissione trasportano segnali tipicamente elettrici, i protocolli di comunicazione garantiscono la trasmissione dei dati dai terminali all’elaboratore e viceversa o dei messaggi fra 2 elaboratori collegati in rete.
Ambiente di programmazione
È un insieme di strumenti che facilitano la scrittura dei programmi e la verifica della loro correttezza. L’editor serve per costruire programmi sorgente, scritti in un linguaggio di programmazione di alto livello. Il compilatore traduce il programma sorgente in un programma oggetto, eseguibile dall’elaboratore. Se vi sono errori viene informato sulla loro natura ed è aiutato nella loro correzione. L’interprete può sostituire il compilatore, eseguendo direttamente il codice sorgente senza tradurlo. Viene usato per i linguaggi di scripting, rivolti all’interazione diretta con l’utente. Nel caso di codici intermedi indipendenti dal linguaggio macchina, l’interprete che lo esegue, chiamato macchina virtuale, è in grado di raggiungere prestazioni maggiori rispetto ai comuni interpreti. Un problema applicativo può essere affrontato anche tramite programmi coordinati tra loro: un linker compone vari programmi oggetto in un unico programma eseguibile. Un controllore dell’esecuzione, debugger, serve per eliminare errori eventualmente presenti in un programma (anche quelli non rilevati dal compilatore).
Software di produttività personale
I software personali sono quelli che non richiedono di saper programmare e si adattano a funzioni tipiche della vita quotidiana. Sono: i sistemi di videoscrittura che consentono di costruire e dare un formato di stampa ai testi; le agende elettroniche; gli ipertesti che consentono di costruire strutture reticolari complesse, al cui interno vi sono pezzi di testo (WWW è ipermedia, estensione con audio, video e foto degli ipertesti); la posta elettronica che consente lo scambio di messaggi fra 2 qualsiasi utenti di sistemi informatici collegati tramite 1 o più reti di calcolatori. Tra i software di produttività personale: i fogli elettronici, che consentono analisi, gestione e presentazione di dati tramite diagrammi; i sistemi per la gestione di basi di dati; i browser che consentono l’accesso al Web e a tutte le app su Internet. Tutto è finalizzato alla semplicità di interazione con l’utente. Cloud computing: “Nuvole” che possono essere usate come ambienti di programmazione per sviluppare nuove app dai professionisti o da utenti che possono costruire e personalizzare il proprio corredo di applicazioni informatiche.
Applicazioni dell'informatica
L’informatica ha a che vedere con la rappresentazione e l’elaborazione delle informazioni e le sue applicazioni toccano molti ambiti dell’attività umana. La tecnologia multimediale ha consentito nuove applicazioni come gestire oltre ai testi anche rappresentazioni visive (3D), suoni e movimenti meccanici, con una coordinazione tale da sembrare prossimi alla realtà.
Le applicazioni numeriche
Rappresentano il punto di partenza del calcolo automatico. I problemi connessi con il calcolo numerico sono problemi di precisione nell’approssimazione e quindi tali applicazioni richiedono grande potenza di calcolo e hardware specializzato nell’elaborazione numerica. Non implicano particolari difficoltà nella realizzazione del software, poiché gli algoritmi da eseguire sono di facile concezione e formulazione.
Le applicazioni gestionali
Operano su grandi basi di dati realizzando sistemi informatici integrati in ambienti come banche, compagnie di trasporto, società telefoniche, ecc. Con l’automazione d’ufficio si è assistito allo sviluppo di servizi finalizzati a migliorare la qualità del lavoro e l’interazione interpersonale fra gli impiegati.
I servizi telematici
L’avvento delle fibre ottiche ha permesso la trasmissione di grandi quantità di informazioni ad elevata velocità. Per telematica si indica l’unione tra informatica e telecomunicazioni. Essa mette a disposizione molti servizi pubblici e la possibilità di distribuire qualsiasi applicazione in stazioni poste a distanze più o meno grandi. Esempi: sportelli bancari automatici, i servizi di prenotazione viaggi, il Telepass, Internet.
L'automazione industriale
La robotica è un’attività interdisciplinare che integra tecniche meccaniche, elettroniche ed informatiche. I robot per il movimento e per orientarsi eseguono sofisticati algoritmi. Nell’industria esiste un’attività di progettazione, rivolta alla costruzione di strumenti informatici: CAD, progettazione assistita dal calcolatore; CAM lavorazione assistita dal calcolatore.
Controllo di impianti industriali e applicazioni embedded
È il caso di centrali energetiche e degli impianti chimici, il cui controllo vede impiegati gli elaboratori. A volte i sistemi informatici sono sotto la supervisione umana (centrali nucleari), altre volte sono inglobati nel processo produttivo. Queste ultime applicazioni sono definite embedded perché la componente informatica della produzione non è visibile all’utente. Esempi: ABS dell’auto, elettrodomestici.
Realtà virtuale e interfacce utente avanzate
La realtà virtuale si riferisce all’uso del calcolatore finalizzato ad una rappresentazione simulata, ma realistica di uno scenario della vita reale (simulatori di volo, giochi). Altre applicazioni usano metodi e tecnologie simili alla realtà virtuale, ma sono finalizzate a rimodellare la realtà: ad esempio l’informatica può aiutare persone con disabilità a interagire con gli altri e con l’ambiente circostante fornendo interfacce multimediali. La nostra interazione col mondo ha luogo attraverso l’uso integrato e simultaneo dei nostri sensi. Per questo i migliori risultati nella simulazione della realtà si otterranno stimolando i sensi nel modo più realistico possibile. Tramite alcuni dispositivi indossabili si può generare nell’utente l’illusione di essere all’interno dell’ambiente simulato. La realtà aumentata consiste nella sovrapposizione di immagini generate dall’elaboratore e di immagini riprese dalla realtà, allo scopo di aggiungere informazioni a ciò che viene acquisito. Le interfacce gestuali consentono di controllare ed interagire con il calcolatore tramite i movimenti del proprio corpo: quelle basate sul tocco, Touch User Interface, che utilizzano touchscreen e quelle basate sul movimento nell’aria, free form, che si basano su dispositivi in grado di riconoscere la posizione del corpo dell’utente nello spazio. L’utente può inserire comandi eseguendo particolari movimenti a seconda che si tratti di TUI o free form, detti gesture. Egli agisce sul contenuto dello schermo senza dispositivi intermedi, in modo naturale ed intuitivo.
Informatica e disabilità
Sono state definite leggi e raccomandazioni tese a favorire l’accessibilità delle tecnologie dell’informazione alle persone con disabilità. La raccomandazione denominata WCAG2 contiene le seguenti specifiche:
- L’informazione deve essere facilmente percepibile
- L’interfaccia utente deve essere utilizzabile da ogni utente (operabile)
- L’informazione e l’interfaccia devono essere facili da capire ed usare (comprensibile)
- L’interfaccia utente deve poter essere usata tramite varie tecnologie assistive (robusto)
La legge Stanca del 9 Gennaio 2004, n.4 riprende tali specifiche.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Sunti di Informatica di base, Docente Luzzi, Libro consigliato Dispensa moodle
-
Sunti di Metrica - Docente Pasquini
-
Diritto tributario - schemi e sunti, prof. Messina
-
Procedura penale - Schemi e sunti, prof. Della Casa