Scarica Introduzione all'informatica: Astrazione, Algoritmi, Reti e Bit e più Sintesi del corso in PDF di Fondamenti di informatica solo su Docsity!
FONDAMENTI DI INFORMATICA
COS’È
Scienza che studia l’elaborazione delle informazioni e le sue applicazioni; più precisamente l’informatica si occupa della rappresentazione, dell’organizzazione e del trattamento automatico della informazione. “Computer Science” as “the mechanization of Abstraction” problema che vogliamo risolvere utilizzando strumenti (calcolatore, computer). Dobbiamo partire dal problema e trovare nel mondo reale un modello (processo di astrazione), dal modello necessitiamo tecniche appropiate Astrazione: creare il giusto modello per un problema e individuare le tecniche appropriate per risolverlo in modo automatico. ASTRAZIONE Dal latino abstrahere, letteralmente “trarre da” In informatica significa estrarre da una situazione il concetto di base, l’idea o il processo Concetto astratto normalmente espresso in un’altra forma, lo mettiamo in un’altra forma più sintetica e normalmente di applicazione più generale (trovare altra rappresentazione del problema) astrazione Obiettivo: Separare ciò che è rilevante da ciò che non lo è. Astrazione altra rappresentazione del problema Quindi…. OBIETTIVO trovare modelli di problemi reali che possono essere compresi da un utente di un computer ma eseguiti (in maniere efficiente) da una macchina. ALGORITMO Procedura per ottenere soluzioni ai nostri problemi mediante manipolazioni di dati rappresentati con un modello di dati. “precisa e non ambigua specifica di una sequenza di passi che possono essere eseguiti meccanicamente” “Informally, an algorithm is any well-defined computational procedure that takes some value, or a set of values, as input and produces soma value, or set of values, as output” “sequenza di passi che definisce il modo in cui viene eseguita una operazione” Procedura-passi per risolvere problemi che produce valore Esempi
- Algoritmo per cucinare (ricette)
- Algoritmi per come orientarsi (indicazioni)
- Algoritmi per far funzionare una lavatrice (istruzioni utilizzo)
- Algoritmo per trucchi di magia ALGORITMI Studio degli algoritmi nato in ambito matematico (ben) prima dell’avvento dei computer c’è stato lo studio di algoritmi efficienti Obiettivo : trovare una sequenza di istruzioni per risolvere problemi di un particolare tipo Esempio: algoritmo per il calcolo del Massimo Comune Divisore (MCD) ALGORITMO DI EUCLIDE
Input: due numeri interi positivi Output: massimo comune divisore dei due Passi dell’algoritmo (immagina due scatole vuote M e N)
- Si assegni ad M e N rispettivamente il valore maggiore e minore dei due valori in ingresso
- Si divide M per N e si denomini con R il resto della divisione
- Se R è diverso da zero si assegni ad M il valore di N e ad N il valore di R; poi si ripeta il passo 2 Se R è uguale a 0 il massimo comune divisore è N Per eseguire compito (risolvere problema), che è nostro obiettivo, bisogna
- Individuare un algoritmo
- Rappresentare l’algoritmo in una forma “compatibile” con la macchina Tale rappresentazione di un algoritmo è definita PROGRAMMA Programmi e programmazione Per essere leggibili da esseri umani
- Basta che siano programmi stampati su carta (come quelli dle libro)
- O programmi visualizzati a video Per essere utilizzati dalle macchine
- Programmi codificati compatibilmente con le tecnologie del computer Programmazione
- Sviluppo di un programma
- Codifica in un formato comprensibile alla macchina
- “inserimento” nella macchina PROGRAMMAZIONE Potremo darne una definizione più generale come “istruire un agente per fargli svolgere una determinata funzione o azione” Agente: chiunque possa eseguire istruzioni
- Computer per un programmatore
- Persona se la istruiamo a raggiungere una destinazione ALGORITMI E PROGRAMMI Quella precedente è uno dei modi possibili per descrivere l’algoritmo di Euclide.
Macchina con ingranaggi (già quella di anticitera lo era)
- Pascal, leibniz, babbage
- Dati memorizzati mediante posizione degli ingranaggi; risultato delle operazioni come posizione finale
- Babbage pensa a stampa risultati su carta LE MACCHINE Idea di codificare algoritmo su schede di cartone
- Babbadge la mutua da Joseph Jacquard
- Poi anche Herman Hollerith (poi fondatore di IBM società che produce software e fa ricerca nell’ambito informatico)
- DIFFUSE COME SCHEDE PERFORATE idea nata perché dovevano gestire i dati dei censimenti ma ci mettevano troppi anni per elaborare dati a mano. Quindi si memorizzano dati censimenti e si faceva foro di queste schede per genere o fascia di età ad esempio. No macchine meccaniche e no comporti meccanicamente ingranaggi si utilizzano schede per supporto a memorizzare schede o algoritmi. No limiti fisici con soft. Vantaggio ma da tenere sotto controllo) Arpanet tra le prime proposte Utilizzate principalmente da comunità accademica e aziende di ricerca. Server fornisce risposte.
MEMORIZZAZIONE DEI PROGRAMMI
PROBLEMA Macchine tabulatrici erano apparecchi elettromeccanici (esclusivamente hardware), realizzati con cavi, rulli, motori Come modificarne il funzionamento? Modificarla fisicamente MEMORIZZAZIONE DEI PROGRAMMI Perché il computer elettronico è un importante contributo?
- risolve problema del ricablaggio
- CPU in grado di eseguire istruzioni conservate nella memoria del computer ➡ istruzioni non più fisiche (hard) ma elettronico (soft) MEMORIZZAZIONE DEI PROGRAMMI Vantaggi delle istruzioni soft
- programmi possono essere sostituiti con rapidità, caricando nuove istruzioni in memoria
- programmi possono diventare molto complessi: limite non “fisico” ma legato a
- dimensioni della memoria
- ingegno dei programmatori
- elaborazioni autonome, ad esempio senza la presenza di persone che debbano inserire le scheme
MEMORIZZAZIONE DEI PROGRAMMI
Altro contributo importante: computer non più grossi e costosi
- realizzare dispositivo in grado di leggere, decodificare ed eseguire istruzioni è un problema tecnico difficile
- primi computer delle dimensioni di una stanza, una dozzina di addetti ai lavori, 17000 valvole ๏ passaggio ai transistor a semiconduttore
- basso consumo
- grande affidabilità
- compattezza e leggerezza ๏ passaggio ai circuiti stampati
PERSONAL COMPUTER
Oggi il vantaggio di aver un computer personale è chiaro Non è sempre stato così. Esempio: Alto
- sviluppato nel 1973 al Palo Alto Research Center della Xerox
- destinato ad impieghi di ufficio - costo: $40, “Non ci sono motivi per le persone comuni di avere un computer in casa” [Ken Olsen, 1977] World Wide Web ha (WWW) contribuito alla diffusione
RETE INTERNET
ARPANet (1969, predecessore di internet)
Pagine Web vengono create, memorizzate e inviate in forma codificata Sono i browser che si occupano di visualizzarle come ci appaiono nello schermo HyperText Markup Language (HTML) è il linguaggio principale usato per definire struttura pagina Web ed il suo contenuto Altre tecnologie utilizzate oltre ad HTML - Cascading Style Sheet (CSS): per descrivere apparenza/presentazione della pagina - JavaScript: per implementare funzionalità/comportament
…ANCORA SUL SOFTWARE
Altro importante elemento: sviluppo di software a livelli Fino agli anni ’80, - programmi tendenzialmente oggetti “monolitici”, poco strutturati, complessi da scrivere, difficili da mantenere - spaghetti code (programmi con logica inestricabile) Oggi: sviluppo a più livelli …ANCORA SUL SOFTWARE Sviluppo a più livelli
- i programmi che rientrano in un livello impiegano per le attività più primitive le funzionalità fornite dai livelli sottostanti
- nel contempo, forniscono funzionalità più avanzate ai livelli sovrastanti …ANCORA SUL SOFTWARE Aspetti importanti dello sviluppo a più livelli
- i programmatori possono usare il software di un certo livello sapendo solo come utilizzarlo e senza dover sapere come funziona “internamente”
- i programmatori costruiscono il proprio software basandosi sul lavoro di migliaia di altri programmatori che hanno contribuito alla realizzazione di questi livelli ➡ accumulazione di conoscenze …ANCORA SUL SOFTWARE Nel parlare di software introdurremo ‣ Sistemi operativi ‣ Alcune applicazioni (e.g., i fogli elettronici) SISTEMI OPERATIVI Cos’é e cosa fa un sistema operativo?
- software che fa di un computer un dispositivo utile
- esegue operazioni comuni a tutte le applicazioni, come
- caricare programmi
- condividere la memoria tra più applicazioni
- localizzare file INTELLIGENZA ARTIFICIALE (IA) Intelligenza Artificiale (Artificial Intelligence, AI) “Artificial intelligence (AI) refers to systems that display intelligent behaviour by analysing their environment and taking actions – with some degree of autonomy – to achieve specific goals. AI-based systems can be purely software- based, acting in the virtual world (e.g. voice assistants, image analysis software, search engines, speech and face recognition systems) or AI can be embedded in hardware devices (e.g. advanced robots, autonomous cars, drones or Internet of Things applications).” [AI in Europe, EU] [AI in Europe, EU] Communication from the Commission to the European Parliament, the European Council, the Council, the European Economic and Social Committee and the Committee of the Regions on Artificial Intelligence for Europe, Brussels, 25.4.2018 COM(2018) 237 final. Later expanded in A Definition Of AI: Main Capabilities And Scientific Disciplines Intelligenza Artificiale (Artificial Intelligence, AI) “Per migliaia d'anni abbiamo cercato di comprendere come pensiamo; ovvero come un semplice mucchio di materia può percepire, capire, predire e manipolare un mondo molto più grande e complicato. Il compito dell'intelligenza artificiale, o IA, va ancora più in là: il suo obiettivo non è solo comprendere, ma anche costruire entità intelligenti” [Russel and Norvig, 2005] In [Russel and Norvig, 2005] vengono discussi un gran numero di argomenti sotto il cappello della IA Principale tema unificante: agente intelligente “Nella nostra definizione, l’IA è lo studio degli agenti che ricevono percezioni dall’ambiente ed eseguono azioni. Ogni agente implementa una funzione che mette in corrispondenza sequenze percettive e azioni, e il nostro scopo è presentare diverse tecniche per rappresentare tali funzioni […]” INTELLIGENZA ARTIFICIALE (IA) Diverse definizioni di AI In [Russel and Norvig, 2005] organizzate in 4 categorie sistemi che pensano come essere umani sistemi che pensano razionalmente sistemi che agiscono come esseri umani sistemi che agiscono razionalmente
Da [Mitchell, 1997]: “A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.” MACHINE LEARNING Metodi computazionali che si avvalgono dell’esperienza per Aumentare le prestazioni Effettuare predizioni accurate Esperienza Informazione usabile in fase di apprendimento sotto forma di
- insiemi di addestramento etichettati da umani
- informazione ottenuta dall’interazione con l’ambiente/contesto ESEMPIO: SPAM DETECTION Problema Apprendere come classificare automaticamente messaggi email che possono essere SPAM oppure non-SPAM (HAM). F1 e f2 due ipotetiche proprietà serie di test che estraggono proprietà per catalizzare le email ritenute spam ( lo fa programma non noi) Nella mail uni c è feature 1 e 2 ed è spam Nella due non c è 1 e 2 —> non è spam E via così Dati i dati si trova criterio per, dato un messaggio, predire se è spam o no Data serie dati apprendere automaticamente criterio ( deve andare bene per dati che ho e per dati che non ho ancora visto , deve andare bene sia qui sia per mail che arriveranno) Problema che viene definito supervised learning
Come fa il filtro anti spam ad apprendere i pesi che deve associare ai vari test? Supponiamo
- di avere un grande insieme di addestramento di email
- che tali email siano state etichettate a mano come spam o ham
- di sapere il valore dei test per ciascuna di queste email ‣ Obiettivo: ottenere un peso per ciascun test tale che
- tutte le email di “spam” ricevano un punteggio superiore a 𝛕
- quelle “ham” ricevano un punteggio non superiore a 𝛕
E con altri simboli? Basta imporre un ordinamentoAnche con gli altri simboli però posso imporre un ordinamento!! Così risolvo problema. RAPPRESENTARE L’INFORMAZIONE Assumiamo informazioni quando osserviamo la presenza o l’assenza di un fenomeno. Esempi di fenomeni: la luce, la carica elettrica, il vapore, le bolle… VAPORE E BOLLE
- Vapore Presenza di vapore che sale da tazza di caffè possiamo acquisire informazione che il caffè è molto caldo Assenza: caffè non è molto caldo
- Bolle Assenza di bolle in una bibita frizzante: bibita sgassata o vecchia Presenza: bibita gasata o appena aperta DATO ED INFORMAZIONE Possiamo definire dato come la presenza o l’assenza di un fenomeno in un luogo ed in un momento specifico. Quando sappiamo cosa rappresenta un dato allora abbiamo un’ informazione. Esempio relativo a schede perforate: rilevare la presenza/assenza di foro praticato in una scheda di carta. Verifichiamo presenza o assenza di un fenomeno e l’operazione di lettura di un dato in questo caso è: posizione perforata presente o assente. LETTURA DI UN DATO:
- posizione perforata presente
- posizione perforata assente Se sappiamo che quel dato rappresenta il genere di una persona allora abbiamo un’informazione. DATO ED INFORMAZIONE II La definizione data prima è specializzata per dati digitali
- Suddividiamo le osservazioni in due casi: presente e assente
- Esempio del vapore: caffè molto caldo o non molto caldo, ma non sappiamo la temperatura In [Snyder et al., 2020] usato il termine PandA (Presence and Absence) BIT E SISTEMA BINARIO BIT come dato prodotto da una singola presenza o assenza
- Osservare se il vapore sale nella tazza di caffè mi do un bit
- Nel caso del vapore, bit può significare Molto caldo Non molto caldo
- Ci sono due osservazioni possibili: sistema binario, possiamo rappresentare i due casi con 0 e 1 e quindi siccome i casi possibili sono due si tratta di un sistema binario
BIT E LOGICA
Finora abbiamo parlato di fenomeno fisici ma in realtà possiamo generalizzare questa cosa: anche nel mondo logico e del ragionamento si possono associare concetti estratti a presenza/assenza di un fenomeno (vero/falso) RAPPRESENTARE L’INFORMAZIONE OBIETTIVO: vogliamo trasmettere informazione senza errore (o con il più piccolo errore possibile). L’informazione vogliamo elaborarla e trasmetterla. I simboli usati devono essere:
- facilmente disgiungibili l’uno dall’altro
- affidabili (non si devono alterare nel periodo di tempo in cui vengono utilizzati) per raggiungere obbiettivo sopra. ”Informazione si rappresenta usando un numero finito di simboli che siano affidabili e facilmente distinguibili” RAPPRESENTARE L’INFORMAZIONE II Simboli possono avere forme diverse
- Segni su fogli di carta (e.g, cifre e lettere)
- Diversi livelli di tensione di una linea di comunicazione
- Foro (o sua assenza) su carta perforata
- Livelli di tensione sui fili in apparecchiature digitali Cosa intendiamo per simboli affidabili?
- si utilizza una grandezza fisica (e.g., tensione elettrica) per rappresentare informazione
SISTEMA NUMERICO BINARIO
I computer utilizzano il sistema numerico binario. Come contare il binario? Dobbiamo usare solo i simboli 0 e 1. 0,1,10,11,100, Per fare addizione 11+1=0 riporto 1 perché massimo a cui possiamo arrivare è due.
SISTEMA NUMERICO ESADECIMALE
Detto anche hex. Utilizza 16 simboli: 0 1 2 3 4 5 6 7 8 9 ABCDEF. Andiamo da 0 a 15 che sarebbe la F. 1 E 0 in decimale è diverso da 1 e 0 in binario. In decimale siamo in base 10, nel binario in base 2. Si consideri la sequenza di 32 bit 1000 1110 1101 1000 1010 0011 1010 0000 Possiamo rappresentarla utilizzando gruppi di 4 bit, ciascuno espresso in esadecimale 8E D8 A3 A
UTILIZZI RAPPRESENTAZIONE BINARIA Due utilizzi della rappresentazione binaria
- Codifica dei numeri
- Codifica dei caratteri Altri utilizzi
- Rappresentazione di suoni, immagini, video…
RAPPRESENTAZIONE DI NUMERI
Differenza tra numeri binari e decimali la base del sistema di numerazione altre caratteristiche sono legate a tale differenza Esempio: valore della posizione [decimale]: ciascuna posizione (da destra) successiva potenza di 10 [binario]: ciascuna posizione (da destra) successiva potenza di 2
ALTRE NOTE
Per convertire un numero binario in decimale basta sommare i valori delle posizioni con i bit a 1 Per aumentare la leggibilità di solito si lascia uno spazio ogni quattro cifre: 1000 1110 1001 La base di un sistema di numerazione è detta anche radice
RAPPRESENTAZIONE DI CARATTERI
Numero di bit utilizzati determina numero di simboli disponibili per rappresentazione di valori ➡ sequenza di n bit => 2n simboli Per testi semplici ci servono almeno: ‣ lettere alfabeto (maiuscole e minuscole) ‣ cifre arabe ‣ segni di interpunzione ‣ simboli base per aritmetica (+,-,*,/,=) Quali altri simboli includere? Quando ci fermiamo? Supponiamo di dover rappresentare o 26 lettere minuscole e le rispettive maiuscole o 10 cifre o 20 segni di interpunzione base (spazi inclusi) o 1 0 dei segni aritmetici più utili o 3 caratteri non stampabili (a capo, tabulazione e backspace) Sono 95 simboli in totale. Quanti bit ci servono? ASCII Abbiamo 95 simboli in totale. Quanti bit ci servono? 7 bit => 2 alla 7 = 128 simboli American Standard Code for Information Interchange (ASCII)
- è uno standard (accordo preventivo su associazione tra caratteri e simboli (sequenze di bit))
- è una rappresentazione a 7 bit ASCIInon sufficiente perché servirebbe codifica universale, necessitiamo di qualcosa di più flessibileUNICODE STANDARD
INTERMEZZO: BCD
Decimali codificati in binario (Binary-coded decimal, BCD) Schema in cui le cifre da 0 a 9 vengono individualmente codificate mediante loro rappresentazione binaria a 4 bit Esempio 35910 0011 0101 1001 (in BCD) 1011001112 Rappresentazione in binario è l’ultima tra le 3