Sistemi democratici
Classificato in Informatica
Scritto il in
italiano con una dimensione di 24,21 KB
LINGUAGGI DI PROGRAMMAZIONE
Linguaggio Macchina: Linguaggio formale che un computer è in grado di interpretare ed
eseguire senza mediazioni. I programmi sono rappresentati da una sequenza di cifre binarie
che codificano le istruzioni e i dati su cui lavora la CPU.
Linguaggio Assembler: Linguaggio in cui le singole istruzioni binarie sono rappresentate da
un codice mnemonico più facilmente comprensibile per l’uomo.
Linguaggio di Alto Livello: Linguaggi che utilizzano simboli matematici e parole tipiche delle
lingue naturali (soprattutto inglese) e sono di facile interpretazione.COME SVILUPPARE UN PROGRAMMA
-Fase di editing: consiste nello scrivere il testo del programma e nel memorizzarlo su
supporti di memoria permanenti.
-Sé il linguaggio è compilato: il programma viene compilato, cioè si utilizza un compilatore
che traduce automaticamente il programma scritto in un linguaggio di programmazione in un
programma equivalente scritto in linguaggio macchina; successivamente si esegue il
programma tradotto.
-Sé il linguaggio è interpretato: si utilizza un interprete che esegue direttamente il
programma.
UNITA’ DI CONTROLLO
L’Unità di controllo è la parte più importante del processore: esegue le istruzioni dei
programmi, coordina le attività del processore, controlla il flusso delle istruzioni tra il
processore e la memoria.
Svolge la sua attività in modo ciclico: preleva dalla memoria principale la “prossima”
istruzione da eseguire, preleva gli operandi specificati nell’istruzione, decodifica ed esegue
l’istruzione e poi ricomincia.
L’esecuzione comporta l’invio di comandi opportuni all’unità relativa:
-Calcoli →Unità aritmetico logica
-Lettura / Scrittura dati → Memoria
-Acquisizione / Stampa → Dispositivi di I/O
MACCHINA DI VON NEUMANN
L’architettura della maggior parte dei moderni elaboratori è basata sul modello della
macchina di Von Neumann (MdVN), ricercatore ungherese che per primo individuò una
struttura regolare comune per gli elaboratori elettronici.
Secondo tale architettura un sistema di calcolo è costituito da quattro elementi base:
1. Memoria: contiene le istruzioni e i dati necessari all’esecuzione di un programma.
2. Unità di elaborazione centrale: formata dai dispositivi elettronici che consentono di
acquisire, interpretare ed eseguire le singole istruzioni.
3. Periferiche: consentono lo scambio di informazioni tra l’elaboratore e l’esterno.
4. Bus di sistema: funge da collegamento fra i vari elementi funzionali.
Il processore estrae le istruzioni dalla memoria e le esegue.
Le istruzioni possono comportare operazioni di manipolazione dei dati oppure operazioni di
trasferimento dei dati.
I dati vengono trasferiti tra le diverse parti del computer tramite il bus di sistema.
Le fasi di elaborazione si susseguono in modo sincrono rispetto ad un orologio di sistema.
Durante ogni intervallo di tempo l’unità di controllo (parte del processore) stabilisce la
funzione da svolgere. L’intera macchina opera in maniera sequenziale.
ARCHITETTURA DELL’ELABORATORE
Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una
sua funzione:
-Elaborazione dati, Memorizzazione dati e Trasferimento dati
Per ogni funzione di base si possono prendere in considerazione quali componenti è in
grado di svolgerla.
Elaborazione dati = Processore (Central Processing Unit - CPU)
Memorizzazione dati = Memoria principale (o RAM) e Memoria secondaria (o di massa)
Trasferimento dati = Dispositivi di input/output
MEMORIA PRINCIPALE (RAM) (1/2)
RAM è l’acronimo di Random Access Memory e sta ad indicare che si può accedere
direttamente alle varie celle, una volta noto il loro indirizzo.
Insieme alla CPU forma l’Unità Centrale di un elaboratore, conserva i programmi e i dati
usati dalla CPU.
È una sequenza di celle nelle quali ad ogni cella è associato un indirizzo (un numero
progressivo a partire da 0, codificato in esadecimale), ogni calcolatore USA un numero di bit
costante per rappresentare gli indirizzi.
Maggiore è il numero di bit usati, maggiore sarà il numero di celle indirizzabili.
Tutte le celle hanno la stessa dimensione: 8, 16, 32, o 64 bit (si parla anche di word o
parole). Le operazioni che si eseguono sulla memoria sono operazioni di lettura e scrittura.
Una cella può contenere un dato o un’istruzione.
ALCUNE PROPRIETÀ DELLA RAM
La RAM è veloce per leggere/scrivere una cella e ci vuole un tempo di accesso dell’ordine di
poche decine di nanosecondi (millesimi di milionesimi di secondo = 10-9 sec.).
La RAM è volatile, è fatta di componenti elettronici quindi togliendo l’alimentazione si perde
tutto. La RAM è (relativamente) costosa.
MEMORIA DI SOLA LETTURA (ROM)
Ha caratteristiche generali simili alla RAM, ma con un tempo di accesso notevolmente
maggiore.
Si tratta di memoria permanente (non volatile), si utilizza per memorizzare quei dati e
programmi che servono al momento dell’accensione dell’elaboratore, prima del caricamento
del Sistema operativo (bootstrap).
MEMORIA CACHE
E’ il livello di memoria intermedio tra i registri e la RAM, memorizza i dati usati più spesso
senza doverli recuperare tutte le volte dalla RAM (che è più lenta).
Influisce moltissimo sulle prestazioni e sul costo della CPU (e quindi del computer).
In genere è interna al processore (cache L1). Esiste anche una cache secondaria (L2)
esterna al processore. È molto più costosa della RAM.
MEMORIA SECONDARIA (DI MASSA)
La memoria secondaria consente la memorizzazione permanente di grandi quantità di dati,
sfruttando fenomeni magnetici o ottici.
Esistono due principali tecnologie di memorizzazione:
-Magnetica: dischi magnetici (hard disk e floppy disk) e nastri magnetici;
-Ottica: CD-ROM e DVD.
La capacità della memoria di massa è generalmente molto superiore a quella della memoria
principale.
Il tempo di accesso ai dati è invece più elevato rispetto a quello della memoria principale.
Inoltre, non tutti i supporti di memoria secondaria permettono l’accesso diretto ai dati: alcuni
consentono solo un accesso sequenziale, come nel caso dei nastri magnetici.
DISPOSITIVI DI INPUT/OUTPUT
-Dispositivi di input per l’inserimento dell’informazione: Tastiera, Mouse, Scanner, Microfono,
Macchina fotografica e telecamera digitale.
-Dispositivi di output per la riproduzione dell’informazione: Stampante, Monitor e Casse
acustiche.
Consentono l’interazione uomo/macchina, servono a “comunicare” con il computer, si
collegano alle porte (o interfacce) del computer, ad alto livello le porte sono le “prese” cui si
connettono i dispositivi. Ne esistono di tipi diversi a seconda del tipo di collegamento e della
velocità di trasmissione.
SISTEMI OPERATIVI E SOFTWARE APPLICATIVI
SISTEMA OPERATIVO: Abbreviato comunemente con i termini SO oppure OS (operating
system) è un SOFTWARE DI BASE che ha il compito di gestire le risorse HARDWARE e
SOFTWARE di un computer.
Ovvero è il più importante software di un PC che permette di comunicare con quest’ultimo
senza saper parlare il LINGUAGGIO DEI COMPUTER.
Si posiziona a metà strada tra l’hardware e tutto il restante software applicativo del PC,
rappresentando un elemento fondamentale senza il quale ogni computer esistente
diventerebbe inutilizzabile.
FUNZIONI DEI SISTEMI OPERATIVI
Il SO fa parte del software di base, è costituito da un insieme di programmi che
interagiscono e cooperano per:
-gestire efficientemente l'elaboratore e le sue periferiche, cercando di sfruttare al massimo
tutte le componenti hardware.
-creare un ambiente amichevole per l'interazione uomo-macchina.
Il sistema operativo svolge una serie di funzioni, che possono essere raggruppate in 3 classi
principali:
-Esecuzione di programmi (gestione della memoria centrale e della CPU)
-Controllo del trasferimento dati da e verso le periferiche (gestione del bus)
-Gestione dei file (gestione della memoria di massa)
Inoltre altre funzioni che svolge sono:
-Avvio dell’elaboratore
-Gestione del processore processore e dei programmi in esecuzione
-Gestione della memoria principale
-Gestione della memoria secondaria
-Gestione dei dispositivi di input/output
-Gestione dei file
-Interazione con l’utente
CLASSIFICAZIONE DEI SISTEMI OPERATIVI
I sistemi operativi possono essere classificati in base al modo di gestire l’interazione con gli
utenti e al modo in cui gestiscono l’esecuzione dei programmi.
In base alle modalità di gestione dei programmi:
-Monoprogrammazione: un solo programma alla volta in memoria.
-Multiprogrammazione: più programmi presenti in memoria, apparentemente eseguiti
contemporaneamente, in realtà in time-sharing, suddividendo il tempo di esecuzione in
intervalli molto piccoli e assegnando a turno le risorse ai diversi programmi.
In base al tipo di accesso fornito agli utenti:
-Monoutente: un solo utente può usare la macchina
-Multiutente: più utenti contemporaneamente possono interagire con la stessa macchina
I sistemi operativi più recenti operano tutti in multiprogrammazione.
Windows nasce come sistema monoutente, anche sé le versioni più evolute (NT, 2000, XP)
hanno alcune funzioni che possono essere utilizzate in modo concorrente da più utenti.
PROGRAMMI APPLICATIVI
I programmi applicativi sono scritti in linguaggi di programmazione di alto livello e risentono
in misura ridotta delle caratteristiche dell’architettura del sistema su cui vengono eseguiti,
garantendo una buona portabilità.
Essi sono progettati per risolvere problemi specifici degli utenti, ad esempio:
● Word processor: programmi per l’elaborazione di testi;
● Fogli elettronici: strumenti per la gestione di tabelle, calcoli e grafici;
● Database: programmi per la gestione di archivi di dati;
● Suite (integrate): insiemi di applicativi progettati per funzionare in modo coordinato,
come sé fossero un’unica applicazione.
AMBIENTE DI PROGRAMMAZIONE
È l'insieme dei programmi che consentono la scrittura, la verifica e l'esecuzione di nuovi
programmi (fasi di sviluppo e testing del software).
Componenti:
-Editor → programma sorgente
-Traduttore → programma eseguibile
-Debugger → eliminazione errori logici
INTEGRATED DEVELOPMENT ENVIRONMENT (IDE)
Software che aiuta il programmatore nello sviluppo e debugging del codice sorgente di
un'applicazione, che raccoglie tools di sviluppo comuni sotto un'unica interfaccia grafica.
Uno strumento potente per un programmatore, che ne agevola e ne migliora il flusso di
lavoro.
EDITOR
Serve per scrivere il programma sorgente: uno o più file di testo contenenti la codifica di un
programma scritto in un linguaggio di alto livello.
Distingue automaticamente (diversi colori):
-le direttive al compilatore
-le altre parole chiavi del linguaggio
-le costanti
-i simboli definiti dall’utente
TRADUTTORE
In generale, e più in dettaglio, la traduzione del programma sorgente in un programma
eseguibile è effettuata dai 3 programmi eseguiti in sequenza:
-Compilatore → programma oggetto
-Linker → programma rilocabile
-Loader→ programma eseguibile
DEBUGGER
Traduzione dall’inglese: spulciatore. Consente di eseguire un programma passo-passo,
controllando via via quel che succede:
-watch window (valori delle variabili)
-function call stack
-disassembler window
-e anche modificare il flusso di esecuzione!
al fine di scoprire ed eliminare errori logici (run-time) non rilevabili dal compilatore.
INTERPRETE
Con i traduttori PRIMA si traduce tutto il programma e POI si esegue la versione tradotta.
Nel mondo reale, la traduzione può essere fatta anche in modo intercalato, frase per frase,
da una terza persona: l’interprete. Ciò è possibile anche nell’informatica grazie ai programmi
interprete (che operano sulle istruzioni anziché su frasi).
COMPILATORI E INTERPRETI
-Traduttori-compilatori: traducono l’intero programma (senza eseguirlo) e producono in
uscita il programma eseguibile.
-Traduttori-interpreti: traducono ed eseguono-immediatamente ogni singola istruzione del
programma sorgente.
L’esecuzione di un programma compilato è più veloce di quella di un programma
interpretato.
Rappresentazione della conoscenza
È un settore dell'intelligenza artificiale che si occupa di organizzare la conoscenza
(knowledge) per renderla utilizzabile da una macchina o da un sistema intelligente
automatico.
Non si deve intendere soltanto la conoscenza di base, le informazioni contenute nei manuali
e libri di testo, ma anche la conoscenza allargata maturata dalle persone tramite
l'esperienza.
Ogni schema di rappresentazione deve avere le 4 caratteristiche seguenti:
1. Adeguatezza: il metodo di rappresentazione deve essere adeguato a catturare tutta
la conoscenza.
2. Efficienza: ogni forma di rappresentazione deve essere minimalista.
3. Estensibilità: deve essere facile estendere la rappresentazione per includere
conoscenza.
4. Appropriatezza: lo schema di rappresentazione usato deve essere adatti al dominio
di conoscenza da rappresentare.
INTELLIGENZA A SCIAME
L'intelligenza a sciame (SI) è un tipo di intelligenza artificiale basata sul comportamento
collettivo di sistemi decentralizzati e auto-organizzati. I sistemi SI sono tipicamente costituiti da una popolazione di semplici agenti che
interagiscono localmente tra loro e con il loro ambiente.
Non esiste un controllo centralizzato. Le interazioni tra agenti portano all'emergere di comportamenti intelligenti globali.
-Composto da agenti discreti, ma il movimento complessivo sembra fluido.
-Semplice nel concetto, ma visivamente complesso.
-Disposti a caso, ma altamente sincronizzati.
-Sembra intenzionale, con controllo centralizzato, ma le prove suggeriscono che il
movimento di gruppo è dovuto solo al risultato aggregato di singoli agenti.
RICERCA INTELLIGENTE
Il problema classico di ricerca beneficia di 2 semplificazioni:
-Dominio di ricerca è un elenco lineare: A qualsiasi punto della ricerca, sé il target non si
trova, la scelta di dove procedere è vincolata.
-Cerchiamo una corrispondenza perfetta per cui il confronto del target con gli elementi
dell’elenco in una decisione binaria risulta: corrispondono o no.
La ricerca intelligente comporta l’applicazione dell’euristica per valutare le differenze tra lo
stato attuale e quello obiettivo e condurci ad un nuovo stato che riduca al minimo le
differenze e massimizzi il progresso verso l’obiettivo.
AGENTI INTELLIGENTI
Un agente intelligente è una forma di tecnologia software progettata per interagire in modo
collaborativo con un utente (assistente personale). L’assistente diventa sempre più utile all’aumentare della sua autonomia, mantenendosi
nell’ambito degli interessi dell’utente. L’agente intelligente quindi non si limiterà più ad attendere i comandi, ma inizierà a comunicare, svolgere azioni e compiti in autonomia, ma sempre in base alla esigenze e
preferenze dell’utente.
SISTEMI ESPERTI
Un sistema esperto è un programma per computer che rappresenta e ragiona con la
conoscenza di alcune materie specialistiche allo scopo di risolvere problemi o dare consigli.
I sistemi esperti hanno bisogno di un accesso efficiente a una base di conoscenza di
dominio sostanziale e di un meccanismo di ragionamento per applicare le conoscenze ai
problemi che vengono loro assegnati.
I sistemi esperti sono dei sistemi che realizzano un compito come lo farebbe un esperto
umano, e che possono spiegare il meccanismo di ragionamento impiegato.
CONVERSIONE ANALOGICA/DIGITALE
Il processo di digitalizzazione di un suono avviene attraverso tre fasi fondamentali:
-Campionamento
-quantizzazione
-codifica
CAMPIONAMENTO
La fase di campionamento consiste nell’ effettuare dei campionamenti sull'onda sonora (si
misura il valore dell’ampiezza dell’onda a intervalli costanti di tempo) e si codificano in forma
digitale le informazioni estratte da tali campionamenti.
Riducendo l’intervallo di tempo tra due campionamenti aumenta l’accuratezza della
descrizione del segnale. Una migliore qualità della descrizione del segnale corrisponde a un
maggior numero di campioni nell’unità di tempo e quindi a una maggiore quantità di
informazione. Un maggior numero di campioni richiede un maggiore spazio in memoria e
una superiore velocità di trasferimento dati.
QUANTIZZAZIONE
Assegna una sequenza di valori discreti per la descrizione di un segnale continuo. Tanti più
bit vengono usati, tanto più è accurata la descrizione. Più sono i gradini, minore sarà l’errore
di quantizzazione (o rumore).
METODI DI RAPPRESENTAZIONE
-Raster: Informazione grafica rappresentata come matrice di pixel. Come ogni altra informazione, un raster può essere memorizzato su un file.
Esistono diversi modi di memorizzare un’immagine raster, corrispondenti a diversi formati di
file di tipo immagine BMP, JPEG, GIF, TGA, TIFF,...
In un formato o nell’altro, fatte salve alcune differenze, si memorizza il colore di ciascun
pixel. -Viene fatta tramite periferiche di acquisizione (scanner, macchine fotografiche digitali).
-Consiste nel ricavare una matrice di punti colorati (raster) da un’immagine.
Stampata su un foglio (scanner) o "dal vivo" (macchina fotografica digitale)
-La risoluzione della scansione determina quanto precisamente l’immagine verrà ricostruita
e quanto grande sarà il file che la contiene.
-Vettoriale: Informazione grafica rappresentata da relazioni matematiche (funzioni che
descrivono luoghi di punti). Si USA per mantenere le proprietà intrinseche degli oggetti ossia quando si vuole conservare
la possibilità di ruotare, muovere, stirare, singoli oggetti all’interno di un disegno.
Non è memorizzato il colore dei pixel, ma una descrizione di alto livello (astratta), in un
particolare linguaggio degli oggetti che compongono l’immagine. Un’immagine vettoriale può essere ingrandita o rimpicciolita senza perdita di qualità. Si tratta
solo di manipolare equazioni, il che può essere fatto con precisione.
Esempio di quadrilatero: descrizione tramite 4 vertici, colore del contorno, spessore del
contorno, colore di riempimento. Rettangolo (30, 30, 100, 200, black, thin, red).
Un database è una raccolta di dati archiviati in formato digitale e organizzati in modo strutturato. Serve a conservare grandi quantità di informazioni e a renderle facilmente accessibili, modificabili e gestibili nel tempo. I dati all’interno di un database sono ordinati secondo regole precise, così da poter essere cercati e utilizzati rapidamente senza confusione o duplicazioni.
I database vengono utilizzati in moltissimi contesti: siti web, applicazioni, aziende, scuole e servizi online. Permettono a più utenti o programmi di lavorare sugli stessi dati in modo sicuro e controllato. Grazie ai database è possibile mantenere le informazioni aggiornate, proteggerle e garantire che siano coerenti e affidabili.
Il machine learning è un campo dell’informatica che studia sistemi capaci di apprendere dai dati. Un programma di machine learning non segue solo istruzioni fisse, ma analizza grandi quantità di informazioni per individuare schemi e relazioni, migliorando le proprie decisioni nel tempo.
Questo approccio permette ai computer di adattarsi a situazioni nuove e di svolgere compiti complessi, come il riconoscimento di immagini e voce, la traduzione automatica o la previsione di comportamenti. Il machine learning è oggi alla base di molte tecnologie moderne e consente alle macchine di ottenere risultati sempre più accurati grazie all’esperienza accumulata attraverso i dati.
Pixel, risoluzione e spazio dei colori sono concetti fondamentali per capire come funzionano le immagini digitali.
Un pixel (da picture element) è la più piccola unità che compone un’immagine digitale. Ogni immagine visualizzata su uno schermo è formata da una griglia di pixel; ciascun pixel ha una posizione precisa e contiene informazioni sul colore e sulla luminosità.
La risoluzione indica il numero totale di pixel che compongono un’immagine o uno schermo. Di solito si esprime come larghezza × altezza (per esempio 1920 × 1080). Più alta è la risoluzione, maggiore è il numero di pixel e quindi il livello di dettaglio dell’immagine. A parità di dimensioni fisiche, una risoluzione più alta produce immagini più nitide.
Lo spazio dei colori definisce come i colori dei pixel vengono rappresentati. Ogni pixel può assumere un colore in base a un modello matematico:
RGB (Rosso, Verde, Blu) è il più comune per schermi e immagini digitali
CMYK è usato nella stampa
altri spazi colore (come sRGB o Adobe RGB) stabiliscono l’ampiezza dei colori riproducibili
In pratica, il pixel è l’unità base dell’immagine, la risoluzione determina quanto è dettagliata, e lo spazio dei colori stabilisce quali e quanti colori ogni pixel può rappresentare.
Formati di immagine
JPEG (JPG) : Formato molto diffuso per fotografie. USA compressione con perdita di qualità, che riduce le dimensioni del file. Non supporta la trasparenza.
PNG: Mantiene alta qualità grazie alla compressione senza perdita. Supporta la trasparenza. Molto usato per loghi, icone e grafica.
GIF: Supporta animazioni semplici e trasparenza, ma ha una palette di colori limitata (256 colori). Usato per immagini animate brevi.
BMP: Formato non compresso o poco compresso. Qualità alta ma file molto grandi. Poco usato sul web.
TIFF: Usato in ambito professionale e di stampa. Qualità elevata, supporta più livelli di colore. File molto pesanti.
SVG: Formato vettoriale. Non è basato su pixel ma su forme matematiche, quindi può essere ingrandito senza perdita di qualità. Usato per loghi e grafica.
Formati di video
MP4 (MPEG-4): Il formato video più diffuso. Buon equilibrio tra qualità e dimensioni del file. Compatibile con quasi tutti i dispositivi.
AVI: Formato più vecchio. Qualità alta ma file molto grandi. Minore compressione.
MKV: Formato flessibile che può contenere più tracce audio, sottotitoli e capitoli. Usato spesso per video ad alta qualità.
MOV: Formato sviluppato da Apple. Alta qualità, usato soprattutto in ambito professionale e su dispositivi Apple.
WMV: Formato Microsoft. Buona compressione ma meno compatibile con altri sistemi.