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


Appunti Informatica di base, Appunti di Fondamenti di informatica

appunti per esame di informatica di base

Tipologia: Appunti

2023/2024

Caricato il 13/04/2026

kesiamassacesi
kesiamassacesi 🇮🇹

7 documenti

1 / 19

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Capitolo 1: Computer, pensiero computazionale e strutture dati
Calcolatore: qualcuno o qualcosa che compie calcoli matematici
Computer: qualsiasi agente (persona o macchina che sia) che è in grado di fare calcoli
e produrre una risposta (output) a partire da qualche informazione iniziale (input).
1632: Oughtred realizza regolo calcolatore
1641: Pascal inventa la “pascalina” specie di calcolatrice meccanica (somme e
sottrazioni)
1671: Leibniz migliora la “pascalina” e crea prima camcolatrice
1822: Charles Babbage sviluppa la Macchina Differenziale, per gestire operazioni simili
a quelle dei computer umani ma con efficienza maggiore. Crea solo prototipo e
limitata flessibilità macchina, dato che questa non era programmabile.
1837: Babbage inizia a progettare la Macchina Analitica, nessun prototipo costruito.
Questa macchina era in grado di ricevere input da schede perforate.
1940: costruzione della Bomba, la Macchina di Alan Turing.
Pur essendo una macchina efficace ed efficiente, la Bomba era basata su componenti
solo meccanici e permetteva lo svolgimento di una sola operazione.
1946: creazione del primo computer interamente digitale negli USA (l’ Electronic
Numerical Integrator and Computer-ENIAC). Questo era completamente
programmabile tramite l’uso di cavi e interruttori.
Scrivere un programma: comunicare ad un computer elettronico utilizzando un
linguaggio (in questo caso formale) che sia l’istruttore umano sia il computer stesso
possano comprendere.
Pensiero computazionale è un approccio per risolvere problemi, sviluppare sistemi e
capire il comportamento umano che riprende i concetti fondamentali della
computazione ( per computazione si intende calcolo qui).
Il PC definisce i processi mentali che coinvolgiamo quando formuliamo un certo
problema ed esprimiamo le relative soluzioni usando un linguaggio che un computer
può comprendere e eseguire.
Jeanette Wing sul PC: esso è un tipo di pensiero analitico. Condivide col pensiero
matematico il modo in cui possiamo approcciare un problema per trovare la soluzione,
col pensiero ingegneristico il modo in cui possiamo affrontare la progettazione e la
valutazione dei grandi sistemi complessi e col pensieri scientifico il modo in cui
possiamo trattare la comprensione della calcolabilità, l’intelligenza, la mente e il
comportamento umano.
La nozione principale dietro il PC è l’astrazione che comporta la capacità di rimuovere
dettagli trascurabili in una situazione per semplificarla.
Pareidolia
Uno degli obiettivi del PC è quello di dare nuova forma alle astrazioni che abbiamo già
immagazzinato nel passato come conseguenza della nostra esperienza personale.
Serve ridefinirle per renderle comprensibili a un computer.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13

Anteprima parziale del testo

Scarica Appunti Informatica di base e più Appunti in PDF di Fondamenti di informatica solo su Docsity!

Capitolo 1: Computer, pensiero computazionale e strutture dati

Calcolatore: qualcuno o qualcosa che compie calcoli matematici Computer: qualsiasi agente (persona o macchina che sia) che è in grado di fare calcoli e produrre una risposta (output) a partire da qualche informazione iniziale (input). 1632: Oughtred realizza regolo calcolatore 1641: Pascal inventa la “pascalina” specie di calcolatrice meccanica (somme e sottrazioni) 1671: Leibniz migliora la “pascalina” e crea prima camcolatrice 1822: Charles Babbage sviluppa la Macchina Differenziale, per gestire operazioni simili a quelle dei computer umani ma con efficienza maggiore. Crea solo prototipo e limitata flessibilità macchina, dato che questa non era programmabile. 1837: Babbage inizia a progettare la Macchina Analitica, nessun prototipo costruito. Questa macchina era in grado di ricevere input da schede perforate. 1940: costruzione della Bomba, la Macchina di Alan Turing. Pur essendo una macchina efficace ed efficiente, la Bomba era basata su componenti solo meccanici e permetteva lo svolgimento di una sola operazione. 1946: creazione del primo computer interamente digitale negli USA (l’ Electronic Numerical Integrator and Computer-ENIAC). Questo era completamente programmabile tramite l’uso di cavi e interruttori. Scrivere un programma: comunicare ad un computer elettronico utilizzando un linguaggio (in questo caso formale) che sia l’istruttore umano sia il computer stesso possano comprendere. Pensiero computazionale è un approccio per risolvere problemi, sviluppare sistemi e capire il comportamento umano che riprende i concetti fondamentali della computazione ( per computazione si intende calcolo qui). Il PC definisce i processi mentali che coinvolgiamo quando formuliamo un certo problema ed esprimiamo le relative soluzioni usando un linguaggio che un computer può comprendere e eseguire. Jeanette Wing sul PC: esso è un tipo di pensiero analitico. Condivide col pensiero matematico il modo in cui possiamo approcciare un problema per trovare la soluzione, col pensiero ingegneristico il modo in cui possiamo affrontare la progettazione e la valutazione dei grandi sistemi complessi e col pensieri scientifico il modo in cui possiamo trattare la comprensione della calcolabilità, l’intelligenza, la mente e il comportamento umano. La nozione principale dietro il PC è l’astrazione che comporta la capacità di rimuovere dettagli trascurabili in una situazione per semplificarla. Pareidolia Uno degli obiettivi del PC è quello di dare nuova forma alle astrazioni che abbiamo già immagazzinato nel passato come conseguenza della nostra esperienza personale. Serve ridefinirle per renderle comprensibili a un computer.

Obiettivo principale del PC è quello di permettere alle persone di pensare come se fossero computer scientist. Un processo base dell’attività di astrazione è quella di descrivere l’informazione secondo un’organizzazione generica e riutilizzabile in più contesti; per fare ciò si usano le strutture dati. Esse sono modi in cui possiamo organizzare l’informazione e i dati processati (input) e restituiti (output) da un computer. Una struttura dati è una sorta di contenitore dove possiamo posizionare informazioni e che fornisce metodi specifici per aggiungere e richiedere pezzi di informazione. Tra le più le semplici strutture dati abbiamo: liste, dati, pile, insiemi, dizionari, alberi e grafi. La lista: sequenza di elementi ordinati e ripetibili che si possono contare. Suoi elementi sono ordinati secondo uno specifico ordine di precedenza tra di loro; gli elementi di una lista sono ripetibili. La pila: specie di lista vista da un particolare punto di vista cioè dal basso verso l’alto e con uno specifico insieme di operazioni che si possono effettuare sugli elementi. La caratteristica principale degli elementi di questa struttura riguarda le operazioni di aggiunta e rimozione che seguono una strategia last in first out strategy (LIFO): l’ultimo elemento che viene inserito è il primo ad essere rimosso (l’ultimo elemento sta in cima alla pila). La coda: specie di lista vista da sx verso dx. Caratteristica principale riguardano le operazioni di aggiunta e rimozione degli elementi che seguono la first in first out strategy (FIFO): il primo elemento immesso è il primo ad essere rimosso. Insieme: collezione di elementi non ordinati e non ripetibili. Dizionario (o array associativo): collezione non ordinata di elementi definiti da coppie chiave-valore dove la chiave non è ripetibile. Albero: struttura dati composta da un insieme di nodi collegati tra loro da una relazione gerarchica genitore-figlio. I nodi vengono disposti dall’alto verso il basso. Il nodo più in alto è chiamato nodo radice (root node); i nodi finali sono i nodi foglia (leafnodes). Gli altri nodi possono essere: -nodo genitore (parentnode):quello direttamente connesso quando ci si muove verso il nodo radice -nodo figlio (childnode): uno di quelli direttamente connessi quando ci si muove lontano dal nodo radice

  • nodo fratello (siblingnode): uno di quelli che condivide lo stesso node genitore -nodo antenato (ancestornode): uno di quelli raggiungibili seguendo ripetutamente le relazioni genitore-figlio andando verso il nodo radice -nodo discendente (descendantnode): uno di quelli raggiungibili seguendo ripetutamente le relazioni genitore-figlio spostandosi lontano dal nodo radice. Grafo: deriva da un piccolo gioco sui 7 ponti di Koenigsberg (è possibile passeggiare in città attraversando ogni ponte una sola volta? Euler dimostra di no). Eulero divide la

Processo

Viene usato per esprimere un’istruzione che è eseguita e

che può cambiare lo stato corrente di qualche variabile

usata nell’algoritmo. Il testo che contiene descrive

l’istruzione da eseguire.

Decisional

e

Permette di esprimere operazioni condizionali, dove una

condizione è verificata e, a seconda del valore di alcune

variabili usate nell’algoritmo, l’esecuzione continua in un

particolare ramo del flusso invece che in un altro. Di

solito, questa operazione crea due possibili rami: uno

seguito se la condizione è vera, e un altro che viene

seguito quando la condizione è falsa.

Input /

Output

Permette di specificare un possibile input o output che

viene usato o restituito dall’algoritmo solitamente

all’inizio o alla fine della sua esecuzione.

Esempio di algoritmo con diagramma di flusso: Possiamo usare gli algoritmi per computare tutto? Uno degli approcci più usati è la dimostrazione per assurdo (reductio ad absurdum): costruire una situa in apparenza plausibile che poi si rivela paradossale o contraddittoria.

Capitolo 3: linguaggi di programmazione

I linguaggi di programmazione Linguaggio “naturale”: è un linguaggio comune, scritto od orale, che si è evoluto in maniera naturale all’interno di una comunità. Ha il vantaggio di essere molto espressivo, lo svantaggio sta nel fatto che alcune frasi sono intrinsecamente ambigue se non sono accompagnate da un contesto opportuno. I linguaggi naturali non sono formali per definizione, tuttavia molti studi in linguistica cercano di fornirne una formalizzazione mediante l’uso di strumenti matematici (approfondimento Noam Chomsky). Linguaggio di programmazione : è un linguaggio formale che obbliga l’uso di specifiche regole sintattiche, sviluppate in modo tale da evitare possibili istruzioni ambigue. Solitamente l’espressività del linguaggio è ridotta ma tutte le “frasi” componibili trasmettono un solo possibile significato. I linguaggi di programmazione sono solitamente basati su grammatiche libere dal contesto e possono distinguersi per

un basso o elevato livello di astrazione dal linguaggio propriamente in uso da un elaboratore elettronico per eseguire le operazioni. Si dividono in: -il linguaggio macchina, un insieme di istruzioni che possono essere eseguite direttamente dalla CPU (central processing unit, o processore) di un computer elettronico. Basato sul codice binario; -i linguaggi di programmazione a basso livello, che forniscono un livello di astrazione sopra il linguaggio macchina, e che permettono di scrivere programmi in modo che siano poco più intellegibili dagli umani. Il più famoso linguaggio di questo tipo è l’Assembly. Anche se introduce simboli più comprensibili, di solito una linea di codice in Assembly rappresenta una specifica istruzione in linguaggio macchina; -i linguaggi di programmazione ad alto livello, sono linguaggi caratterizzati da un forte livello di astrazione dal linguaggio macchina. A livello generale, più astrazione è fornita, più comprensibile è il linguaggio. Possono contenere parole proprie del linguaggio naturale così da essere di più facile comprensione per un umano. Grace Brewster Murray Hopper è tra i più grandi pionieri dei linguaggi di programmazione. La prima programmatrice dell’Harvard Mark I (1943), un computer elettromeccanico general-purpose usato durante la seconda guerra mondiale. Convinta della necessità di avere linguaggi di programmazione che fossero indipendenti dalle macchine su cuierano utilizzati, arriva allo sviluppo del COBOL (Common Business-Oriented Language, 1959). COBOL è un linguaggio di programmazione sviluppato per uso industriale che utilizza largamente termini propri alla lingua inglese per descrivere le varie istruzioni dei programmi. L’idea di adottare, per la prima volta, comandi in lingua inglese ha reso il linguaggio un po’ più verboso, ma anche molto più leggibile e chiaro. -Linguaggi visuali, creati per facilitare l’avvicinamento all’uso dei linguaggi di programmazione tradizionali, negli ultimi anni sono stati sviluppati diversi linguaggi di programmazione visuali che permettono lo sviluppo di piccoli programmi per risolvere problemi computazionali specifici. Alcuni sono proposti sotto forma di gioco e permettono l’introduzione dei costrutti principali propri dei linguaggi di programmazione mediante l’utilizzo di oggetti grafici. Per esempio, il doodle che nel 2017 Google ha messo a disposizione degli utenti, in cui si doveva deve istruire un coniglio in modo che riesca a mangiare tuttele carote posizionate su un determinato percorso. Le azioni che si possono far compiere al coniglio riguardano attività di movimento, ad esempio “vai avanti” o “gira a destra”, e devono essere disposte in una specifica sequenza. Esistono anche altri linguaggi di programmazione visuale che sono più general purpose, ad esempio Blockly di Google.Questo linguaggio mette a disposizione diversi costrutti propri dei linguaggi di programmazione tradizionali, ma li propone sotto forma di blocchetti che si possono incastrare uno sull’altro o uno dentro l’altro per definire le sequenze di operazioni di un algoritmo. Python È un linguaggio di programmazione ad alto livello general-purpose , ed è correntemente uno dei linguaggi più usati per il Web e per attività di analisi automatiche di dati e del linguaggio naturale. Tra i vari vantaggi, Python è uno dei linguaggi più semplici con cui iniziare a studiare come programmare e creare applicazioni.

Capitolo 4: Cosa succede quando si clicca un link/ il World Wide Web

Introduzione: Nel capitolo verrà seguita la traccia fornita da Tim Berbers Lee (inventore

del web). Cosa succede quando si clicca un collegamento ipertestuale/link di una pagina Web?

La nascita degli ipertesti: Partiamo col dire che un ipertesto è un corpo di materiale

scritto interconnesso, in maniera estremamente complessa. Ora il web si fonda su tale tecnologia, ma fino a 70 anni fa ciò era impensabile. L’idea embrionale di ipertesto venne affrontata ben prima della sua proposta formale, soprattutto nelle produzioni letterarie (Ad esempio il racconto di Jorge Luis Borges “Il Giardino dei sentieri che si biforcano”). Ma la traduzione dall’idea alla realtà tecnologica avverrà solo nel 1945, a

seguito delle riflessioni dell’articolo “ As We May Think” di Vannevar Bush; egli fu

un’illustre figura nel campo dell’ingegneria statunitense, nonché inventore; era a capo dell’Agenzia Federale per la Ricerca e lo Sviluppo durante la WW2. Nell’articolo sopracitato Bush affronta:

  • il problema della crescita esponenziale delle pubblicazioni accademiche
  • La necessità di divulgare tali pubblicazioni
  • Il tema dell’industrializzazione dei meccanismi di produzione delle pubblicazioni Utilizzando come perno la realtà universitaria, Bush mise in evidenza come i meccanismi contemporanei erano invecchiati, risultando ormai inadatti alla divulgazione. In questo contesto, quindi, c’era il rischio di perdere importanti pietre miliari della ricerca all’interno di una quantità enorme di scritti irrilevanti. Aggiunge quindi che le tecnologie dell’epoca potessero dare largo supporto alla creazione di piattaforme elettro-meccaniche che semplificassero la gestione dei materiali di ricerca. Se il problema dello spazio poteva essere risolto attraverso le tecnologie di frontiera, come i microfilm, ma il principale problema di queste tecnologie era la ridotta accessibilità alle informazioni e ai dati collegati ad esse. Bush dice che il problema principale alla consultazione di questi materiali era la sua organizzazione sequenziale e l’artificialità del meccanismo di indicizzazione dei contenuti. (Tradotto: erano collegati male e sequenzialmente, se sei interessato ad argomento X citato all’interno di una ricerca devi andarlo a cercare manualmente). Quando un’informazione viene raccolta in tali dispositivi, questa viene indicizzata alfabeticamente o numericamente, inoltre può essere collocata solo in un luogo specifico, a meno che non venga duplicata; di conseguenza, per recuperare una certa informazione a partire dagli indici a disposizione, una persona deve seguire delle regole per identificare l’ubicazione dell’informazione. Questo processo va ripetuto per ogni singola ricerca di nuove informazioni. Tale meccanismo, come già detto da Bush è altamente artificiale poiché non rispetta quelli che sono i processi della mente umana. Essa parte da una specifica informazione e istantaneamente si sposta a quella successiva attraverso il processo associativo. L’idea di Bush è che questa selezione di informazioni attraverso tale processo possa essere emulata su delle macchine (assieme ai dispositivi di memorizzazione appropriati, i microfilm), seppure ritenesse che la velocità con cui si potesse svolgere questa operazione non sarebbe mai stata veloce quanto la mente umana.

Nel suo articolo Bush presenta anche una macchina teorica chiamata “memex”, che avrebbe permesso d salvare quantità enormi di informazioni sui microfilm e di accedere ad esse in maniera meccanica, flessibile e veloce. Tutte le informazioni memorizzate potevano essere recuperate mediante i meccanismi già detti, aggiungendo anche una funzione di modifica dei dati per annotare i documenti, commentarli etc. Inoltre, avrebbe permesso di saltare fra i vari documenti e di salvare la cronologia in un microfilm da poter condividere con i colleghi. Molti ingegneri vennero ispirati da tale articolo, tra cui Theodor Holm Nelson; egli nel 1960 lavorò ad un progetto, chiamato Xanadu, con l’obiettivo di creare una rete di computer che potesse depositare l’intera conoscenza umana e che potesse essere estesa mediante dei collegamenti ipertestuali bidirezionali riprendendo i concetti di proprietà associativa di Bush. Introduce anche una serie di nuovi concetti:

  • Trasclusione
  • Intertwingularity -> processo associativo della conoscenza tipico degli esseri umani Parallelamente a Nelson, un altro scienziato di nome Douglas Engelbart aveva iniziato l’implementazione di un sistema rivoluzionario per l’epoca, che di fatto permetteva per la prima volta la creazione di ipertesti nel computer. Tale sistema si chiama “oN-Line System (NLS)” ed ebbe un grande impatto sulle tecnologie informatiche. Viene introdotto grazie all’NLS:
  • il sistema di “finestre” come meccanismo visuale per l’organizzazione
  • l’ipertesto
  • il mouse
  • sistema di videoscrittura (word processor)
  • dynamic linking: meccanismo che richiede quando necessario opportune librerie e applicazioni a disposizione sul computer
  • meccanismi per il controllo delle versioni dei documenti
  • editor in tempo reale Tutte le tecnologie elencate non erano disponibili prima di questo progetto, e da qui in avanti saranno le fondamenta per lo sviluppo dei computer moderni e degli attuali sistemi operativi.

L’invenzione del World Wide Web: Per l’implementazione dell’ipertesto su scala

mondiale dovremo aspettare una trentina d’anni attraverso World Wide Web. L’idea venne allo scienziato del CERN Tim Berners-Lee: la sua idea rappresentava il Web come un ipertesto che potesse descrivere una varietà di risorse eterogenee collegate tra loro mediante i collegamenti ipertestuali etichettati. L’infrastruttura ideata da Berners propone delle semplificazioni rispetto alle idee di Nelson, prima fra tutte il fatto che i collegamenti potessero essere percorsi in un’unica direzione (Nelson invece pensava tali collegamenti come percorribili in una direzione o nell’altra indistintamente). Il primo prototipo del Web realizzato da Lee è ancora più semplificato, riducendo le risorse descrivibili solo ai documenti o alle pagine Web. Lo scienziato per realizzarlo sviluppa una serie di tecnologie che permettessero agli utenti la creazione di documenti ipertestuali (Hypertext Markup Language, HTML), permettendo anche la disposizione di tali documenti nel Web e di richiederne l’utilizzo attraverso sia l’identificativo URL (Uniform Resource Locator) sia il protocollo HTTP

Capitolo 5: Cosa succede quando si clicca un link/ I protocolli di comunicazione

Cos’è un protocollo di comunicazione: è un insieme di regole che due entità,

appartenenti ad un sistema di comunicazione, devono seguire per scambiarsi informazioni. Un linguaggio comune usato fra due entità per comunicare fra loro. Ogni protocollo ha la propria sintassi da seguire, accompagnata da regole interpretative; inoltre la comunicazione è sincronizzata e gestisce eventuali errori durante lo scambio di messaggi.

HTTP (hypertext transfer protocol): è un protocollo di comunicazione sviluppato da Tim

Berners-Lee, evolutosi poi in HTTPS, un protocollo più sicuro sul Web necessario per la protezione dei dati sensibili. È un protocollo basato sui metodi di comunicazione richiesta-risposta (tipico dei protocolli informali di comunicazione). Un client (colui che richiede il servizio) manda un messaggio di richiesta per una specifica risorsa, identificata dall’URL, ad un server (l’agente che contiene tale risorsa), che restituisce a sua volta al client un messaggio di risposta (diversa a seconda dell’output ES. se la risorsa è o non è presente sul server). Le tipologie di richieste vengono definite attraverso il metodo di richiesta relativa all’URL. Il metodo più usato è il GET, il quale viene usato ogni volta che viene mandata la richiesta di visita di una pagina web. Altri metodi sono:

  • PUT: Permette di creare sul server web la risorsa specificata dall’URL e di associare le informazioni relative ad essa
  • DELETE: permette di rimuovere dal server web tutte le informazioni relative alla risorsa specificata
  • POST: permette di specificare informazioni aggiuntive ad una risorsa già esistente nel server. Bisogna notare che sebbene il GET sia universalmente utilizzato, altri metodi possono essere vietati al client dal gestore del server web. Tutti i metodi dell’HTTP sono classificabili in base a due caratteristiche:
  • Se sono safe: sono safe quando viene usato SOLO per recuperare informazioni dal server.
  • Se sono idempotenti:se le molteplici richieste su un determinato URL hanno lo stesso effetto Esempio: GET è sia idempotente che safe. PUT e DELETE non sono safe ma sono idempotente. A prescindere dal metodo usato, ogni richiesta veicola due tipi di dati ben distinti:
  • Metadati: ad esempio il nome del server web o altri dati di questo tipo
  • Il contenuto della risorsa Questi due tipi di dati sono contenuti in due specifiche sezioni del messaggio, l’header e il payload. L’header è sempre specificato, il payload potrebbe contenere dati oppure no. Tutte le risposte oltre che a contenere metadati nell’header e a volte dati nel

payload, specificano anche un codice di stato, che indica se la richiesta è andata a buon fine. Il codice di stato è composto da un numero di tre cifre, di cui il primo numero rappresenta la classe di risposta. Ne sono cinque:

  1. Risposta informativa: la richiesta è ricevuta, sono solo necessari alcuni passaggi aggiuntivi per poter ottenere le informazioni sulla risorsa richiesta
  2. Successo: la richiesta è stata ricevuta, compresa e accettata
  3. Redirezione: il client deve effettuare specifiche azioni aggiuntive per completare la richiesta
  4. Errore lato client: la richiesta presenta un errore dal lato cient e non viene soddisfatta
  5. Errore lato server: il server web ha riscontrato problemi e non può soddisfare la richiesta Tra i codici più famosi abbiamo:
  • 200 (OK) – richiesta soddisfatta con successo
  • 303 (seeother) – la risposta è trovabile ad un altro URL
  • 400 (Badrequest) – la richiesta non può essere processata dal server
  • 403 (forbidden) – la richiesta è valida, ma il client non ha i permessi necessari
  • 404 (Not Found) – le informazioni relative non sono state trovate
  • 500 (Internal Server Error) – un errore generico lato server
  • 503 (Service Unavailable) – il server è temporaneamente non contattabile

Server Web: Il server web è un computer che esegue un software specifico che

permette di ricevere, gestire e soddisfare le richieste provenienti da un client. Una volta che il server web riceve una richiesta esso impacchetta le informazioni in un nuovo messaggio di risposta, restituendole al cliente. Quando un client richiede una pagina web al server, si connette a quest’ultimo attraverso un identificativo di quattro numeri,i quali vanno da 0 a 255,chiamato indirizzo IP (Internet Protocol). Quando si fa una richiesta HTTP, viene recuperato l’indirizzo IP del server a cui mandare la richiesta, per poi mandare a tale indirizzo il messaggio.

Capitolo 6: Cosa succede quando si clicca un link/ Internet

La nascita di Internet: Bisogna evidenziare come Internet non sia sinonimo di Web. La

parola internet in realtà è una contrazione tra interconnected e network. Quindi una rete composta da tante altre reti più piccole interconnesse fra loro. La nascita dell’Internet è da contestualizzare negli anni successivi alla WW2 e alle tensioni derivate dalla guerra fredda. Uno degli obiettivi degli Stati Uniti era quello di provvedere ad una creazione di una rete di comunicazione robusta che consentisse la comunicazione tra tutti gli stati, anche in seguito ad un attacco nucleare. A tale scopo viene fondata la Advanced Research Projects Agency (ARPA) per la ricerca e lo sviluppo di tecnologie militari. Tra le cose che l’agenzia finanziò ci fu l’NLS e soprattutto ARPA-NET, il precursore di Internet. Il primo responsabile fu Joseph Carl RobnettLicklider il quale delineò il concetto di interconnessione dei computer. I primi nodi del network vennero installati tra Università di California di Los Angeles e lo

  • Applicazione: vengono creati i dati dell’utente, ed è dove i protocolli di alto livello agiscono. Permette la connessione tra applicazioni e non conosce esplicitamente le peculiarità legate al trasporto di questi dati in Internet
  • Trasporto: è lo strato che permette la comunicazione tra il mittente e il destinatario, ospita le due applicazioni usate per la comunicazione a livello applicativo.
  • Rete: lo strato di rete che permette la comunicazione tra i vari nodi presenti di Internet, e permette l’instradamento dei vari pacchetti dal mittente fino al destinatario, passando fra le varie reti
  • Accesso alla rete: è lo strato che definisce come i pacchetti vanno instradati all’interno della rete locale L’IP attualmente ha due versioni contemporaneamente utilizzate, IPv4 attualmente la più usata in internet e IPv6 che gestisce un maggior numero di computer nella rete. L’IP identifica ogni macchina all’interno della rete, ma l’IP può essere statico o dinamico. L’IP del server web è statico, non cambia nel tempo, ma l’IP del client cambia ogni volta che la macchina si collega a internet. Una caratteristica tipica dell’IP è la comunicazione senza connessione. I pacchetti IP possono essere instradati in modo completamente indipendente tra loro, visto che ogni pacchetto contiene esplicitamente l’indirizzo del destinatario. Nello strato di rete, mittente e destinatario non devono andare in handshake (mettersi d’accordo, quindi la richiesta) per inviare i dati fra loro, poiché sono connessi direttamente. I pacchetti comunque possono essere persi o non arrivare nell’ordine in cui sono stati mandati, e il protocollo IP non gestisce queste problematiche poiché appunto non ha funzione di Handshake, questo viene regolato dal TCP.

Domain Name Server (DNS) e Router: Per il corretto instradamento dei pacchetti

bisogna porsi due domande:

  1. Come si fa a recuperare l’IP del server web?
  2. Come vengono instradati i pacchetti attraverso i vari nodi di internet. Cosa sono questi nodi? Inizialmente, esisteva una specifica tabella di mappatura tra il nome dei server e il loro relativo indirizzo IP statico, tale mappatura era messa a disposizione dallo Stanford Research Institute. Con l’ingrandimento della rete tale mappatura non era più gestibile, quindi viene creato il DNS (Domain Name System). Il DNS sono una serie di computer, utilizzati come server DNS, il cui ruolo è qello di restituire il corretto IP per un erto nome a seguito di una richiesta fatta dal DNS resolver. Ogni volta che si effettua una richiesta il browser contatta il DNS Resolver che richiede alla macchina ospitante il server di condividere il proprio IP. Il DNS Resolver per fare questo contatta il server DNS più vicino a lui noto, il quale IP è inserito manualmente oppure è ottenuto dinamicamente, chiedendo la richiesta di condivisione. Una volta trovato l’indirizzo, chiedendo di server DNS a server DNS, il server DNS restituisce la mappatura tracciata al DNS Resolver il quale a sua volta rende disponibile tale mappatura al browser ed eventualmente ad altre applicazioni, assieme ovviamente l’IP del server web.

A livello astratto ogni nodo di internet è uno specifico computer con uno o più ruoli, di cui fanno parte le macchine personali e i server web, macchine in grado di interpretare richieste http che mettono a disposizione pagine web. I server DNS sono macchine che permettono di recuperare l’indirizzo IP a partire dal nome di un certo dominio. Ma a coordinare tutto ciò appare un altro strumento, il router. Esso è un dispositivo di rete responsabile dell’instradamento dei pacchetti IP dal mittente fino al destinatario. Esistono diversi tipi di router, usati differentemente a seconda del ruolo che svolgono nella rete come ad esempio quelli che permettono al nostro computer di connettersi ad internet contattando l’ISP (internet Service Provider). Altri router invece permettono il collegamento tra sottoreti diverse. I router agiscono sullo strato di rete, veicolano il traffico di pacchetti IP verso il percorso migliore da seguire. Il router non entra mai nel merito del payload del pacchetto, ne guarda solo l’header in modo da capire dove instradarlo,, consultando la sua tabella di instradamento che può essere aggiornata manualmente o automaticamente attraverso degli algoritmi. Una volta spedito il pacchetto, il router non tiene traccia di alcuna informazione ad esso relativa.

Capitolo 7: Cosa succede quando si clicca su un link/ Trasferire informazioni

su Internet.

Dimensione massima dei pacchetti: un particolare messaggio dovrebbe essere spezzato in uno o più pacchetti IP prima che questi vengano divulgati in rete. Bisogna considerare due diversi fattori:  Il limite dato dalla massima quantità di dati che ogni pacchetto IP può trasportare (dipende dalla versione del protocollo, IPv4 o IPv6);  Il limite imposto dalla rete a cui si instradano i pacchetti, cioè il suo MTU (Maximum Transmission Unit). Ma come sono espressi questi limiti? Troviamo due unità:  Byte : unità minima di informazioni occupabile su un computer, corrisponde al n. di bit necessari. 1 byte equivale a 8 bit.  Bit (binary digit): unità minima di informazione che si può scambiare in una comunicazione e può assumere solo due valori (0 o 1). È stato introdotto come termine da Claude Shannon nel 1948. Nell’articolo in cui viene introdotto il termine “bit”, Shannon pone le basi di uno specifico campo di ricerca: la teoria dell’informazione. Questa, si occupa di studiare come quantificare, memorizzare e scambiare informazioni. Qualsiasi elemento all’interno di un computer è codificato come una sequenza di bit che, poi, vengono decodificati con la sequenza di caratteri corretta (in base all’applicazione che si utilizza). Esempio: nella codifica binaria tradizionale dei n. interi, lo 0 è rappresentato dalla sequenza “0”, l’1 da “1”, il 2 da “10”, etc. Indirizzo IPv4  costituito da 32bit (4 byte) e suddiviso in quattro gruppi da 8 bit ( byte), separati ciascuno da un punto. Questi quattro byte vengono poi convertiti in un formato decimale più semplice che semplifica la lettura. Esempio: 172.16.254. Il riordino dei pacchetti e lo spezzare dei messaggi sono gestiti dallo strato di

trasporto. Il protocollo principale è il TCP ( Transmission Control Protocol), proposto da

Codifica  la rappresentazione di un documento viene codificata attraverso un linguaggio comune tra essere umano e macchina. Esistono diversi livelli di comunicazione tra macchina ed essere umano e ognuno di essi viene tradotto e codificato (codifica di livello zero, cioè rappresentato in codice binario e codifica di alto livello). I linguaggi di codifica permettono di rappresentare i documenti e di controllare uno o più livelli della struttura del documento.

Codifica: livello 0  Codice ASCII ( American Standard Code for Information

Interchange), cioè il set di caratteri totalmente supportato.

ISO Latin-1  contiene i caratteri necessari per scrivere in tutte le lingue neolatine, anglo-germaniche e nordiche. UNICODE  contiene i carattere di molti alfabeti non latini e caratteri non alfabetici. UTF-8  versione a 8 bit di Unicode, è il set di caratteri predefinito in HTML5.

Machine Readable Form (MFR)  forma leggibile della macchina. Il testo

trasmesso deve essere stato codificato dall’emittente in modo che la macchina sia in grado di non disperdere nessuno dei livelli di informazioni presente. Inoltre, ha la capacità di ritrasmettere quanto il codificatore aveva ritenuto importante.

SGML ( Standard Generalized Markup Language) è nato negli anni ’60 per consentire

lo scambio di documenti in progetti governativi, industriali e legali. È una “super- grammatica”, creatore dell’HTML. Standard perché sviluppato dalla ISO; Generalized , cioè un sistema di codifica astratto e generalizzato ed al contempo flessibile; Markup Language , cioè un metalinguaggio che fornisce le regole per la creazione di grammatiche e vocabolari personalizzati. Esistono diversi tipi di markup language: SGML , XML. Essi definiscono le regole sintattiche che devono essere seguite per specificare la marcatura di un testo, ma non impongono alcun vocabolario particolare per il nome da assegnare ai vari marcatori. Per effettuare un markup language bisogna seguire delle regole sintattiche ben precise:

  1. Tag di apertura con cui inizia l’elemento;
  2. Contenuto testuale;
  3. Tag di chiusura con cui termina l’elemento;
  4. IN ALCUNI CASI sono presenti gli attributi, cioè una caratteristica dell’elemento;
  5. È possibile lasciare anche dei commenti, cioè delle informazioni opzionali che non fanno parte del contenuto. ESEMPIO: contenuto testuale…;

HTML ( Hypertext Markup Language)  è il linguaggio di markup usato per creare

tutte le pagine web e le applicazioni presenti sul Web. Usa una sintassi simile a quella XML. Quando viene fatta una richiesta per una pagina web, viene restituita una copia di un documento HTML contenente marcatori che il browser è in grado di interpretare e visualizzare. La prima versione di HTML (di Berners-Lee) è del 1990, ed era basata su SGML.

Capitolo 9: Cosa succede quando si clicca su un link/ le pagine web (2a

parte).

XHTMLW3C crea una versione di HTML basata solo sulla sintassi XML. Migliora l'interoperabilità con altri linguaggi basati su XML della stessa famiglia (SVG e MathML), ma sacrificando la compatibilità con HTML. Nel giugno del 2004 il W3C

decide di non mantenere la retrocompatibilità con HTML, scatenando l’ira dei vendors

che formano il Web Hypertext Application Technology Working Group (WHATWG) per

proseguire il lavoro di miglioramento di HTML. HTML 5  collaborazione tra W3C e WHATWG (fino al 2011). Struttura dei documenti HTML:

  1. Il primo elemento con il quale inizia un documento HTML non è un elemento

HTML, ma un Document Type Declaration: . Questa “dicitura”

indica al browser che il documento utilizza le regole di marcatura HTML5.

2. Dopodiché abbiamo l’elemento html, che contiene tutti gli altri elementi che

descrivono la pagina e può definire alcuni attributi (es. lang, cioè la lingua dei

contenuti).

3. L’elemento html contiene direttamente due elementi per distinguere due

sezioni importanti della struttura base: head e body.

Titolo  il contenuto testuale di un documento HTML è contenuto dentro l’elemento

body.

Paragrafi

e

.

Enfasi  “ em” per enfasi leggera (corsivo), “ strong” per enfasi forte (grassetto).

Citazioni è possibile citare un testo in tre modi differenti: “cite”, titolo di un lavoro

citato (es. titolo di un libro), “ q”, citazione in linea (es. un dialogo o pensiero),

“blockquote”, citazione come blocco a se stante (si utilizza prima di iniziare un nuovo

paragrafo).

Liste esistono due elementi che permettono di creare una lista: “ol” per lalista

ordinata e “ul” per la lista non ordinata. Le singole voci della lista vengono

indicate con l’elemento “li”.

Tabella (elemento table)  composta da una sequenza di righe ( tr), ognuna delle

quali contiene una o più celle che posso essere di due tipi: elemento td (celle

contenenti dati), elemento th (celle che definiscono intestazioni per le righe o colonne

identificate dalla tabella).

Multimedia  l’elemento che specifica un’immagine è “ img” e non contiene alcun

testo, ma deve specificare due attributi: “src”, cioè l’URL dove reperire

l’immagine e “alt”, cioè un testo alternativo mostrato al posto dell’immagine

se non si visualizza. Gli elementi videoe source permettono di inserire un video in un

documento HTML.

HTML: CSS  1996, rilasciata la specifica del Cascading Style Sheet (CSS), cioè un

linguaggio che permettere di definire il livello degli elementi HTML (es. colore e dimensione del testo; posizione di sezioni, articoli, immagini o video; animazione del cursore su un link).

Capitolo 10: le tecnologie informatiche nelle scienze umane

dati,una volta scritti in un blocco, non possono essere retroattivamente alteratisenza che vengano modificati tutti i blocchi successivi