Full Transcript

1.FONDAMENTI DI INFORMATICA Il termine «informatica» deriva dal francese informatique, coniato nel 1962 dal francese Philippe Dreyfus, è la contrazione dei termini information e automatique, è una disciplina tecnico-scientifica che si occupa della progettazione di tecniche e macchine in grado di tra...

1.FONDAMENTI DI INFORMATICA Il termine «informatica» deriva dal francese informatique, coniato nel 1962 dal francese Philippe Dreyfus, è la contrazione dei termini information e automatique, è una disciplina tecnico-scientifica che si occupa della progettazione di tecniche e macchine in grado di trattare ed elaborare l’informazione in modo automatico. La parola informatica viene usato in riferimento a tre cose tra loro distinte, seppur collegate: Informatica come un insieme di applicazioni e manufatti (i computer): È la percezione della persona comune: “conoscere l’informatica” significa “saper usare le applicazioni” (come, per esempio, usare un personal computer per scrivere testi, spedire messaggi di posta elettronica e navigare in internet). Informatica come una tecnologia che realizza quelle applicazioni: È la percezione del tecnico, del perito, dell’amatore (ciascuno al suo livello di competenza): “conoscere l’informatica” significa “saper realizzare le applicazioni”. Informatica come una disciplina scientifica che fonda e rende possibile quella tecnologia: È la percezione del laureato in informatica: “conoscere l’informatica” significa “saper vedere il contenuto computazionale della realtà e saperlo descrivere con un linguaggio (anche formale) appropriato”. L’informatica studia i procedimenti effettivi di elaborazione (e memorizzazione, trasmissione, ecc.) dell’informazione. Contribuisce alle scienze con concetti propri, quali la nozione di effettività, quella di complessità computazionale, quella di gerarchia di astrazione. Condivide con altre scienze lo studio delle tecniche risolutive di determinati problemi (il problem solving). Fare problem solving significa decomporre, ristrutturare, risolvere sottoproblemi e ricomporre, poi, le loro soluzioni. L’informatica mette a disposizione strumenti linguistici progettati affinché ciò sia possibile e, per quanto possibile, semplice. Inoltre, studia le somiglianze tra i problemi e le loro soluzioni, dando così gli strumenti per la costruzione di soluzioni efficienti e robuste. L’informatica opera su due livelli: Il livello logico-concettuale riguarda le teorie e i metodi dell’informatica. Parliamo quindi di Scienza dell’Informazione. In questo caso ci riferiamo alla parte concettuale della disciplina. I principali campi di interesse sono: Le strutture per la rappresentazione dei dati I metodi per la soluzione dei problemi con l’aiuto del calcolatore I linguaggi per dialogare con le macchine La produzione del software Il livello tecnologico riguarda gli aspetti fisici della disciplina. Parliamo di Scienza dei Calcolatori. In questo caso il focus risiede più sugli aspetti fisici della disciplina. I campi di interesse sono: Architetture delle macchine per elaborare le informazioni I processori, memorie, periferiche Le reti e l’interazione tra macchine a livello fisico: segnali, scambio dati, ecc. Negli anni il potenziale dei calcolatori si è notevolmente evoluto grazie a molteplici fattori: abbattimento dei costi di produzione, aumento di potenza di calcolo, fino alla convergenza tra la tecnologia dell’informazione e le telecomunicazioni. Questo ha dato vita ad una nuova disciplina denominata Information & Communication Technology (ICT) in cui rientrano la maggior parte delle tecnologie con cui abbiamo a che fare ogni giorno (dai computer agli smartphone). Dato e informazione sono spesso utilizzati come sinonimi, ma in realtà i due termini, dal punto di vista informatico, possiedono un significato differente. Esistono tre livelli che possiamo disporre in ordine crescente di astrazione. Il dato è rappresentato da un insieme di simboli tracciati su un supporto fisico. Disporre dei dati non comporta alcun vantaggio. Abbiamo una informazione quando mettiamo in relazione un dato con la proprietà a cui esso si riferisce. Possiamo parlare di conoscenza quando siamo in possesso di regole che ci permettono di trarre un vantaggio dalle informazioni. Dato un problema, un algoritmo è una sequenza di passi concepita per essere eseguita automaticamente da una macchina in modo da risolvere il problema dato. Un problema risolvibile mediante un algoritmo si dice computabile. Inoltre, può essere definito come una sequenza ordinata e finita di passi (azioni o istruzioni) che producono un ben determinato risultato in un tempo finito. Un algoritmo prevede l’esistenza di un esecutore, qualcuno o qualcosa che possa eseguire le istruzioni e deve essere formulato utilizzando un linguaggio comprensibile all’esecutore. Un algoritmo deve avere le seguenti caratteristiche: Azioni eseguibili e non ambigue: “abbastanza”, “a volontà” non sono espressioni ammissibili Determinismo: fatto un passo, il successivo è uno ed uno solo, ben determinato. Le alternative sono ammesse, ma la scelta deve essere univoca. Numero finito di passi. Terminazione NB: Numero finito di passi non implica terminazione. Un diagramma di flusso permette di descrivere in modo grafico le azioni che costituiscono un algoritmo nonché il loro flusso di esecuzione. I Blocchi rappresentano le azioni I connettori permettono di specificare in quale ordine vanno eseguite le azioni L’ordine di esecuzione delle istruzione avviene in base ai connettori. La posizione dei connettori determina il flusso di esecuzione La codifica che oggi conosciamo per rappresentare dati numerici è la notazione decimale posizionale. L’aggettivo decimale fa riferimento alla cardinalità (numero di simboli dell’alfabeto). L’aggettivo posizionale indica invece il fatto che ogni cifra assume un diverso ruolo in funzione della posizione. Ogni cifra è moltiplicata per una potenza del 10, diciamo quindi che 10 è la base (10 cifre, potenze di 10). Non tutti i sistemi sono basati sul sistema posizionale. Esistono sistemi di numerazione basati sul sistema additivo: la numerazione romana. I numeri possono essere rappresentati utilizzando un codifica binaria grazie a delle semplici conversioni. Tuttavia, sappiamo che i computer sono in grado di memorizzare ed elaborare informazioni differenti (testi, suoni, immagini, video). Le regole per la conversione di formato vengono chiamate codifiche. Una delle prime codifiche per i testi è l’ASCII (proposta da IBM), una codifica per la quale ogni carattere è rappresentato da 7bit. Successivamente venne introdotto l’ASCII esteso (8bit) che raddoppia il numero di caratteri da 128 a 256 avendo la possibilità di includere altre lettere in uso nei linguaggi naturali delle diverse regioni del mondo. In realtà esistono diverse versioni rilasciate dall’ISO: ISO 8859-1 (detto Latin1) che contiene i caratteri per l’Europa occidentale ISO 8859-2 che contiene i caratteri per l’Europa orientale ISO 8859-5 che contiene i caratteri cirillici Unicode è stato creato per risolvere i limiti dei tradizionali schemi di codifica dei caratteri. Ad esempio, sebbene i caratteri definiti nella ISO 8859-1 siano ampiamente utilizzati in paesi diversi, spesso si verificano incompatibilità tra paesi diversi. Molti metodi di codifica tradizionali hanno un problema comune, ovvero consentono ai computer di gestire un ambiente bilingue ma non possono supportare un ambiente multilingue allo stesso tempo. In termini di elaborazione testi, Unicode definisce un codice univoco (cioè un numero intero) per ogni carattere anziché un glifo. In altre parole, Unicode elabora i caratteri in modo astratto (cioè i numeri) e lascia il lavoro di deduzione visiva (come dimensione del carattere, forma dell'aspetto, forma del carattere, stile, ecc.) ad altri software, come la navigazione web o l'elaboratore di testi. Al momento, quasi tutti i sistemi informatici supportano l'alfabeto latino di base e ciascuno supporta diversi altri metodi di codifica. Per essere compatibili con loro, i primi 256 caratteri di Unicode sono riservati ai caratteri definiti da ISO 8859-1, in modo che la conversione delle lingue esistenti dell'Europa occidentale non richieda una considerazione speciale; e un gran numero degli stessi caratteri viene ripetuto in diversi Unicode era stato originariamente pensato come una codifica a 16 bit (quattro cifre esadecimali) che dava la possibilità di codificare 65.535 (216 − 1) caratteri. Ora invece lo standard Unicode prevede una codifica fino a 21 bit e supporta un repertorio di codici numerici che possono rappresentare circa un milione di caratteri. Emoticons è un blocco Unicode contenente emoticon. È costituito dagli 80 caratteri compresi nell'intervallo U+1F600 e U+1F64F che è stato introdotto con Unicode 6.0 nell’ottobre 2010. I glifi sono organizzati in base alla forma della bocca. La compressione dati indica la tecnica di elaborazione dati che, attuata a mezzo di opportuni algoritmi, permette la riduzione della quantità di bit necessari alla rappresentazione in forma digitale di una informazione. La compressione riduce le dimensioni di un file e quindi lo spazio necessario alla sua memorizzazione e riduce l’occupazione di banda necessaria in una generica trasmissione dati digitale. Dal momento che differenti quantità di dati possono essere usate per rappresentare la stessa quantità di informazione le rappresentazioni che contengono informazioni irrilevanti o ripetute contengono i cosiddetti dati ridondanti. Un algoritmo di compressione è una tecnica che elimina la ridondanza di informazione dai dati e consente un risparmio di memoria. La scelta dell’algoritmo di compressione è basata sul tipo di dati (Generico, Audio, Immagini, Video) e sul tipo di compressione: REVERSIBILE o lossless, cioè senza perdita di informazione IRREVERSIBILE o lossy, con eventuale perdita di informazione Si parla di compressione LOSSLESS quando i dati possono essere trasformati in modo da essere memorizzati con risparmio di memoria e successivamente ricostruiti perfettamente, senza errore e senza perdita di alcun bit di informazione. Tale tipo di compressione è ovviamente necessario per ridurre lo spazio occupato da documenti, programmi eseguibili, ecc. Parliamo di compressione LOSSY quando abbiamo una compressione dei dati che porta alla perdita di parte dell'informazione originale durante la fase di compressione. Decomprimendo un file compresso con un metodo LOSSY, la copia ottenuta sarà peggiore dell'originale per livello di precisione delle informazioni che codifica, ma in genere comunque abbastanza simile da non comportare perdita di informazioni irrinunciabili. Ciò è possibile poiché i metodi di compressione a perdita di informazioni in genere tendono a scartare le informazioni poco rilevanti, archiviando solo quelle essenziali. Esiste un limite teorico per la compressione senza perdita che viene fornito dal primo teorema di Shannon (che vedremo tra poco). I dati possono essere rappresentati senza perdere informazione (lossless) usando almeno un numero di bit pari a: N * E: Dove N è il numero di caratteri mentre E è l’entropia. Il teorema di Shannon ci dice qual è il limite ma non come trovarlo. David Huffman ha proposto un semplice algoritmo che permette di ottenere un dizionario (cioè una tabella carattere codifica binaria) per una compressione quasi ottimale dei dati cioè pari al limite di Shannon con un eccesso di al più qualche bit. Si tratta di codifica a lunghezza variabile che associa a simboli meno frequenti i codici più lunghi e a simboli più frequenti i codici più corti. Si tratta di una codifica in cui nessun codice è prefisso di altri codici. È una codifica ottimale perché tende al limite imposto dal teorema di Shannon. I sistemi digitali vengono spesso presentati come sinonimi di perfezione, ma la realtà è un po’ diversa. Analogico viene da analogo: il segnale analogico segue esattamente l'andamento della grandezza che rappresenta. Quindi può essere considerato inizialmente perfetto. Noi, con i nostri cinque sensi, interagiamo con l'ambiente circostante mediante segnali analogici. Nei segnali digitali tutto viene ridotto a una sequenza di 0 e 1. Una delle caratteristiche vantaggiose dei segnali digitali rispetto a quelli analogici è l'autorigenerazione. Senza entrare in dettagli tecnici, se i segnali digitali contengono errori al di sotto di una certa soglia, si autocorreggono. In un segnale digitale solo parzialmente deformato, proprio la limitazione ai soli valori 0 e 1, rende i bit ancora riconoscibili. In pratica se un dispositivo digitale riceve un segnale deformato (disegnato in alto) lo interpreta come se fosse privo di errori (segnale disegnato in basso). I vantaggi sono: basso costo dei circuiti digitali rispetto a quello dei circuiti analogici elaborazioni dei segnali, una volta trasformati in formato digitale, impossibili da realizzare con circuiti e tecniche analogiche formato digitale comune dei segnali analogici (voce, musica, video) con i dati originati dai calcolatori migliore immunità dei segnali digitali rispetto al rumore presente nei sistemi. Le forme d’onda analogiche sono più sensibili alle variazioni d’ampiezza, di frequenza e di fase rispetto alle forme d’onda digitali Un segnale analogico per poter essere elaborato da un calcolatore deve essere convertito in un opportuno formato digitale. Questo tipo di conversione si definisce come Analog to Digital Conversion (ADC). Il segnale analogico deve essere discretizzato per fare in modo che si possa dare una rappresentazione digitale. Gli ADC effettuano questa serie di operazioni: Campionamento Quantizzazione Codifica Dal teorema del campionamento si ricava che un segnale d’informazione continuo nel tempo può essere sostituito da campioni del segnale assunti ad intervalli regolari. Tale possibilità equivale ad affermare che non sia necessaria la conoscenza del segnale in ogni istante, come se nel segnale continuo vi fosse un eccesso d’informazione rispetto a quella strettamente necessaria. Per tanto è possibile descrivere un segnale analogico mediante un numero finito di valori, detti campioni del segnale, scelti con una opportuna ripetizione nel tempo (frequenza). Un segnale analogico, oltre ad essere discretizzato nel tempo, può essere discretizzato (o più comunemente quantizzato) anche nelle ampiezze senza perdere informazione o, per lo meno, con una perdita d’informazione trascurabile e controllabile. Il segnale in esempio è approssimato con il segnale quantizzato (rappresentato dal tratto continuo), con un numero di livelli d’ampiezza uguale a sei. Pertanto, se l’uscita del campionatore è inviata a un quantizzatore i campioni del segnale assumono, soltanto, un numero finito di ampiezze. In genere le frequenze di campionamento sono misurate al secondo, facendo riferimento ai kilohertz (kHz) o ai cicli al secondo. Di solito i CD sono registrati a 44,1 kHZ: questo vuol dire che vengono prelevati 44.100 campioni al secondo. La qualità finale del suono della registrazione non dipende solo dalla frequenza di campionamento, ma anche dalla profondità di bit. Di solito usiamo una quantizzazione a 16 bit. Quanto spazio mi serve per memorizzare un suono con queste caratteristiche: Frequenza di campionamento (in hertz, non in kilohertz) x Profondità del suono x Numero dei canali x Numero dei secondi = Bit totali I formati dei file audio WAV: formato più comune nei calcolatori. È un formato non compresso. MP3: è uno dei formati audio più diffusi, impiega una compressione del tipo lossy. È uno dei formati più efficienti in termini di spazio occupato, a parità di tempo occupa circa 1/10 della dimensione originale. FLAC: è un codec audio libero con compressione dati lossless, cioè senza perdita di qualità. A differenza delle codifiche lossy (come l'Ogg Vorbis, l'MP3 o l'AAC) questo tipo di compressione non rimuove informazioni dal flusso audio, risultando quindi adatto sia all'ascolto con lettori di musica digitale, sia all'archiviazione su memorie di massa. Il formato FLAC è attualmente supportato da una buona parte dei software audio. 2. ELABORAZIONE AUTOMATICA DELLE INFORMAZIONI: DALLE ORIGINI AI PC Fin dall'antichità l'uomo ha via via avuto sempre più importanti esigenze di calcolo per scopi come l'astronomia, disciplina legata da un verso a concezioni religiose o comunque spiritualiste, o per applicazioni estremamente pratiche come quelle per la navigazione marittima. A parte l'abaco, che è il più antico strumento di calcolo usato dall'uomo, le prime macchine costruite per effettuare operazioni di calcolo, tali che ad un variabile input dell'utente producessero un corrispondente output come effetto di un processo dei dati immessi determinato da una regola matematica o logica, sono riconducibili al XVII secolo. Una delle prime macchine per il calcolo, la pascalina, è riconducibile a Blaise Pascal (1623-1650). Lo strumento consente di addizionare e sottrarre numeri composti da un massimo di dodici cifre, operando automaticamente i riporti. Il telaio di Jacquard è stata l’invenzione più importante per il settore dell’industria tessile. Il dispositivo che viene applicato a un normale telaio e permette di muovere automaticamente i singoli fili di ordito. La sua caratteristica principale è la capacità di eseguire complessi disegni geometrici e multicolori. Il tutto a una velocità maggiore rispetto al metodo che veniva utilizzato in precedenza. La sua invenzione, infatti, si fonda su tre importanti novità: Utilizzo di aghi e di una carta forata che contiene il disegno Sostituzione della carta continua con cartoni legati tra di loro Sistemazione di un cilindro meccanico sopra al telaio Nell'800 l'inglese Charles Babbage (1791-1871), matematico e astronomo, contribuì in modo sostanziale all'automazione di calcoli con le macchine, inventando la macchina alle differenze e la macchina analitica, entrambe macchine a vapore. Questa si basava sul concetto di istruzioni comunicate attraverso cartoncini perforati, un anteprima del concetto di programma e di dati. Babbage estende questa funzione e la applica alla macchina analitica che perciò presenta l'idea di macchina programmabile e quella di informazione immagazzinata: entrambe queste funzioni sono realizzate con cartoncini perforati. L'ENIAC (Electronic Numerical Integrator and Computer) è stato il primo computer elettronico digitale di grandi dimensioni, costruito durante la Seconda Guerra Mondiale presso l'Università della Pennsylvania. Progettato principalmente per calcoli balistici, l'ENIAC è stato fondamentale per lo sviluppo della computazione moderna. L'ENIAC era enorme, occupava una stanza di circa 167 metri quadrati e pesava circa 30 tonnellate, era in grado di eseguire circa 5.000 operazioni al secondo. Le operazioni disponibili comprendevano addizioni, sottrazioni, moltiplicazioni e operazioni come la radice quadrata. Le istruzioni dovevano essere cablate manualmente attraverso i pannelli di connessione, un processo che richiedeva molte ore o addirittura giorni per ogni programma. L'architettura di von Neumann, chiamata così in onore del matematico e informatico John von Neumann, è un modello concettuale che definisce l'organizzazione di un computer digitale. Questo modello è diventato la base per la progettazione dei moderni computer di tipo general-purpose. Lo schema si basa su cinque componenti fondamentali: Unità elaborazione centrale (CPU) Unità di memoria Unità di input/output Bus di comunicazione L’unità di elaborazione centrale si compone di: Unità di Controllo (Control Unit): Questa unità controlla l'attività dell'intero sistema. Prende le istruzioni dal programma memorizzato nella memoria principale (RAM), le decodifica e coordina l'esecuzione delle operazioni richieste. In sostanza, dirige il flusso di dati tra la CPU, la memoria e gli altri dispositivi. Unità di Elaborazione Aritmetica e Logica (Arithmetic and Logic Unit, ALU): Questa unità esegue operazioni aritmetiche (come addizione, sottrazione, moltiplicazione e divisione) e operazioni logiche (come AND, OR, NOT) sui dati. È il cuore computazionale del sistema. ARCHITETTURA DI VON NEUMANN La memoria contiene sia i dati che le istruzioni che il computer deve eseguire. Nell'architettura di von Neumann, sia i dati che le istruzioni sono memorizzati nello stesso spazio di memoria, che è organizzato in una serie di celle di memoria numerate. Questo aspetto dell'architettura di von Neumann è noto come "stored-program concept" (concetto di programma memorizzato). Quando ci riferiamo alla memoria facciamo riferimento alla memoria primaria, utilizzata dalla CPU durante le elaborazioni. I Dispositivi di Input/Output (o periferiche), sotto il controllo e coordinamento del processore, consentono l’interazione tra il computer e l’utente (più in generale, l’interazione tra il computer e l’ambiente), in particolare consentono l’immissione dei dati all’interno del computer e la comunicazione all’esterno dei risultati ottenuti con l’elaborazione. Per unità di Input si intende un dispositivo che consente di immettere dei dati nel computer. Per unità di Output si intende un dispositivo che riceve dal sistema i risultati dell’elaborazione dei dati e li trasmette all’utente. Un aspetto fondamentale dell'architettura di von Neumann è che le istruzioni e i dati vengono trattati allo stesso modo dalla CPU, cioè sono rappresentati in binario e memorizzati nello stesso spazio di memoria. Questo significa che le istruzioni del programma possono essere modificate e interpretate come dati, consentendo al computer di eseguire operazioni come il caricamento di nuove istruzioni mentre è in esecuzione un programma. Bisogna comunque precisare che questa è una schematizzazione molto sintetica, sebbene molto potente ed espressiva: basti pensare che i moderni computer di uso comune sono progettati secondo l'architettura von Neumann. Attraverso i decenni degli anni 1960 e 1970 i computer in generale sono diventati più piccoli e veloci, cosa che ha portato ad alcune evoluzioni nella loro architettura. Ad esempio, l'I/O mappato in memoria consente ai dispositivi di ingresso e di uscita di essere trattati allo stesso modo della memoria. A volte è utilizzato un bus di sistema unico per fornire un sistema modulare con costi inferiori. PERSONAL COMPUTER Un personal computer è un qualsiasi computer che si presti all'utilizzo personale da parte dell'utente nell'uso quotidiano. Il termine personal computer nasce negli anni 80 quando vengono messi in commercio i primi computer per il grande pubblico. Infatti, precedentemente i calcolatori erano inaccessibili alla gente comune per via delle ingenti dimensioni e prezzo elevato, e venivano acquistati principalmente da ricercatori o grandi aziende. Attualmente col termine personal computer (PC) indicano i computer desktop e i computer laptop. Un PC, a livello hardware, è solitamente costruito secondo l'architettura di von Neumann. A livello software il PC fa uso di un sistema operativo che implementa nella l’interfaccia grafica e permette agli utenti di utilizzare i software e le periferiche. Sono diversi i componenti di un PC, innanzitutto possiamo separare tutto quello che sta nel case del computer (unità centrale) da quello che è collegato attraverso le porto di comunicazione (periferiche). Analizzeremo i principali componenti che sono nell’unità centrale che si trovano all’interno di un contenitore metallico che li protegge e li mette insieme. SCHEDA MADRE Ogni PC è dotato di una scheda madre (motherboard), una scheda elettronica che contiene tutti i circuiti che servono ad assicurare i collegamenti tra gli altri componenti del pc e le porte comunicazione (USB, Rete, HDMI, VGA, uscite audio). Nella scheda madre trovano alloggiamento le memorie, le schede di espansione, il microprocessore (CPU). Ogni mainboard è predisposta per poter ospitare particolari modelli di componenti, ad ogni evoluzione tecnologica sarà necessario cambiare la scheda madre perché i nuovi componenti avranno connettori differenti (e prestazioni!). LA CPU Un chip per computer è composto da un minuscolo wafer di materiale semiconduttore (silicio) con circuiti elettronici integrati. Contiene milioni di componenti elettronici microscopici chiamati transistor che trasmettono segnali di dati. I microprocessori combinavano l'intera CPU su un singolo chip IC, il che rese i computer più accessibili e portò allo sviluppo dei personal computer. Inizialmente, le CPU potevano gestire da 16 a 32 bit di dati alla volta. All'inizio degli anni 2000 sono apparse le CPU a 64 bit, che hanno consentito un indirizzamento della memoria più ampio e hanno supportato un'elaborazione dei dati più estesa. Con l'aumento della densità dei transistor, è diventato difficile aumentare ulteriormente le prestazioni della CPU single-core. I produttori di CPU hanno invece iniziato a utilizzare architetture di processori multicore per integrare più core in un singolo chip. La CPU si basa su un segnale clock per sincronizzare le sue operazioni interne. Il clock genera un impulso costante a una frequenza specifica e questi cicli di clock coordinano le operazioni della CPU. La velocità clock viene misurata in hertz (Hz) e determina quante istruzioni la CPU può eseguire al secondo. Le CPU moderne hanno velocità clock variabili, che si regolano in base al carico di lavoro per bilanciare prestazioni e consumo energetico. Per aumentare le performance negli anni precedenti si puntava maggiormente ad aumentare le frequenze di clock. Una volta che sono state raggiunte frequenze molto elevate è stato necessario trovare nuove strategie. Una CPU può avere uno o più core, ognuno dei quali è in grado di eseguire istruzioni in modo indipendente dagli altri core. Un core è una unità di elaborazione indipendente. I moderni processori possono avere un numero variabile di core, che possono essere organizzati in diverse configurazioni, come single-core, dual-core, quad-core, e così via. L'aggiunta di più core consente alla CPU di eseguire più operazioni in parallelo, migliorando le prestazioni complessive e la capacità di gestire carichi di lavoro multitasking, mantenendo consumi ridotti. Se guardate alle specifiche tecniche di una determinata CPU, v'imbatterete in molti numeri. Ecco cosa dovete guardare: Frequenza: misurata in gigahertz (GHz) o in megahertz (MHz), è velocità alla quale opera il chip; quindi, più alta è più veloce è. Le CPU moderne aumentano o riducono la loro frequenza in base all'operazione e alla loro temperatura quindi vedrete indicata una frequenza base (minima) e una turbo (massima). Core: si tratta dei "processori dentro al processore". Le CPU moderne offrono tra 2 e 32 core, con la maggior parte che ne contiene da quattro a otto. Ogni core è in grado di gestire le proprie operazioni. Thread: è il numero di processi indipendenti che un chip può gestire alla volta, e in teoria dovrebbe essere lo stesso numero dei core. Tuttavia, molti processori hanno capacità multithreading, che consentono a un singolo core di creare due thread. Più thread significa miglior multitasking e prestazioni migliorate con i software che sfruttano pesantemente i thread come gli editor e i transcoder video. MEMORIA CENTRALE (RAM) La RAM (Random Access Memory), o memoria ad accesso casuale, è una forma di memoria volatile utilizzata nei computer e in altri dispositivi elettronici. La RAM è fondamentale per il funzionamento del sistema informatico poiché memorizza temporaneamente i dati e le istruzioni che sono attualmente in uso dalla CPU. Il termine "accesso casuale" indica che i dati possono essere letti o scritti in qualsiasi posizione della memoria con la stessa rapidità, senza dover passare attraverso una sequenza ordinata. La RAM è volatile, il che significa che i dati memorizzati al suo interno vengono persi quando il computer viene spento o riavviato. Questo la distingue dalle memorie di massa, che mantengono i dati anche quando il dispositivo è spento. La RAM offre tempi di accesso molto più rapidi rispetto ai dispositivi di archiviazione non volatili come i dischi rigidi. Questo rende la RAM ideale per memorizzare temporaneamente i dati e le istruzioni che devono essere elaborati rapidamente dalla CPU. Le prestazioni della RAM possono essere valutate attraverso diversi parametri che riflettono la sua velocità, capacità e affidabilità. La velocità di clock della RAM indica la frequenza alla quale la memoria può trasferire i dati. È misurata in megahertz (MHz) o gigahertz (GHz). RAM con una velocità di clock più elevata tende ad essere più veloce nel trasferire i dati. La capacità totale della RAM è un fattore importante da considerare, specialmente per le applicazioni che richiedono grandi quantità di memoria. Una maggiore capacità consente al sistema di gestire più dati contemporaneamente, migliorando le prestazioni in scenari di multitasking o con applicazioni ad alto consumo di memoria. La tecnologia attuale ci offre principalmente due tipi di ram DDR3 e DDR4. Dove la seconda è una evoluzione della prima e porta con sé caratteristiche tecniche migliori. Le schede madri moderne dei PC hanno la possibilità di installare fino a quattro moduli di ram. L’espansione può avvenire anche in momenti successivi. MEMORIE DI MASSA Le memorie di massa sono dispositivi utilizzati per memorizzare dati su base permanente e sono comunemente utilizzate nei computer e in altri dispositivi elettronici per l'archiviazione di grandi quantità di informazioni. Queste memorie consentono di memorizzare dati anche quando il dispositivo è spento. In generale il costi di memorizzazione (costo per byte) è notevolmente inferiore rispetto alle memorie RAM a fronte di tempi di trasferimento nettamente più lunghi. Nei moderni PC possiamo trovare due tipologie di memorie di massa: Dischi rigidi (HDD, Hard Disk Drive) Unità a stato solido (SSD, Solid state drive) DISCHI RIGIDI HDD Gli HDD sono dispositivi di archiviazione magnetici che utilizzano dischi magnetici rotanti per memorizzare i dati. Gli HDD sono ampiamente utilizzati nei computer desktop, nei laptop e nei server per l'archiviazione di grandi quantità di dati a basso costo. Offrono solitamente capacità elevate, ma possono essere più lenti rispetto ad altre tecnologie di memorizzazione. Al cuore di un HDD ci sono uno o più dischi magnetici. Sopra e sotto ciascun disco ci sono delle testine di lettura/scrittura, che sono montate su un braccio mobile. Le testine possono leggere e scrivere i dati sulle superfici dei dischi in modo simile a come una puntina di un giradischi legge i dati da un vinile. I dischi all'interno di un HDD ruotano ad alta velocità su un asse centrale. Nel frattempo, l'attuatore posiziona le testine di lettura/scrittura sopra le posizioni desiderate sui dischi per accedere ai dati. DISCHI A STATO SOLIDO SSD Gli SSD sono dispositivi di archiviazione basati su memoria flash non volatile. Utilizzano chip di memoria flash per memorizzare i dati e offrono tempi di accesso più veloci e maggiore affidabilità rispetto agli HDD. In generale, gli SSD possono raggiungere velocità di lettura e scrittura sequenziali di oltre 500 MB/s fino a diversi GB/s. Su un disco HDD standard, la copia di un file di grandi dimensioni, come un film o un progetto grafico, avviene a una velocità relativamente bassa di 15-30 MB/s. DISCHI SSD NVMe C'è, però, una terza tecnologia da prendere in considerazione. L'NVMe è una interfaccia di comunicazione introdotta nel 2013 da un consorzio di aziende leader nel settore dei dischi SSD, tra le quali anche Intel, Samsung, Seagate e Dell. Questa interfaccia nasce per andare oltre i limiti dell'SSD, che non sono determinati dal disco stesso ma piuttosto dal suo collegamento alla scheda madre, che avviene di solito con interfaccia SATA. Nella sua versione SATA 3 ha una velocità massima teorica di trasferimento pari a 6 Gb/s, cioè 750 MB al secondo (visto che 1 Byte equivale a 8 bit di dati), che si traducono in un limite reale pari a circa 500 MB/s. Il collegamento NVMe è una via preferenziale, una sorta di corsia autostradale dedicata espressamente a far transitare i dati dei dischi SSD ad altissima velocità. Per evitare colli di bottiglia, l'NVMe si connette direttamente al bus PCIe (PCI Express), che è lo stesso bus usato dalla CPU per comunicare con la scheda video e altre periferiche che necessitano collegamenti ad altissime prestazioni. SCHEDA VIDEO (GPU) La scheda video, detta anche scheda grafica, è una delle componenti hardware fondamentali di ogni computer, sia fisso sia laptop. È responsabile dell'accelerazione grafica 3D e, grazie ai driver video, permette di trasformare i segnali elettrici inviati dal processore in segnali video poi visualizzati dalla periferica d'output (ovvero lo schermo). Rispetto al passato, però, oggi le schede video sono in grado di "pensare" da sé, generando autonomamente animazioni grafiche tridimensionali e bidimensionali, sgravando così il processore di tutti i complessi calcoli necessari per la gestione della grafica. Nel 1999 Nvidia è stata la prima azienda a commercializzare le GPU GeForce 256 a chip singolo. I primi due decenni del nuovo millennio hanno segnato un'epoca di grande crescita per le GPU, che hanno acquisito funzioni come ray tracing, mesh shading e tassellazione hardware. Ciò ha portato a prestazioni grafiche e di generazione di immagini sempre più avanzate. Solo nel 2007 Nvidia ha rilasciato CUDA, un livello software che rende disponibile l'elaborazione parallela sulla GPU. In questo periodo, divenne chiaro che le GPU erano molto efficaci nell'eseguire attività altamente specifiche. In particolare, si sono distinte in attività che richiedono una grande quantità di potenza di elaborazione per ottenere un risultato particolare. Oggi molti software che richiedo una elevata potenza di calcolo, come i software di video editing o di grafica 3D, posso beneficiare della potenza della GPU per distribuire il carico dell’elaborazione tra CPU e GPU. USCITE VIDEO A seconda della tipologia di scheda video, questa potrebbe avere una o più uscite video grazie alla quale collegare il computer ad un monitor, ad un televisore o anche ad un proiettore. Qui di seguito alcune tra le più note. VGA: è tra i collegamenti più vecchi. Si tratta di uno standard analogico ormai obsoleto, che puoi trovare soprattutto su monitor e schede video datate. È stato introdotto nel 1987 ed è stato utilizzato per molto tempo. È caratterizzato da 15 pin di connessione ed è sempre più raro. Quindi il VGA fornisce una qualità di immagine inferiore ed attualmente è in disuso. DVI: è stato introdotto nel 1999 ed è ancora utilizzato, anche se sta diventando ormai obsoleto. Su diverse schede video e monitor non viene più adoperato; infatti, si preferisce utilizzare degli standard superiori. DVI è un’interfaccia che trasferisce un segnale digitale, analogico o entrambi a seconda del modello, senza trasportare l’audio. HDMI: gestisce un segnale esclusivamente digitale. A differenza dei precedenti connettori, l’HDMI trasporta sia il segnale video che il segnale audio. È stata introdotta anche la versione 2.1, capace di raggiungere risoluzioni 10K a 120Hz. Le versioni più recenti dei cavi HDMI sono comunque compatibili con le versioni più datate DisplayPort: è uno degli ultimi standard rilasciati (2006), come l’HDMI trasporta segnali digitali ed è in grado di trasmettere video e audio. Rispetto ad HDMI ha una banda passante più ampia ed è meno soggetto alla degradazione in funzione alla lunghezza del cavo. ALTRE TIPOLOGIE DI ELABORATORI Le Workstation sono dei personal computer molto potenti, con avanzate prestazioni grafiche e di calcolo. Vengono utilizzati dai professionisti per la progettazione (CAD), la modellazione 3D, l’elaborazione dei filmati, l’elaborazione dei suoni e per la ricerca scientifica. Utilizzano processori di fascia alta con un elevato numero di core se paragonati ai processori destinati ai segmenti consumer. Esempio di configurazione: Intel Core i9 14900K da 18 core e 36 thread AMD Ryzen Threadripper Pro 5995WX da 64-core e 128 thread Oltre a processori con elevate capacità di calcolo parallelo spesso dono dotati di grandi quantitativi di memoria (64GB o 128GB). Una ulteriore differenza ricade anche sulla scelta del monitor, in quanto per queste tipologie di macchine spesso si utilizzano monitor ad alte prestazioni. Vengono utilizzati dispositivi con alta fedeltà cromatica e che supportano risoluzioni molto elevate (il 4K è uno standard su questo segmento), con tempi di risposta molto brevi ed elevate frequenze di aggiornamento. I Notebook (o Laptop) possono svolgere le stesse funzioni di un PC da tavolo, ma a parità di prestazioni risulta più costoso per la maggiore miniaturizzazione delle sue componenti. È un personal computer dotato di display, tastiera e alimentazione a batteria, tutto integrato nello stesso telaio in modo da permetterne un facile trasporto ed un uso in mobilità. Il suo costo relativamente elevato è determinato dai componenti elettronici che lo compongono: essi, anche se simili a quelli di un desktop, sono miniaturizzati e ottimizzati per un minore consumo di energia. Spesso possiamo trovare gli stessi processori disponibili per i PC desktop ma con frequenze limitate per avere consumi ridotti. Generalmente le periferiche integrate sono molto numerose (questo ovviamente caratterizza un prezzo maggiore del PC assieme alla potenza stessa), quali webcam, lettore di memory card, bluetooth, antenna Wi-Fi ecc. Negli ultimi anni sono sempre più diffusi i notebook dotati di periferiche di input touch che possono essere utilizzati come dei tablet. Le caratteristiche più qualificanti del portatile sono il peso e la l’autonomia. I supercomputer utilizzano più di un'unità di elaborazione centrale (CPU). Queste CPU sono raggruppate in nodi di calcolo, che comprendono un processore o un gruppo di processori, delle GPU e dei blocchi di memoria. Su larga scala, un supercomputer può contenere decine di migliaia di nodi. Grazie alle capacità di comunicazione di interconnessione, questi nodi possono collaborare alla risoluzione di un problema specifico. I nodi utilizzano le interconnessioni anche per comunicare con i sistemi di I/O, ad esempio data storage e rete. A causa del consumo energetico dei moderni supercomputer, i data center richiedono sistemi di raffreddamento e strutture adeguate a ospitare tutto. Questi sistemi vengono utilizzati per calcolo complessi come quelli per l’intelligenza artificiale, il machine learning e i big data. La potenza dei super computer viene misurata in operazioni in virgola mobile al secondo (FLOPS). I petaflop sono una misura della velocità di elaborazione di un computer, 1 petaflop può eseguire un quadrilione (1015) di flop. Leonardo è uno dei più potenti supercomputer al mondo. È destinato al calcolo per la ricerca e l’innovazione tecnologica, concepito e gestito dal Cineca. Il progetto per il sistema Leonardo è stato presentato dal Cineca in rappresentanza dell’Italia in accordo con il Ministero dell’Istruzione, dell’Università e della Ricerca, l’Istituto Nazionale di Fisica Nucleare (INFN) e la Scuola Internazionale Superiore di Studi Avanzati (SISSA) e approvato dalla Joint Undertaking Europea EuroHPC. Smartphone e tablet sono ormai entrati a far parte dei dispositivi con cui interagiamo quotidianamente. Negli anni sono state aggiunte sempre più funzionalità ai vari sistemi operativi tali da renderli equiparabili ad un PC. Oltre al costante sviluppo degli OS mobile anche l’hardware di questi dispositivi si è evoluto costantemente. I processori ormai offrono tutti chip con elevate frequenze di clock e multicore. Oltre ai processori anche le GPU dei dispositivi mobili si sono evolute costantemente ed oggi riescono ad offrire ottime prestazioni anche per elaborazioni 3D e software di grafica avanzata. Il grande vantaggio di questi dispositivi oltre a quello dell’elevata mobilità è quello di un grande numero di sensori non disponibili nei PC e nei laptop che oggi sono usati per creare applicazioni sempre più coinvolgenti dal punto di vista di interazione uomo-macchina. Accelerometro: Quando fu inserito per la prima volta in un device fu una rivoluzione per tutto il settore, permetteva all'utente di adattare l'orientamento dello smartphone a seconda delle proprie esigenze. Il sensore serve a misurare l'accelerazione del dispositivo rispetto alla caduta a terra e viene utilizzato principalmente per permettere al display di adattarsi all'inclinazione dello smartphone o per simulare il movimento in app di realtà aumentata. Giroscopio: serve a misurare l'inclinazione dello smartphone permettendo il funzionamento di applicazioni come Photo Sphere che necessitano di alcuni calcoli particolari. Inoltre, viene utilizzata anche per Google Sky Map per mostrare agli utenti le varie costellazioni, le stelle e i pianeti. Infine, è utilizzato anche per far funzionare le applicazioni del Google Cardboard per la realtà virtuale. Magnetometro: è un sensore che misura l'indice di forza magnetica: è utilizzato soprattutto in applicazioni come la Bussola. NFC: La tecnologia NFC (near field connection) rende possibile la comunicazione in prossimità, a patto che i dispositivi si trovino ad una distanza non superiore a 10 centimetri. La situazione più comune in cui può risultare utile la comunicazione tramite NFC è il trasferimento di file, come immagini, audio e documenti. La tecnologia NFC è molto utilizzata anche nei pagamenti tramite smartphone. HARDWARE VS SOFTWARE Per creare un sistema informatico funzionante, sia l’hardware che il software sono essenziali. I vari componenti dell’hardware forniscono la piattaforma per eseguire il software, mentre il software fornisce le istruzioni che fanno svolgere all’hardware le funzioni di quest’ultimo. Insieme, compongono un sistema informatico completo e funzionante. Con il termine hardware (si pronuncia arduèr, abbreviato con l’acronimo hw), che deriva dall’unione dei due termini inglesi hard, cioè duro o pesante, e ware, cioè componente o oggetto, si intende la parte fisica del computer (e di qualsiasi altro dispositivo elettronico), ovvero tutte quelle componenti del PC che è letteralmente possibile toccare con le proprie mani. Il termine software (si pronuncia softuèr, abbreviato con l’acronimo sw) deriva invece dall’unione dei due termini inglesi soft, ovvero morbido, e ware, ovvero componente o oggetto. È proprio quindi grazie al software che l’hardware utilizzato “prende vita”, infatti senza la parte del software non sarebbe mai possibile utilizzare un computer. Il software può essere suddiviso in due categorie principali: il software di sistema e il software applicativo: il software di sistema, come i sistemi operativi (ad esempio, Windows, Linux e Android), gestisce e controlla l’hardware del sistema informatico, garantendo il corretto funzionamento del computer; il software applicativo, invece, è l’insieme dei programmi che permettono all’utente di far svolgere al computer determinate funzioni. Esistono diversi esempi di software applicativo: i browser, i linguaggi di programmazione, e le applicazioni come Word o un software antivirus. I SISTEMI OPERATIVI Il Sistema Operativo è il software essenziale di un calcolatore, cioè quel software senza cui il calcolatore non può essere usato. È un insieme di funzioni di base che permettono di gestire tutte le risorse (hardware) del calcolatore: dispositivi principali di ingresso/uscita (tastiera, mouse, schermo) unità centrale (CPU) memoria esecuzione programmi gestione dei dischi altre periferiche Questo insieme di funzioni di base fornisce un'interfaccia verso l'hardware comune a tutti i programmi applicativi (es: il sistema di stampa) e direttamente utilizzabile dagli utenti (es: la gestione di file e directory). Esistono diverse tipologie di sistemi operativi, ma per semplificare possiamo dividerli in tre grandi categorie: Desktop: come Windows, MacOS e Linux, pensati per l'utilizzo su computer fissi e portatili. Mobile: come Android e iOS, progettati per dispositivi mobili come smartphone e tablet. Server: come Windows Server e Linux Server, ideati per gestire reti e servizi su larga scala. Le funzionalità principali di un sistema operativo includono: Gestione delle risorse hardware: l'OS si occupa di allocare e gestire le risorse del computer, come la memoria, il processore e i dispositivi di input/output. Gestione dei processi: l'OS controlla l'esecuzione dei programmi e delle applicazioni, garantendo che funzionino correttamente e senza interferenze. Interfaccia utente: l'OS fornisce un'interfaccia grafica o testuale che permette all'utente di interagire con il computer e i programmi installati. Avviare il computer e gestire l'avvio dei programmi. Allocare e gestire le risorse hardware e software. Gestire i processi e l'esecuzione dei programmi. Fornire un'interfaccia utente per interagire con il computer e i programmi. Gestire i dispositivi di input (come tastiera e mouse) e output (come monitor e stampanti). Organizzare e gestire i file e le cartelle sulle unità di memoria. Controllare la sicurezza e la protezione dei dati, limitando l'accesso a risorse e programmi sensibili. Gestire le connessioni di rete e la comunicazione tra computer e dispositivi. Il sistema operativo si trova installato sull'unità di memoria interna del tuo computer, come l'hard disk o un'unità a stato solido (SSD). Quando accendiamo il computer, il BIOS (Basic Input/Output System) legge le informazioni sull'OS dall'unità di memoria e avvia il processo di avvio del sistema operativo. Un sistema operativo è composto da diversi componenti e moduli che lavorano insieme per gestire il computer. Alcuni dei principali componenti di un OS includono: Kernel: è il cuore del sistema operativo e si occupa della gestione delle risorse hardware, dei processi e delle comunicazioni tra i vari componenti del sistema. Shell: è l'interfaccia tra l'utente e il kernel. Può essere testuale (come nel caso di una riga di comando) o grafica (come nel caso di un'interfaccia utente grafica, GUI). Driver: sono programmi che permettono al sistema operativo di comunicare e gestire i dispositivi hardware collegati al computer. Programmi di sistema: sono applicazioni che permettono all'utente di gestire e controllare il funzionamento del sistema operativo e del computer. Un'altra distinzione importante tra i sistemi operativi è quella tra software open source e proprietario. I sistemi operativi open source, come Linux, hanno il codice sorgente disponibile al pubblico, il che significa che chiunque può esaminarlo, modificarlo e distribuirne nuove versioni. Questo approccio favorisce la collaborazione e la condivisione delle conoscenze tra gli sviluppatori e gli utenti, portando a una maggiore flessibilità, sicurezza e personalizzazione del software. D'altra parte, i sistemi operativi proprietari, come Windows e MacOS, sono sviluppati e controllati da una singola azienda, che detiene i diritti sul codice sorgente e ne limita l'accesso. Questo approccio può offrire una maggiore stabilità e un'esperienza utente più uniforme, ma può anche essere meno flessibile e personalizzabile rispetto ai sistemi operativi open source. WINDOWS Windows è uno dei sistemi operativi per PC più diffusi al mondo. Sono passati più di 35 anni da quando Microsoft rivoluzionò l’informatica lanciando Windows 1.0. Da quel 20 novembre del 1985 si sono susseguite numerose versioni e interfacce utente che hanno accompagnato gli appassionati di computer. La Microsoft è l’azienda che sviluppa Windows (e tanti altri prodotti) creata da Bill Gates e Paul Allen il 4 aprile 1975. Oggi Microsoft è una delle più importanti al mondo nel settore, nonché una delle più grandi produttrici di software al mondo. Nella prima versione di Windows gli elementi grafici potevano essere controllati con il mouse ed era possibile tenere aperti più software contemporaneamente. Pur essendo un antenato delle attuali versioni, questa prima pubblicazione includeva elementi che ancora oggi vengono spesso utilizzati: menu a scorrimento, finestre di dialogo e strumenti intuitivi. La versione 1.0 dell'OS presentava ancora molti limiti e i problemi che avevano riguardato anche MS- DOS, ma la versione dell’OS segnò un decisivo passo verso il nuovo e rivoluzionario “volto” dei PC. In questo sistema operativo erano inclusi anche alcuni software preinstallati, tra cui Blocco note. Con Windows 2.0 (1987) arrivò un’altra rivoluzione, un ennesimo passo verso un sistema operativo più user-friendly: le icone sul desktop, che resero decisamente migliore l’esperienza degli utenti. Questa versione segnò il debutto anche di Word ed Excel. Successivamente arrivarono Windows 2.1, 3.0 (1990, con un’interfaccia utente migliore), 3.1 (con il mitico Campo minato) ed NT (che supportava il protocollo TCP/IP). Nel 1995 Microsoft lanciò ufficialmente Windows 95, una versione che rivoluzionò totalmente il sistema operativo. L’interfaccia utente venne ridisegnata, debuttò il tasto “Start” (ancora oggi presente) e gli utenti ebbero la possibilità di navigare su internet. Nel 1995 debuttò anche Internet Explorer (la chiusura del browser è fissata per il 15 giugno 2022), che consentì a chiunque di navigare online. Pochi anni dopo arrivò Windows 98, che offrì un evidente miglioramento delle prestazioni. I computer iniziarono a diventare i perfetti alleati degli studenti, lavoratori e appassionati di giochi: sono state introdotte numerose applicazioni e funzionalità (tra cui Outlook Express e Microsoft Chat). La versione Windows Me (Millennium Edition, 2000) rese evidente che i computer erano oramai diventati dei prodotti domestici: l’OS includeva Movie Maker e nuove versioni di Media Player e Internet Explorer. Me, una variante della precedente versione con una quantità maggiore di applicazioni, si concentrava proprio sull’intrattenimento e connettività. Presentata nel 2001 e supportata fino al 2014, Windows XP è stata una tra le versioni del sistema operativo più apprezzate dagli utenti. XP consentiva di accedere facilmente a diverse funzionalità, l’interfaccia utente era stata totalmente ridisegnata ed erano presenti software di facile utilizzo. Dopo un lungo sviluppo, Microsoft presentò, nel 2006, Windows Vista (con la shell grafica Aero), una tra le versioni più criticate (anche a causa dell'utilizzo elevato di risorse). L’OS presentava un’interfaccia utente totalmente rivisitata, diversi strumenti che accrescevano la sicurezza e il nuovo tasto Start. Pochi anni dopo, esattamente nel 2009, Microsoft riconquistò gli utenti con Windows 7. L’interfaccia utente estremamente curata e ordinata, le elevate prestazioni e un miglioramento nella gestione della memoria contribuirono al successo di questo OS. Windows 8 (uscito nel 2012) includeva una struttura totalmente rivisitata: il classico tasto Start è stato sostituito con una sezione a schermo intero da cui era possibile accedere alle applicazioni. Un design compatibile sia con i dispositivi touchscreen (come i tablet) che con i classici PC. Nel 2015 è arrivato Windows 10, con il tasto Start e diverse novità (tra cui Cortana e Microsoft Edge). L’OS, tra il 2015 e il 2020, è stato più volte aggiornato, introducendo tante piccole novità. L’interfaccia utente è estremamente curata, la barra delle applicazioni è stata ridisegnata e anche il Centro notifiche presenta diverse novità. MAC OS Il primo Sistema Operativo di Apple risale al 1984, diventando uno dei primi a introdurre il concetto di GUI (Graphic User Interface), che gradualmente conquisterà il mercato dell’informatica. La vera rivoluzione messa in piedi dall’azienda di Steve Jobs è stata proprio quella della GUI. Sviluppare un’interfaccia semplice, intuitiva ed esteticamente accattivante ha rappresentato una grande ispirazione anche per la concorrenza, portando allo sviluppo di tutti gli attuali Sistemi Operativi grafici. Il sistema MacOS è installato su tutti i computer prodotti da Apple, sia desktop che portatili. È compatibile esclusivamente con tali dispositivi, poiché realizzato specificatamente per un determinato tipo di hardware proprietario. Apple ha lavorato molto su questo “principio di esclusività”, per permettere l’utilizzo delle licenze solamente sui PC realizzati in prima persona dall’azienda stessa. Questa è una caratteristica molto importante, perché garantisce un’esperienza di utilizzo identica su tutti i dispositivi su cui è installata la medesima versione di MacOS. Quindi, indipendentemente dall’hardware o dal tipo di computer utilizzato, il Sistema Operativo avrà le stesse identiche performance per tutti gli utenti. A differenza di Windows, MacOS è basato sul sistema operativo Unix. Essendo basato su Unix, MacOS condivide molte somiglianze con Linux, come il supporto multiutente il pre-emptive multitasking (l'uso di meccanismi di interrupt che sospendono i processi correntemente in uso e invoca uno scheduler per determinare quale processo deve essere eseguito subito dopo) l'accesso al sistema tramite Terminale. Un’altra caratteristica che contraddistingue i sistemi operativi Apple è la quantità di software applicativo già presente nel sistema, un mac può definirsi pronto all’uso. Tutti i dispositivi Apple hanno infatti preinstallate una gamma di applicazioni gratuite per la produttività. Ecco le principali: Safari per navigare sul web Mail è il client e-mail di Apple Mappe è l'app per ottenere indicazioni stradali e informazioni sulle condizioni del traffico e sui trasporti pubblici. Messaggi permette di inviare messaggi audio e di testo. FaceTime permette di effettua chiamate video e audio, una vera e propria app per videochiamate gratuita e molto potente Musica è l'app per ascoltare contenuti audio. Consente di ascoltare la vostra libreria musicale e accedere al servizio di streaming Apple Music a pagamento Foto è il programma per vedere le immagini ed effettuare un leggero fotoritocco Anteprima è l'editor PDF di Apple, consente di modificare i PDF e anche aggiungere firme Numbers è la versione di Excel di Apple. Non è potente come il software per fogli di calcolo di Microsoft, ma per il budget di base e il monitoraggio delle entrate, dovrebbe essere sufficiente. Pages è la versione Apple di Word, molto utile e permette di esportare i documenti in Word o PDF Keynote è la versione di PowerPoint di Apple e nel complesso è un buon programma iMovie è l'editor video del Mac e consente di creare trailer o filmati e condividerli. Molto semplice da usare ma efficace GarageBand è uno studio di registrazione completo all'interno del Mac. Consente di creare clip musicali o registrarsi, e per quanto non paragonabile a Logic Pro è piuttosto completo Casa permette di controllare e automatizzare gli accessori compatibili con HomeKit TV la piattaforma di streaming video che vi consente di guardare programmi e film Libri la piattaforma per acquistare e leggere libri o audiolibri FILE SYSTEM Il filesystem è il componente del SO che si gestisce l'organizzazione logica delle informazioni memorizzate sui dispositivi di memoria secondaria, come il disco rigido, il CD o le memorie flash. La sua funzione consiste nel definire il modo in cui i dati vengono memorizzati, richiamati e organizzati all'interno del dispositivo di storage. Ogni file system ha caratteristiche proprie e spesso è legato a un determinato sistema operativo o dispositivo. Le funzioni principali del filesystem sono: fornire un meccanismo di identificazione univoco dei files implementare i meccanismi per accedere ai files realizzare metodi per il controllo d'accesso ai files allocare spazio su disco per la memorizzazione dei files de-allocare spazio su disco con l’operazione di cancellazione fornire un’interfaccia utente per la creazione, cancellazione, spostamento, ispezione di file e directory mascherare le caratteristiche fisiche dei dispositivi di memorizzazione e delle interfacce FAT (File Allocation Table), FAT16, FAT32 FAT è uno dei file system più semplici e datati. Fu inizialmente sviluppato per MS-DOS e ancora oggi viene utilizzato in molti dispositivi di storage rimovibili. Le due versioni principali di questo sistema sono FAT16 e FAT32. FAT utilizza una tabella di allocazione dei file per ricordare la posizione di file nel disco. Tuttavia, la mancanza di alcune funzioni avanzate, come le autorizzazioni dei file, lo rende poco adatto ai sistemi operativi moderni. FAT 16 fu introdotto nel 1987 con il sistema DOS 3.31 mentre FAT32 fece la sua comparsa nel 1996 con Windows 95. Vantaggi: Semplicità: la sua semplicità ne facilita l'implementazione e l'utilizzo, rendendolo adatto a dispositivi con limitate risorse o compatibilità. Ripristino dei dati: la struttura elementare dei file system FAT semplifica il recupero dei file in caso di danneggiamento o cancellazione accidentale dei dati. Compatibilità: è possibile eseguire letture e scritture in modo nativo dai sistemi operativi Windows, MacOS e Linux senza bisogno di software di terze parti. Svantaggi: Supporto limitato dei metadati: anche in exFAT mancano alcune funzioni avanzate presenti in altri file system, quali le autorizzazioni di sicurezza a livello di file o la crittografia a livello di file system. Frammentazione: al pari dei file system FAT, anche exFAT presentano problemi di frammentazione. Le operazioni di creazione, modifica e cancellazione dei file producono una frammentazione che nel tempo porta a un calo delle prestazioni. NTFS (New Technology File System) NTFS è il file system utilizzato dai sistemi operativi basati su Windows NT, comparsi sulla scena mondiale nel 1993 con Windows NT 3.1 e rappresentati oggi dalla loro versione più recente, Windows 11. Offre funzioni avanzate come le autorizzazioni dei file, la crittografia, la compressione. NTFS supporta file e partizioni di grandi dimensioni, dimostrandosi quindi adatto ai moderni dispositivi di storage. Tuttavia, ha una compatibilità limitata con i sistemi operativi diversi da Windows. Vantaggi: Sicurezza e autorizzazioni: NTFS offre uno modello di sicurezza affidabile con autorizzazioni a livello di file, consentendo di impostare permessi per ogni singolo file o cartella, tramite il controllo dei diritti di accesso assegnati a utenti e gruppi. Svantaggi: Errori dei dischi e riparazioni: sebbene NTFS sia stato progettato per garantire affidabilità è comunque possibile che si verifichino errori del disco. In questi casi, la riparazione di NTFS può richiedere tempo e strumenti speciali. Frammentazione: nel corso del tempo, anche i file system NTFS possono produrre frammentazione in seguito alla creazione, modifica e cancellazione dei file. La frammentazione può causare un calo di prestazioni dal momento che il sistema è costretto ad accedere a frammenti di file sparsi. APFS (Apple File System) APFS è un file system sviluppato da Apple per MacOS, iOS e altri dispositivi Apple. È stato progettato per ottimizzare le prestazioni e la compatibilità con l'hardware e il software di Apple. APFS offre funzioni come la clonazione, la crittografia a livello di file e un significativo miglioramento delle prestazioni nei drive a stato solido. È stato introdotto con MacOS 10.13 nel 2017. Vantaggi: Prestazioni elevate: APFS offre prestazioni più elevate rispetto al suo predecessore, l'HFS+, grazie all'utilizzo di tecniche come la copia su scrittura, la condivisione dello spazio e la gestione ottimizzata dei metadati per migliorare la velocità di lettura e scrittura. Sicurezza dei dati: APFS è dotato di funzioni per la protezione dei dati, come le verifiche di integrità dei metadati e dei contenuti dei file, che aiutano a prevenire e rilevare eventuali fenomeni di corruzione dei dati. Inoltre, il supporto della crittografia nativa consente agli utenti di crittografare i propri dati a livello di file system, migliorando così la sicurezza e proteggendo le informazioni sensibili. Svantaggi: Supporto software di terze parti: alcuni software o utility di terze parti meno recenti potrebbero non supportare perfettamente o riscontrare delle limitazioni nelle unità formattate con APFS. Pertanto, prima di adottare questo file system, è opportuno assicurarsi che il software e gli strumenti che si è soliti utilizzare siano compatibili con APFS. Non è possibile eseguire letture o scritture in APFS da un PC Windows senza l'uso di un software di terze parti. GESTIONE DEI FILE In informatica col termine file (traducibile dall'inglese come "archivio") si intende un insieme di dati digitali memorizzati su un supporto di memoria di massa (es. il disco di un computer o una chiavetta usb) e dotati di un nome. Un file, a seconda dei casi, può contenere un programma eseguibile, un'immagine, un documento di testo, una registrazione audio, un video e molte altre cose ancora. Semplificando un po', possiamo affermare che in un computer tutto ciò che viene salvato su un disco è un file. Nei sistemi operativi moderni, i file sono organizzati in cartelle (o directory o folder). La suddivisione di un hard disk (o di un altro supporto di memoria di massa) in cartelle può essere graficamente rappresentata con una struttura detta ad albero. In tale rappresentazione la cartella principale (quella che corrisponde all'intero disco e detta anche root) in Windows viene indicata con la lettera assegnata al disco seguita dal simbolo di backslash (es. C:\) e posta in cima alla struttura (si tratta in realtà di un albero rovesciato!) Il nome da solo non è sufficiente per identificare un file, dal momento che su un dato disco potrebbero esserci due o più file (e anche cartelle) con lo stesso nome. Per esempio, nella struttura del nostro esempio, ci sono due file con lo stesso nome xyz. Per identificare univocamente un file occorre specificarne il percorso (o path). Il percorso è la successione di cartelle e sottocartelle che, partendo dalla cartella root, giunge fino al file stesso. Il percorso. In Windows il percorso di un file viene scritto usando il simbolo backslash \ come separatore fra cartelle e sottocartelle. I due file di nome xyz del nostro esempio hanno i seguenti due percorsi diversi: C:\win\prog\xyz e C:\data\my\xyz. Una importante differenza è tra vari sistemi operativi nella gestione dei file è la sensibilità ai caratteri maiuscoli e minuscoli. Nei sistemi case sensitive Abc è diverso da abc!!! Nei sistemi operativi Windows l'estensione di un file (filename extension) è un suffisso, ovvero una breve sequenza di caratteri alfanumerici (tipicamente tre), posto alla fine del nome di un file e separato dalla parte precedente con un punto. Un esempio è gatto.jpg dove gatto è il nome del file e jpg la sua estensione. L'estensione serve al sistema operativo per riconoscere il tipo di contenuto del file (testo, musica, immagine...) e aprirlo, di conseguenza, con la corrispondente applicazione. Il funzionamento delle estensioni è molto semplice. Windows associa ad ogni estensione riconosciuta un programma predefinito (per esempio all'estensione.txt potrebbe essere associato il Blocco Note e all'estensione.jpg il Visualizzatore Immagini). Quando facciamo doppio click per aprire un file con una certa estensione, Windows avvia automaticamente il programma associato. SOFTWARE APPLICATIVO I software applicativi sono programmi informatici che vengono utilizzati per svolgere specifiche attività o funzioni su computer, dispositivi mobili e altri dispositivi elettronici. Essi rappresentano una parte essenziale del panorama digitale moderno, offrendo strumenti e soluzioni per semplificare e migliorare una vasta gamma di attività personali e professionali. Questi programmi sono progettati per rispondere alle esigenze degli utenti, offrendo funzionalità specifiche che consentono loro di svolgere compiti in modo più efficiente ed efficace. Rispondono alle necessità del caso sia grazie a una facilità d’uso, che permette anche a chi non è addetto ai lavori di utilizzarli per la propria professione, e anche per la loro possibilità di personalizzazione. I software applicativi possono essere sia applicazioni desktop che applicazioni web o mobili. Le applicazioni desktop vengono installate direttamente su un computer o su un dispositivo elettronico e possono funzionare anche offline. Le applicazioni web, invece, sono accessibili tramite un browser web e richiedono una connessione Internet. Le applicazioni mobili, invece, sono progettate specificamente per dispositivi mobili come smartphone e tablet. Vediamo degli esempi di software applicativo: Sul fronte della produttività e office automation troviamo: Elaborazione testi: Microsoft Word, LibreOffice Writer, Google Docs Fogli di calcolo: Microsoft Excel, LibreOffice Calc, Google Sheets Presentazioni: Microsoft PowerPoint, LibreOffice Impress, Google Slides Posta elettronica: Microsoft Outlook, Mozilla Thunderbird, Gmail Gestione calendari: Microsoft Outlook, Google Calendar Note e attività: Microsoft OneNote, Evernote, Google Keep Browser web: Google Chrome, Mozilla Firefox, Microsoft Edge Per fare grafica e multimedia: Fotoritocco: Adobe Photoshop, GIMP, PhotoScape Creazione di immagini: Adobe Illustrator, Inkscape, Vectr Editing video: Adobe Premiere Pro, DaVinci Resolve, iMovie Riproduzione musicale: iTunes, Spotify, VLC Media Player. Anche su internet esistono software applicativi: Client di messaggistica: WhatsApp, Telegram, Skype; Social media: Facebook, Twitter, Instagram. Altri possono essere gli antivirus, i software di compressione file, quelli di contabilità e fatturazione, di gestione del magazzino e i CRM. SOFTWARE MALIGNI: MALWARE Il termine "Malware" deriva dalla combinazione delle parole "malicious" e "software", e fa riferimento a qualsiasi programma informatico che mira a danneggiare il funzionamento e la sicurezza di un sistema operativo. Questi programmi si diffondono principalmente attraverso Internet, spesso tramite e-mail o semplice navigazione web. Tra le diverse varianti di malware, troviamo virus, trojan horse, keylogger, worm e backdoor. I tipi più comuni di malware rientrano in diverse categorie. Un virus è un software allegato a un documento o file che, una volta scaricato, può diffondersi come virus informatico su vari sistemi, come i dispositivi mobili. Un worm è un software dannoso che spesso si auto-replica e si diffonde su tutti i dispositivi all'interno di una rete, senza la necessità di un programma host per distribuirlo. I trojan horse spesso creano una backdoor o una capacità di accesso remoto apparendo come programmi software legittimi ed eseguono funzioni dannose una volta che sono stati installati su un sistema. Lo spyware raccoglie dati e informazioni sensibili sul computer e sull'attività di un utente a sua insaputa. L'adware monitora la cronologia del browser e dei download di un utente, consentendo agli inserzionisti di fornire annunci pubblicitari mirati all'utente con maggiore precisione. Il malware Keylogger tiene traccia di tutto ciò che un utente fa su un computer, inclusi tasti premuti, pagine web aperte, e-mail inviate e altro. Il rootkit è un tipo di malware che concede a un autore di attacchi l'autorizzazione su un sistema per controllarlo e potenzialmente bloccare le attività del software antivirus o del software di sicurezza. MALWARE: IL RANSOWARE E CRYPTOLOCKER Uno dei malware più pericolosi e conosciuti è rappresentato dal Ransomware (significato derivante dall’inglese “ransom”, riscatto). Si tratta di una tipologia di software malevolo che blocca l'accesso a un computer criptando i dati in esso contenuti, con l'obiettivo di ottenere un riscatto dalla vittima, per poter accedere nuovamente ai propri dati, riscatto che se non pagato come richiesto dai criminali entro il tempo concesso può portare alla perdita definitiva dei dati. CryptoLocker è un trojan comparso nel tardo 2013, perfezionato poi nel maggio 2017. Questo malware è una forma di ransomware infettante i sistemi Windows e che consiste nel criptare i dati della vittima, richiedendo un pagamento per la decriptazione. Il software, quindi, informa l'utente di aver cifrato i file e richiede un pagamento con un voucher anonimo e prepagato. Il pagamento deve essere eseguito in 72 o 100 ore, o altrimenti la chiave privata viene cancellata definitivamente e "mai nessuno potrà ripristinare i file". Il pagamento del riscatto dovrebbe consentire all'utente di scaricare un software di decifratura con la chiave privata dell'utente già precaricata. 3.IMMAGINI DIGITALI Possiamo rappresentare un immagine mediante una funzione bidimensionale f (x, y); x e y sono le coordinate spaziali, ed f (x, y) è proporzionale alla luce incidente nell’oggetto e anche a quella riflessa. Quindi f (x, y) = i (x, y) r (x, y); dove i è la luce incidente e r quella riflessa. In teoria il valore di f (x, y) è un numero reale, ma per produrre una immagine digitale abbiamo bisogno di valori discreti. Questo passaggio dal continuo al discreto è fatto mediante le operazioni di campionamento e di quantizzazione. GRAFICA VETTORIALE VS RASTER I formati vettoriali rappresentano le immagini mediante linee o forma geometriche memorizzate tramite una formule matematiche. Nella grafica vettoriale un’immagine è descritta mediante un insieme di primitive geometriche che definiscono punti, linee, curve e poligoni ai quali possono essere attribuiti colori e anche sfumature. I principali vantaggi della grafica vettoriale rispetto alla grafica raster sono: la possibilità di esprimere i dati in una forma direttamente comprensibile ad un essere umano (es. lo standard SVG); la possibilità di esprimere i dati in un formato che occupi (molto) meno spazio rispetto all’equivalente raster; la possibilità di ingrandire l’immagine arbitrariamente, senza che si verifichi una perdita di risoluzione dell’immagine stessa. Il programma di editing grafico più noto e utilizzato per lavorare con la grafica vettoriale è Adobe Illustrator. Il formato di salvataggio standard di Adobe Illustrator è AI ed è compatibile con gli altri programmi di casa Adobe, come Photoshop e inDesign, e anche con alcuni programmi di grafica 3D. Di seguito sono riportati i formati vettoriali più comuni: AI: Formato di salvataggio standard di Adobe Illustrator EPS: Encapsulated PostScript è un formato standard per l’elaborazione di immagini e disegni vettoriali o bitmap SVG: Formato di immagine per la grafica vettoriale. Letteralmente significa Scalable Vector Graphics ed è ottenibile mediante Illustrator PDF: Formato sviluppato da Adobe, è il più diffuso per condividere documenti di testo ed immagini. Per la visualizzazione è necessario un lettore specifico come ad esempio Adobe Acrobat Reader Per alcuni usi specifici è possibile trasformare una immagine raster in una vettoriale tramite una tecnica chiamata vettorializzazione. Questo può essere utile quando abbiamo un logo in formato raster (di piccole dimensioni) e dobbiamo utilizzarlo su supporti grafici per la stampa di grandi dimensioni, come ad esempio un banner o un roll-up. Le immagini raster sono formate da una griglia finita di punti, ogni punto prende il nome di pixel. Più pixel contiene l’immagine più questa sarà dettagliata e definita. Il formato raster è quello utilizzato per rappresentare le fotografie digitali. Le immagini di tipo raster possono essere create tramite programmi di grafica come Photoshop oppure possono essere acquisite tramite dei sensori presenti negli scanner o macchine fotografiche digitali. Quando la luce colpisce un oggetto, una parte viene assorbita ed una parte viene riflessa. Quella che viene riflessa, da origine al colore percepito. Per creare una immagine digitale, è essenziale che tale luce riflessa sia catturata da un sensore ed elaborata. I SENSORI L’energia che colpisce il sensore è trasformata in impulso elettrico dal sensore che è fatto di un materiale particolarmente sensibile alla luce. Tale impulso elettrico è successivamente digitalizzato. Negli scanner i sensori sono disposti lungo una linea. Nelle macchine fotografiche i sensori compongono una griglia. Il numero di celle per area di esposizione è un parametro di qualità della fotocamera misurato in Megapixel. FORMAZIONE DEL COLORE Lo spettro visibile, in fisica, è quella parte dello spettro elettromagnetico che cade tra il rosso e il violetto includendo tutti i colori percepibili dall'occhio umano che danno vita, dunque, al fenomeno della luce, come ad esempio la gamma di colori che si osserva quando della luce bianca viene dispersa per mezzo di un prisma. La lunghezza d'onda della luce visibile nell'aria va indicativamente dai 380 ai 750 nm. L’occhio umano percepisce come colore di un oggetto quella luce che l’oggetto stesso riflette. Se un oggetto riflette tutte le lunghezze d’onda luminosa, allora l’oggetto sarà percepito come bianco. Un oggetto che riflette le lunghezze d’onda da 500 a 570 nm ed assorbe tutto il resto, sarà percepito come di colore verde. L’OCCHIO Nella retina ci sono tre tipi di coni: TIPO S: sensibili alle lunghezze d’onda corte (short, colori bluastri) TIPO M: mensibili alle lunghezze d’onda medie (middle, colori verdastri) TIPO L: lensibili alle lunghezze d’onda lunghe (long, colori rossastri) Tutti i primati hanno questi tre tipi di cellule retinali. Come conseguenza del funzionamento dell’occhio, lo spettro di una radiazione elettromagnetica si riduce a tre valori, gli stimoli dei tre tipi di coni, in base all’intensità di tale radiazione nelle tre zone di sensibilità dei coni. L’uomo è in grado di distinguere circa 350.000 colori, ma ciascuno di essi può corrispondere a più spettri diversi, che stimolano allo stesso modo i coni. Tale fenomeno, chiamato metamerismo, è alla base della teoria del tristimolo: combinando tre colori primari (rosso, verde, e blu), generati da dei fasci luminosi, dei quali viene variata la potenza, si può creare l’impressione di un’infinità di colori. SINTESI ADDITIVA E SOTTRATTIVA Quando si mescolano delle luci colorate primarie (rosso, verde, blu), si ottengono i colori secondari (giallo, magenta, ciano) mediante un processo di sintesi additiva. Con sintesi additiva ci riferiamo ai colori primari prodotti dalla luce. Mescolando delle tinte (pigmenti primari), si generano i colori secondari attraverso un processo di sintesi sottrattiva. Ciò avviene perché ciascun pigmento assorbe determinate lunghezze d’onda, sottraendole dalla radiazione riflessa. Con sintesi sottrattiva invece, ci riferiamo ai colori primari dei pigmenti che sono la caratteristica primaria della materia. Ogni materia da noi conosciuta, ogni superficie, ogni oggetto, assorbono in maniera selettiva solo alcune lunghezze d’onda della luce e a sua volta ne riflette altre. In particolare, un pigmento primario è definito come un pigmento che assorbe una luce primaria e riflette le altre due. SISTEMA ADDITIVO RGB Nel sistema additivo RGB (Red, Green, Blue), i colori primari sono: rosso verde blu Componendo due colori primari, si ottengono i colori secondari: ciano = verde + blu, magenta = rosso + blu, giallo = rosso + verde. Componendo, infine, tutti e tre i colori primari, si ottiene il bianco. È per questo motivo che tutto ciò che viene utilizzato su monitor, tv, ipad etc. va creato in RGB (sintesi additiva) essendo tutti questi apparecchi mezzi che producono luce. Il modello RGB può essere rappresentato come un cubo nello spazio cartesiano tridimensionale: I tre colori primari sono posti sugli assi Il valore massimo su ciascun asse può essere 1 (in forma normalizzata) o, ad esempio, 255 (se ciascuna componente di un colore viene codificata con 8 bit). I punti appartenenti al cubo sono tutti i colori che possono essere rappresentati All’origine si trova il nero, mentre al vertice esterno è situato il bianco. Sulla diagonale tra nero e bianco si ha la gamma dei grigi, che sono infatti i punti con proiezioni uguali sui tre assi (cioè con coordinate R = G = B). Inoltre, l’intensità di un colore corrisponde alla sua proiezione su questa diagonale. SINTESI SOTTRATTIVA CMY Nel sistema sottrattivo CMY (Cyan, Magenta, Yellow), usato per coloranti, inchiostri, pigmenti, ecc., i colori primari sono: ciano = bianco − rosso magenta = bianco − verde giallo = bianco − blu Essi corrispondono ai secondari della sintesi additiva, perché sono colori attribuibili a pigmenti che trattengono un primario RGB, e riflettono gli altri due. Combinando due colori primari, si ottengono i colori secondari, che corrispondono ai primari additivi (“bloccando” due luci primarie, ne rimane solo una): rosso = bianco − verde − blu, cioè magenta e giallo verde = bianco − rosso − blu, cioè ciano e giallo blu = bianco − rosso − verde, cioè ciano e magenta Infine, componendo tutti e tre i colori primari, si ricava il nero. Tutto quello che viene stampato, per avere un risultato ottimale, deve essere prodotto in CMYK (sintesi sottrattiva) perché la stampa avviene attraverso il mescolare dei pigmenti. COLOR FILTER ARRAY I sensori visti in precedenza reagiscono con un segnale elettrico ad uno stimolo luminoso senza tenere in considerazione particolari lunghezze d’onda. Per registrare una particolare lunghezza d’onda abbiamo necessità di un filtro. Poiché ogni cella memorizzerà solo un colore per volta e non una terna, occorre scegliere qual è il modello di memorizzazione ottimale (CFA). I due colori mancanti per completare la terna saranno ottenuti per interpolazione dai pixel vicini (Color Interpolation). CODIFICA DELLE IMMAGINI Un’immagine a colori codificata in RGB consiste di tre piani immagine, ciascuno dei quali descrive una delle tre componenti. Il numero di bit usato per rappresentare ogni pixel nello spazio RGB è detto profondità colore. Ad esempio, se si usano 8 bit per rappresentare ciascuna delle tre componenti, il pixel ha una profondità di 24 bit, e il numero di colori distinti rappresentabili nell’immagine è (28)3 = 16.777.219 (sedici milioni di colori). Il colore può anche essere rappresentato usando solo 8 bit per pixel, mediante una tabella (look-up table), chiamata colormap, che associa ciascun valore di 8 bit a un colore. I vantaggi sono: un risparmio di memoria, perché (a parità di numero di pixel) una codifica a 8 bit occupa meno spazio di una a 24 bit la possibilità di sperimentare diversi assegnamenti di colori, cambiando semplicemente la colormap ma, in compenso si possono rappresentare solo 256 colori distinti il formato si complica, perché diventa necessario memorizzare anche la colormap, e accedere a essa ogni volta che si visualizza/elabora l’immagine. FORMATI PER LE IMMAGINI DIGITALI: JPEG Il formato JPEG (o JPG, acronimo di Joint Photographic Expert Group) è il formato immagine più utilizzato poiché garantisce immagini dalla qualità visiva inappuntabile e l'alto livello di compressione (il che si traduce in immagini che occupano poco spazio sull'hard disk o sul supporto di memoria). I file JPEG supportano il colore fino a 24 bit e usano la compressione con perdita di dati per ridurre le dimensioni delle immagini e renderle più facili da archiviare e inviare. Se da un lato sono più pratici da usare tutti i giorni, dall’altro sacrificano in parte la qualità dell’immagine originale. È buona norma, comunque, non salvare ripetutamente un file utilizzando l'algoritmo di compressione JPG: la qualità dell'immagine degraderà velocemente, rendendo la foto o l'illustrazione completamente inutilizzabile. FORMATI PER LE IMMAGINI DIGITALI: GIF GIF sta per Graphics Interchange Format. È un formato di file raster progettato per immagini relativamente semplici che appaiono principalmente su Internet. Ogni file supporta fino a 8 bit per pixel e può contenere 256 colori indicizzati. I file GIF consentono anche di combinare immagini o fotogrammi, creando animazioni di base. I limiti di colore delle GIF contribuiscono a mantenere relativamente ridotte le dimensioni dei file, rendendoli più veloci da caricare sulle pagine web. Il formato di file GIF supporta solo una palette di 256 colori; quindi, le immagini possono avere una bassa risoluzione o apparire leggermente sfocate. Le GIF animate spopolano su siti web e social media. I file GIF contengono una serie di immagini correlate che creano un effetto flip-book e danno l’impressione di un breve video, ma non hanno contenuti audio e tendono ad avere una bassa risoluzione. FORMATI PER LE IMMAGINI DIGITALI: PNG PNG è un formato compresso senza perdita di dati. Questo è diverso dai formati come JPEG, che perdono alcuni bit di dati di ordine inferiore per ridurre le dimensioni dei file. La compressione è comunque buona quando l'immagine è costituita da pezzi di colore solidi. Le immagini fotografiche e i disegni con sfumature di colore delicate non beneficiano della compressione PNG. L’algoritmo di compressione è "Deflate" (utilizza gli alberi di huffman). I PNG sono l’evoluzione del formato GIF, che esisteva già da otto anni quando i PNG sono stati lanciati. I file GIF presentavano diversi inconvenienti: oltre a richiedere una licenza di brevetto, supportavano una palette limitata a soli 256 colori. Il formato PNG supporta diversi modelli di colore: Colore indicizzato. Ogni pixel è un indice della tavolozza dei colori. La dimensione massima dei pixel è di 8 bit, quindi possono essere presenti fino a 256 colori. Il colore indicizzato produce file molto piccoli quando l'immagine necessita solo di pochi colori. Scala di grigi. Ogni pixel contiene un singolo valore di colore, che rappresenta una tonalità di grigio. La dimensione massima disponibile per i pixel è di 16 bit. Colore RGB. Ogni pixel contiene tre valori di 8 o 16 bit ciascuno, che rappresentano rispettivamente un valore di rosso, verde e blu. A un'immagine in scala di grigi o RGB può essere associato un canale alfa. Il valore alfa di ciascun pixel non rappresenta un colore, ma un grado di trasparenza. QUALITA’ DELLE IMMAGINI DIGITALI E STAMPA Le Immagini raster sono composte da quadratini chiamati pixel. Le dimensioni sono definite da un numero di pixel in larghezza e altezza (es: 6016 x 4016 pixel). La definizione dell’immagine maggiore all'aumentare del numero di pixel. La risoluzione indica la densità di pixel in un'immagine, espressa in PPI (Pixel Per Inch). Maggiore è il numero di PPI, maggiore è la qualità dell'immagine stampata. Non influenza la dimensione del file immagine, ma solo quella della stampa. DPI (Dots Per Inch) è un termine improprio spesso usato al posto di PPI. Indica i punti d'inchiostro stampati dalla stampante e non è direttamente correlato alla qualità dell'immagine. La risoluzione di stampa determina la dimensione finale dell'immagine stampata. Aumentando la risoluzione, l'immagine stampata diventa più piccola. Per stampe di alta qualità, si consiglia una risoluzione di 300 PPI. DPI della stampante limita la risoluzione di stampa: in genere non supera i 300 PPI. Il Ricampionamento serve a ridurre il numero di pixel può diminuire la dimensione del file e la qualità dell'immagine. Esempio: Un'immagine da 6016 x 4016 pixel stampata a 300 PPI ha dimensioni di 51 x 34 cm. Per ottenere una stampa 30 x 20 cm, è necessario ridurre il numero di pixel a 3543 x 2365 pixel. * La risoluzione dell'immagine è importante anche per la visualizzazione su schermi digitali, ma in questo caso si utilizza il termine PPI (Pixel Per Inch). * Esistono altri fattori che influenzano la qualità di un'immagine stampata, come il tipo di carta e la qualità della stampante. 4. I DATABASE In informatica, un’attività molto importante consiste nella modellazione dei dati. Modellare i dati significa costruire una rappresentazione semplificata della realtà osservata o di un problema, individuandone gli elementi caratterizzanti ed i legami intercorrenti tra essi. I database sono degli strumenti molto potenti che ci permettono di immagazzinare e mantenere grandi quantità di informazioni e offrono strumenti per la manipolazione dei dati: inserimento, modifica, cancellazione; e per la ricerca. Grazie alle funzionalità di ricerca abbiamo la possibilità di estrare conoscenza dalle nostre informazioni DATI STRUTTURATI VS DATI NON STRUTTURATI I dati strutturati sono dati che utilizzano un formato predefinito e previsto. Questo può provenire da molte fonti diverse, ma il fattore comune è che i campi sono fissi, così come il modo in cui vengono memorizzati (da qui, strutturati). Questo modello di dati predeterminato agevola l'inserimento, l'esecuzione di query e l'analisi. I dati non strutturati mancano di una definizione. Anziché i campi predefiniti in un formato mirato, i dati non strutturati possono avere tutte le forme e le dimensioni. I dati non strutturati sono più comunemente disponibili (ulteriori informazioni) e i campi potrebbero non avere lo stesso carattere o limiti di spazio dei dati strutturati. Data la vasta gamma di formati che comprendono dati non strutturati, non sorprende che questo tipo di dati costituisca in genere circa l'80% dei dati di un'organizzazione. LA PROGETTAZIONE DI UN MODELLO DATI Livello concettuale: rappresenta la realtà dei dati e le relazioni intercorrenti tra essi; lo si visualizza per mezzo di uno schema. Livello logico: rappresenta il modo attraverso il quale i dati sono organizzati negli archivi elettronici; descrive la composizione ed il formato dei dati nel loro aspetto digitale. Il livello logico viene derivato dal livello concettuale applicando alcune semplici regole di trasformazione. Livello fisico: rappresenta l’effettiva installazione degli archivi elettronici; esso indica l’ubicazione dei dati nelle memorie di massa (dischi). MODELLO ENTITA’/ASSOCIAZIONI Si tratta di uno strumento per analizzare le caratteristiche di una qualsiasi realtà. Il modello Entità/Associazioni si avvale di una rappresentazione grafica, detta schema E/R, che mette in evidenza gli aspetti fondamentali del modello concettuale. Gli schemi E/R risultano di facile comprensione anche per le persone che non sono specialisti di informatica. Gli elementi di un modello Entità/Associazioni sono: le entità, le associazioni e gli attributi. Entità: L’entity set, è un oggetto concreto o astratto, rilevante per il sistema informativo, che ha un significato anche quando viene considerato in modo isolato ed è di interesse per la realtà che si vuole modellare. Graficamente un entity set viene rappresentato con un rettangolo, contenente il nome all’interno”. L’associazione (in inglese relationship) è un legame che stabilisce un’interazione tra le entità. L’associazione è identificata, in genere, mediante un verbo. Viene rappresentata mediante un rombo che collega le due entità. Gli attributi rappresentano le proprietà delle entità e delle associazioni. Le caratteristiche di ogni attributo sono il formato (testo, numero intero, numero a virgola, mobile, data/ora, ecc.), la dimensione (50, 100, ecc.) e l’opzionalità (cioè se si tratta di un dato obbligatorio oppure no). Gli attributi saranno rappresentati con dei pallini, collegati alla rispettiva entità mediante un arco o un segmento di retta. CARDINALITA’ DELLE ASSOCIAZIONI Associazione uno a uno o biunivoca (1:1): Ad una istanza dell’entità Persona corrisponde un’istanza dell’entità Carta d’identità e viceversa; Associazione uno a molti (1: N): Ad una istanza dell’entità Persona possono corrispondere una o più istanze dell’entità Automobile, ma ad una istanza dell’entità Automobile corrisponde una sola istanza dell’entità Persona; Associazione molti a molti (N:M): Ad una istanza dell’entità Scuola corrispondono più istanze dell’entità Insegnante e ad una istanza dell’entità Insegnante possono corrispondere più istanze dell’entità. CHIAVE PRIMARIA Per quanto riguarda la necessità del concetto di chiave primaria, si può osservare che è necessario caratterizzare in modo univoco le singole istanze di un’entità, individuando uno o più attributi i cui valori consentano di reperire una ed una sola istanza di un’entità. Informalmente, per “chiave primaria” si intende un sottoinsieme dei suoi attributi che identifica univocamente ogni istanza dell’entità stessa. Fissato il valore della chiave primaria deve essere individuata, al massimo, una sola istanza dell’entità. Si indica con il termine chiave primaria (primary key) un insieme minimale di attributi che permettono di distinguere tra loro le istanze di una stessa entità. I DATABASE RELAZIONALI Un database relazionale è un tipo di database di archiviazione che fornisce accesso a data points correlati tra loro. I database relazionali sono basati sul modello relazionale, un modo intuitivo e diretto di rappresentare i dati nelle tabelle. In un database relazionale ogni riga della tabella è un record con un ID univoco chiamato chiave. Le colonne della tabella contengono gli attributi dei dati e ogni record di solito ha un valore per ogni attributo, rendendo facile stabilire le relazioni tra i data points. PROGETTARE UN DATABASE Il modello relazionale presuppone il riconoscimento dei tipi di legame, cioè la natura delle associazioni, che collegano le diverse entità del fenomeno che si intende rappresentare. Costruire un database relazionale significa quindi: individuare i dati elementari; identificare le entità (che diverranno le tabelle); individuare, per ogni entità, la chiave; scoprirne le relazioni; creare un modello della realtà che faccia riferimento alle entità individuate ed alle loro relazioni. DAL MODELLO CONCETTUALE AL MODELLO LOGICO Nel modello logico le entità corrispondono a tabelle. Le tabelle si possono rappresentare per mezzo di griglie in cui ogni colonna, detta anche campo, corrisponde ad un attributo dell’entità di partenza e ogni riga, detta anche record, corrisponde ad un’istanza della suddetta entità. Entità => Tabelle Attributi => Campi Istanze => Righe tabella (record) CREAZIONE DEL DATABASE Prima di creare le tabelle del nostro progetto ed iniziare ad inserire i dati dobbiamo creare un luogo virtuale in grado di raccogliere i nostri dati, ovvero il database. Per creare il database abbiamo bisogno di un software denominato phpMyAdmin. Questo software fa parte della famiglia dei DBMS (Database Management System). phpMyAdmin è un software gratuito offerto di default da tutti i principali fornitori di hosting. Possiamo installarlo anche sulla nostra macchina utilizzando la suite XAMPP che di fatto trasformerà la nostra macchina in un server web locale. Esso ci fornisce un’interfaccia grafica da cui è possibile eseguire le operazioni di gestione del database, come: creazione del DB, creazione delle tabelle, aggiunta dei campi, inserimento dei dati, ecc; senza preoccuparti della scrittura delle query in linguaggio SQL. DALLE ENTITA’ ALLE TABELLE Partiamo dalla nostra entità Contribuente. Il primo passo è aprire l’interfaccia di creazione della tabella ed indicare il nome ed il numero di campi della tabella. Il numero di campi è uguale al numero di attributi. Riportiamo nella colonna nome il nome di tutti nostri attributi, successivamente usiamo il menù a tendina per impostare il tipo dell’attributo. Tramite questa interfaccia dobbiamo specificare anche quale dei nostri attributi è opzionale o no e chi ha il ruolo di chiave primaria. I tipi di attributi: INT: un numero intero di 4 byte VARCHAR: valore utilizzato per memorizzare le stringhe. È necessario specificare la lunghezza. TEXT: utilizzato per memorizzare testi molto lunghi. DATE: utilizzato per memorizzare una data nel formato YYYY-MM-DD. DOUBLE: utilizzato per memorizzare numeri con la virgola. BOOLEAN: tipo per memorizzare valori di tipo vero o falso. TIMESTAMP: utilizzato per memorizzare una data e ora nel formato YYYY-MM-DD HH: ii: ss. CHAR: stringa di lunghezza massima 255 caratteri. Dopo aver salvato la tabella phpMyAdmin ci mostrerà la sua struttura. Ogni riga corrisponde ad un attributo, con le seguenti informazioni: # id del campo Nome del campo Tipo selezionato in fase di creazione con la relativa lunghezza Chiave primaria indicata con un simbolo rappresentante una chiave d’oro accanto al campo selezionato come chiave primaria Tramite questa interfaccia è anche possibile aggiungere un campo ad una tabella, eliminarne uno o effettuare una modifica nel caso in cui abbiamo commesso un errore. L’inserimento dei dati all’interno della tabella è possibile tramite due modalità: tramite interfaccia utente o tramite codice SQL. L’interfaccia utente offre un modo semplificato agli esseri umani, per le operazioni automatiche invece, quelle tramite linguaggio server PHP utilizzeremo il codice SQL. L’aggiornamento dei dati, come avviene per l’inserimento, è possibile tramite le due modalità: tramite interfaccia utente o tramite codice SQL. Dopo che abbiamo visto come creare le tabelle a partire dalle nostre entità veniamo adesso alla definizione delle associazioni (relazioni) tra tabelle. Ricordiamoci che abbiamo 3 tipi di associazioni: 1:1, 1: N, N: M. Nel caso delle associazioni 1:1 le due entità verranno raggruppate in una sola tabella. Nel caso delle associazioni 1: N la chiave primaria della tabella con cardinalità 1 verrà inserita all’interno della tabella con cardinalità N come chiave esterna. Nel caso delle associazioni N:M si dovrà creare una terza tabella che conterrà le chiavi primarie delle tabelle che stiamo associando (e che diventeranno chiave primaria della nuova tabella) e gli eventuali attributi dell’associazione. Passiamo adesso alla creazione di un’associazione tra due tabelle del nostro database. Creiamo una nuova tabella dedicata ai versamenti. Tra Contribuente e Versamento stabiliamo una relazione di tipo 1: N. Per inserire il vincolo associativo utilizziamo l’interfaccia grafica di phpMyAdmin. Selezioniamo la tabella versamento e andiamo in modalità struttura e poi relazioni. Tramite il box sottostante possiamo inserire il vincolo referenziale. Una volta completata l’associazione possiamo trovare il simbolo di chiave esterna accanto al campo relativo al codice fiscale del contribuente che abbiamo individuato come chiave esterna. Il termine query viene utilizzato per indicare l'interrogazione da parte di un utente di un database, strutturato tipicamente secondo il modello relazionale, per compiere determinate operazioni sui dati (selezione, inserimento, cancellazione dati, aggiornamento ecc.). Le query relative all’estrazione dati: per fare questa operazione abbiamo bisogno di una query di selezione, grazie alla quale è possibile estrarre i dati da una o più tabelle e visualizzarli in una nuova tabella. La query di selezione viene richiamata usando la parola chiave SELECT, vengono forniti poi i campi da estrare, la tabella su cui agire e delle condizioni che ci permetteranno di filtrare le righe. La query select segue questa sintassi: SELECT attributo1, attributo2, ecc FROM nome della tabella WHERE 1 Questa query preleverà tutti i dati presenti senza applicare nessun filtro. Per filtrare le righe dobbiamo riempire la clausola WHERE. Ecco alcuni filtri: attributo = ‘valore’ (altre opzioni:!=) attributo > valore (altre opzioni: =,

Use Quizgecko on...
Browser
Browser