











Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
appunti per esame di informatica di base
Tipologia: Appunti
1 / 19
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!












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
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.
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.
del web). Cosa succede quando si clicca un collegamento ipertestuale/link di una pagina Web?
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
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:
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:
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
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.
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:
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:
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.
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
bisogna porsi due domande:
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.
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
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.
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.
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.
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:
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.
XHTML W3C 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
proseguire il lavoro di miglioramento di HTML. HTML 5 collaborazione tra W3C e WHATWG (fino al 2011). Struttura dei documenti HTML:
indica al browser che il documento utilizza le regole di marcatura HTML5.
contenuti).
Titolo il contenuto testuale di un documento HTML è contenuto dentro l’elemento
Paragrafi
e
.paragrafo).
identificate dalla tabella).
documento HTML.
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).
dati,una volta scritti in un blocco, non possono essere retroattivamente alteratisenza che vengano modificati tutti i blocchi successivi