Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Introduzione all'Informatica: Storia, Hardware e Rappresentazione dell'Informazione - Prof, Dispense di Informatica per la ricerca sociale

Questa lezione fornisce una panoramica introduttiva all'informatica, esplorando la sua storia, i componenti hardware fondamentali e i principi di rappresentazione dell'informazione. Si parte dai primi calcolatori meccanici fino all'evoluzione dei computer moderni, analizzando l'architettura di von neumann e i componenti chiave come cpu, ram e periferiche di i/o. Viene poi introdotto il concetto di rappresentazione digitale dell'informazione, con esempi di codifica ascii e rgb per testi e immagini.

Tipologia: Dispense

2022/2023

Caricato il 22/11/2024

martinacaseliiii
martinacaseliiii 🇮🇹

7 documenti

1 / 27

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Cos'è l'informatica? LEZIONE 1
Storia dell'informatica
Intorno al 2500 A.C. i Sumeri inventano l’abaco=E’ uno strumento che aiuta a fare calcoli
Non si tratta ancora di un calcolatore automatico
Intorno al 150 A.C. i greci costruiscono la macchina di Anticitera= Calcolatore meccanico per
calcolare posizioni astronomiche in modo meccanico=>automatico
Intorno al 50 A.C., Giulio Cesare introduce il cifrario di Cesare=E’ un sistema crittografico usato
da Giulio Cesare per comunicare con i suoi generali=> comunicazioni non dovevano essere
intercettate dal nemico e quindi il messaggio veniva dato al messaggero ma senza la chiave per
cifrare così se fosse stato catturato non avrebbe risolto il messaggio
Nel 1804, Joseph Marie Jacquard inventa il telaio di Jacquard =Un telaio per tessitura
programmabile con schede perforate Non può svolgere compiti generici (le schede sono la
prima memoria artificiale)
Nel 1837, Charles Babbage progetta la macchina analitica =Il primo computer meccanico
progettato per svolgere compiti generici (Turing-completa) +Ada Lovelace prima programmatrice
della storia
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b

Anteprima parziale del testo

Scarica Introduzione all'Informatica: Storia, Hardware e Rappresentazione dell'Informazione - Prof e più Dispense in PDF di Informatica per la ricerca sociale solo su Docsity!

Cos'è l'informatica? LEZIONE 1 Storia dell'informatica

  • Intorno al 2500 A.C. i Sumeri inventano l’abaco=E’ uno strumento che aiuta a fare calcoli

Non si tratta ancora di un calcolatore automatico

  • Intorno al 150 A.C. i greci costruiscono la macchina di Anticitera= Calcolatore meccanico per

calcolare posizioni astronomiche in modo meccanico=>automatico

  • Intorno al 50 A.C., Giulio Cesare introduce il cifrario di Cesare=E’ un sistema crittografico usato

da Giulio Cesare per comunicare con i suoi generali=> comunicazioni non dovevano essere

intercettate dal nemico e quindi il messaggio veniva dato al messaggero ma senza la chiave per

cifrare così se fosse stato catturato non avrebbe risolto il messaggio

Nel 1804, Joseph Marie Jacquard inventa il telaio di Jacquard =Un telaio per tessitura

programmabile con schede perforate • Non può svolgere compiti generici (le schede sono la

prima memoria artificiale)

  • Nel 1837, Charles Babbage progetta la macchina analitica =Il primo computer meccanico

progettato per svolgere compiti generici (Turing-completa) +Ada Lovelace prima programmatrice

della storia

Sul finire degli anni ‘40 arrivano i primi computer elettronici come ENIAC ed EDVAC.

L’EDVAC è stato progettato da John Von Neumann (tedesco emigrato negli stati uniti prima della

1ww). La sua architettura logica è comune ai computer odierni (CPU/RAM) erano armadi a

parete oggi dimensioni ridotte)..

  • Negli anni ‘50, Alan Turing fa cose strabilianti: • Primo hacker della storia => decifrare i

messaggi nazisti scritti con Enigma • Macchina di Turing => modello teorico di una macchina

programmabile che calcola qualsiasi cosa sia calcolabile

  • Nasce l’informatica come scienza => prima di allora c’erano i «matematici filosofeggianti»

(come Russell, Frege ha dato delle definizioni rigorose di cosa è un numero, Hilbert e Godel) che

si interrogavano sul «cosa significa calcolare»

  • Test di Turing “imitation game”=> test per dimostrare se un computer mostra intelligenza umana

=> nasce l’intelligenza artificiale

Nel 1981, IBM lancia il primo personal computer commerciale (IBM 5150)

Nel 1984, Apple lancia il primo personal computer con interfaccia grafica,leggenda che dice che

turing si suicidò avvelenandosi una mela,(Macintosh)

Nel 1981, viene rilasciato il sistema operativo MS-DOS c’era solo lo shell con cui si interfaccia

l’utente

Nel 1985, viene rilasciato Windows

Nel 1991, viene rilasciato Linux; codici sorgente sono pubblici tutti possono visualizzarli e tutti

modificarli (open source)

E internet e il web? differenza web senza internet non funziona,Internet è una rete di calcolatori che

comunicano tra di loro mentre il web è una rete di pagine ipertestuali.

Internet (rete di computer) deriva da ARPANET, creata nel 1969 dal Dipartimento della Difesa degli USA

Il (world wide) web è stato ideato da Tim Berners Lee mentre lavorava al CERN nel 1991. In particolare,

il primo sito web è stato pubblicato da T.B.L. il 6 agosto 1991.

Possedere abilità di “pensiero computazionale” significa: farsi capire da chi prende tutto alla lettera.

Computer non riesce a capire, non essere fraintesi in nessun modo possibile, prende tutto alla lettera.

CAPITOLO 1/LEZIONE 2

Hardware: costruzione logica vs costruzione fisica

I componenti hardware di un computer possono essere osservati secondo due punti di vista:

  • Organizzazione logica o funzionale invariata da anni 40 von neumann
  • Struttura fisica in continua evoluzione

L’organizzazione logica è rimasta invariata dagli anni ’40 ed è la stessa per tutti i computer e la maggior

parte dei dispositivi informatici!!!

La struttura fisica dei componenti è in continua e veloce evoluzione e cambia in base al dispositivo!!!

se cpu avessero repertori diversi un programma funzionerebbe solo in un computer e non nell’altro.

Nella cpu c’è un temporizzatore per cui la cpu esegue un'istruzione ad ogni tick. quelli più veloci

richiedono materiale migliore perchè se si surriscalda si fonde. Hz=hertz. Unità di misura è solo 1 hertz

gli altri sono i suoi multipli. Non riuscendo a migliorare la frequenza di una cpu allora si è pensato di

utilizzarne più di una (CPU multicore, non è esattamente come avere più cpu).

Velocità di accesso a una cella è indipendente dal suo indirizzo logico. nella pratica è quindi

fondamentale anche la memoria secondaria.

La CPU lavora solo con la

ram che però può ricevere dati e istruzioni dalle memorie secondarie. se ci fosse solo la ram avremmo

un problema: non è persistente come le memorie secondarie in cui salviamo il nostro programma

quando spegniamo il computer e che si salva in assenza di wifi.

  • Rappresentano ed elaborano informazioni che si presentano in forma discreta

(sostanzialmente, numeri interi)

  • No informazioni analogiche (comportano valori che variano con continuità)

3. Le informazioni sono rappresentate come numeri

  • Vedremo in seguito che è meglio dire: “sono rappresentate come bit” Conversione analogico/digitale
  • La nostra realtà è analogica, quella del computer è digitale
  • Serve conversione da analogico a digitale (e viceversa)
  • Si possono digitalizzare suoni, immagini, testi, video, …
  • Qualsiasi informazione analogica può essere convertita in digitale!!!
  • Perdendo un po’ (poca) di informazione NOTA: la differenza fra i numeri di una lettera minuscola e corrispettiva maiuscola è sempre 32 quindi, per trasformare «CIAO» in «ciao» bastano semplici operazioni matematiche: aggiungere 32 a ogni codice numerico. Questo esempio ci mostra che l’operazione «rendi il testo lower-case» è implementata come un’operazione matematica. Sarà così per qualsiasi operazione su dati digitali!!! ASCII è una codifica standard, ma ne possono esistere di più e posso anche inventarne una tutta nuova Attenzione: le codifiche viste sono per testi semplici, non testi formattati!!! La visualizzazione di lettere/simboli non è di grande interesse per compredere come un testo è rappresentato La formattazione di un testo richiede di memorizzare molta più informazione: • quale stile (o font) usiamo per visualizzare il testo, • colore del testo e/o dello sfondo del testo, • grassetto, corsivo, sottolineato, etc.,

Codifica per colori e immagini= CAMPIONAMENTO DI UN'IMMAGINE I pixel sono i «quadratini» in cui è suddivisa l’immagine. Si memorizza un solo colore (3 numeri) per ogni pixel, quindi più è alta la risoluzione (numero di pixel) più è ben definita l’immagine!!! Riassumendo …

  • Si decide un intervallo di campionamento di Δ millimetri
  • Si suddivide l’immagine in pixel di dimensioni ΔxΔ millimetri
  • Avremo un numero discreto e finito di pixel
  • Si codifica in formato numerico RGB il colore di ogni pixel
  • La serie numerica corrispondente alla lista di codifiche di ogni singolo pixel è la rappresentazione digitale di un’immagine E i video …
  • I video sono sequenze di immagini
  • In genere si memorizzano un certo numero di fotogrammi per secondo
  • Se, ad esempio, diciamo di memorizzare 24 fotogrammi al secondo, allora un video è codificato come lunga sequenza di numeri che corrispondono alle codifiche di 24 immagini per ogni secondo di video
  • … inoltre, devo anche memorizzare l’audio!
  • I file video sono molto grandi in termini di dimensioni!!!

Informazione e Bit

Conversione da base DIECI a base DUE: algoritmo generico

  • INPUT dell’algoritmo: rappresentazione del numero in base DIECI
  • Dividere ripetutamente per DUE finché il quoziente diventa zero
  • La sequenza dei resti, dall’ultimo al primo, è la stringa di bit, cioè la rappresentazione del numero in input in base DUE
    • INPUT dell’algoritmo:

rappresentazione del

numero in base DUE

  • Annotare sopra ogni bit

la sua posizione, da

destra a sinistra e

partendo da zero

  • Moltiplicare il valore di

ogni bit per il suo peso,

cioè «DUE elevato alla

POSIZIONE del bit» • Sommare tutti i valori pesati per ottenere il numero in base DIECI

  • Sia in base DIECI che in base DUE:

➔ • Gli zeri iniziali non contano

➔ • Se l’ultima cifra è pari, il numero è pari

➔ • Se l’ultima cifra è dispari, il numero è dispari 1

Un numero è sempre somma di potenze di DUE: basta prendere quelle corrispondenti

alle posizioni degli 1 (partendo da destra e iniziando a contare da zero)

  • A volte è utile ricordarsi qualche potenza di DUE, è piuttosto facile: Cos’è un byte?
  • Un byte sono 8 bit
  • In principio, la dimensione di una cella di RAM era di 8 bit, cioè 1 byte
  • Fino a meno di dieci anni fa, la dimensiona di una cella di RAM era di 32

bit, cioè 4 byte

  • Oggigiorno, la dimensione di una cella di RAM è di 64 bit, cioè 8 byte

Get chiede informazioni alla periferica di input, tastiera e Print a quella di output.

M= qualsiasi indirizzo logico

ADD utilizza M e l’altro coinvolto è l’accumulatore.

Se noi avessimo soltanto quelle in nero potremmo fare tutto ma sarebbe più lungo.

programma decide da solo come procedere, non necessariamente tutto in fila.

Il codice di istruzione si chiama nome assembly.

Assembly e linguaggio macchina

  • Il set di istruzioni precedenti è anche detto il linguaggio ASSEMBLY della nostra Toy Machine
  • Il linguaggio ASSEMBLY è un linguaggio di programmazione a basso livello (cioè, vicino alla

macchina, più adatto alla macchina che a noi esseri umani)

  • Gli esseri umani, in genere, non scrivono i programmi in linguaggio ASSEMBLY, ma usano linguaggi

più espressivi (detti di alto livello, cioè vicini all’essere umano)

  • Il codice numerico corrispondente ad ogni istruzione, è il linguaggio macchina della Toy Machine
  • Il linguaggio macchina è il linguaggio al più basso livello (LA CPU è in grado di eseguire linguaggio

macchina, fatto solo di numeri, non quello assembly (è linguaggio più basso possibile)

Ogni cella Ram contiene un numero/dato=> programma è una sequenza di istruizioni o dati memorizzati

nella ram

CPU al suo interno ha un'unica cella ram, un accumulatore ma anche un contatore che indica quale

cella ram esaminare.

Circuiti elettronici li devo fare fisicamente=> con poche istruzioni servono meno.

Ogni impulso la ALU scegli quale istruzione eseguire.

ALU legge solo nei registri ACC e Counter.

LEZIONE 7

  • Quindi, si potrebbe fare così: • Inizializzare R = 0 • Ripetere Y volte l’addizione R+X e, ogni volta, memorizzare il risultato in R • Alla fine, avrò R = X*Y … esattamente ciò che volevo! Get chiede numero che poi con store viene messo in una cella di memoria (X), chiedo secondo numero e memorizzo in cella (Y) metto una if zero. Nell’accumulatore c’è la y (ultimo get che ho fatto) quindi se la y era zero programma sarebbe già finito; ma se vale diversamente carico nell’accumulatore risultato parziale e aggiungo la x e lo rimetto in locazione di memoria R così che conterrà sempre risultato parziale giusto poi ricarico in accumulatore la y e incremento la y di 1 e risalvo la y decrementata di 1. Rifaccio tutto e siccome decremento sempre di 1 prima o poi arrivo a 0.

esempio di programma che usa un altro programma (sottoprogramma riutilizzato per scrivere un’altro programma, si chiamano librerie, quelli che riutilizzo). Problema computazionale: quando ho un grosso problema lo devo dividere in problemi più piccoli=> se io so risolvere la moltiplicazione posso poi mettere insieme quello come se fosse un mattoncino e risolvere l’elevamento a potenza.

Congiunzione/disgiunzione/negazione utili per realizzare porte logiche. Immaginiamo che falso è poca corrente e vero molta corrente=> per fare una porta NOT sarà una porta che prende un segnale con poca corrente sarebbe uno 0 per cui esce più corrente che interpretiamo come 1. Se vogliamo fare un Or esce un solo risultato e ne entrano due che se sono 0 esce 0 se invece uno è 1 uscirà un 1. Qualche info in più sulla CPU: le cpu eseguono un'istruzione alla volta ma ad oggi esistono le cpu multicore che eseguono più istruzioni> sono una solo cpu con più ALU che condividono stesso timer

  • Le CPU multicore hanno più ALU e coppie di registri PC/ACC ➔ • ES: una CPU con 4 core ha 4 ALU (ognuna con 4 copie identiche di circuiti elettronici) e 4 registri PC/ACC ➔ • Ciò rende possibile eseguire 4 istruzioni simultaneamente
  • Nella realtà, le CPU moderne non comunicano direttamente con la RAM, sarebbe troppo lento per le esigenze di oggi
  • Sono state inventate le memorie cache(“cash”= memorie cuscinetto/temporanee). Memorie Cache La CPU sarebbe in grado di funzionare solo con la memoria primaria però i livelli nel mezzo sono sempre più vicini alla CPU, vuol dire che stanno dentro la stessa e sono sempre più piccole e i trasferimenti di informazioni sono di più ma più veloci. Trasferimento dalla ram è lento più i livelli diventano più piccoli più sono veloci i trasferimenti, se trovo l’informazione nella cache sarà piùù veloce.
  • Quelle più vicine alla CPU sono più piccole ma più veloci
  • Quelle più vicine alla RAM sono più grandi ma più lente
  • Sappiamo che la CPU legge dati e istruzioni dalla RAM
  • Con le cache, il flusso dati CPU<->RAM passerà attraverso le cache
  • Quando la CPU richiede il dato/istruzione alla cella X della RAM, prima controlla se è nella cache e, se c’è, lo prende da lì (quindi in modo veloce)
  • Se invece il dato/istruzione non era in cache, allora lo prende dalla RAM, ma contestualmente vengono trasferiti in cache tutti i dati/istruzioni delle celle RAM da X a X+N (dove N dipende dalla dimensione della cache), così è molto probabile che le richieste successive trovino il dato/istruzione cercato in cache

LEZIONE 8

Analogia fra algoritmo e ricetta di cucina

  • La ricetta di cucina è solo un’analogia abbastanza approssimata. Infatti:
  • Le ricette sono spesso ambigue (es: «aggiungere sale quanto basta») … gli algoritmi sono precisi e quindi NON AMBIGUI … la CPU deve sempre sapere cosa fare con precisione!
  • Le ricette sono spesso non deterministiche (se ripeto la ricetta 100 volte, otterrò 100 piatti simili ma mai identici) … gli algoritmi sono DETERMINISTICI … se eseguo mille volte l’algoritmo che calcola la moltiplicazione di due numeri, diciamo 4 e 5,vorrei che il risultato sia sempre 20
  • Le ricette non coprono tutte le possibili situazioni (es: cosa faccio se non ho burro in frigo?) … gli algoritmi COPRONO TUTTE LE SITUAZIONI POSSIBILI … o almeno dovrebbero, a meno di errori di chi progetta l’algoritmo
  • Le ricette TERMINANO … almeno in questo caso sono come gli algoritmi … anzi per una ricetta la terminazione è ovvia (altrimenti quando mangio?), mentre per gli algoritmi potrebbe non esser sempre banale provarla Algoritmi e problemi
  • Gli algoritmi risolvono problemi computazionali
  • Esempio di problemi computazionali: ➔ moltiplicare due numeri ➔ calcolare l’altezza media degli studenti ➔ cercare la definizione di una parola in un vocabolario ➔ mettere in ordine alfabetico una rubrica telefonica ➔ muovere il RE di modo che non vada a finire sotto scacco ➔ scegliere oggetti da rubare che entrino in uno zaino di modo da massimizzare il valore del furto ➔ …
  • Definire un problema computazionale significa:
  • Specificare lo schema dei dati in input
  • Specificare le proprietà dei dati in output
  • Per ogni problema computazionale, esistono molti algoritmi differenti che lo risolvono … alcuni efficienti, altri meno
  • Progettare algoritmi efficienti è estremamente importante nel mondo della computer science
  • Analizzare l’efficienza (o complessità) di un algoritmo richiede competenze scientifiche!

Problema, Dati in Input, Algoritmo, Dati in Output (ricerca del massimo):

Algoritmo per la ricerca del massimo

  • L’approccio è quello di chiedere a turno l’altezza di ogni studente