Corso di fondamenti di informatica per le scienze umanistiche
Introduzione
I mezzi di comunicazione di massa si sviluppano durante la rivoluzione industriale. Via via si diffuse un processo di controllo e sicurezza e di organizzazione del tempo, definito "tempo comune", con il quale omologare i processi divenne importante per i media. Un media morale applica pressione su un dettato argomento dei contenuti, prevalentemente generalisti, che si estendono al maggior numero di persone possibile (si insiste sull’interesse medio). Si sviluppa una critica su quest’aspetto.
Rivoluzione informatica
In tal senso, lo spot Apple trasmesso durante il Super Bowl del 1984 permise all’informatica di diventare comune a tutti e non solo a pochi. La pubblicità mostrava il lancio del Macintosh e il suo relativo peso sulla futura vita dell’individuo. Il modello doveva contrapporsi al cosiddetto controllo del Grande Fratello ("1984" di George Orwell). In questo modo, Steve Jobs cercò di dare una visione ideale: il Mac venne presentato come un antagonista del Grande Fratello del momento: la televisione. Fin da subito l’informatica viene percepita come una rivoluzione antagonista alla presenza dei media di massa.
Media
I media sono dei sistemi distribuiti in grado di propagarsi secondo diversi punti:
- Web 1.0: Comunicazione in mano all’editore ("read only");
- Web 2.0: Cambiamento tecnologico e strutturale con l’importanza dei contenuti generati dall’utente ("read and write").
Un chiaro esempio del nuovo Web 2.0 che si è sviluppato nell’ultimo decennio è il contenuto pubblicato dagli utenti in social specifici quali Flickr o YouTube. "Dear Mr. Obama" su YouTube è uno dei primi video autoprodotti che riesce a colpire di più lo spettatore rispetto ai video delle campagne elettorali. I media quindi devono concentrarsi sul prodotto che interessa maggiormente al pubblico medio. Un produttore, per esempio, deve eliminare i prodotti che non interessano al suo pubblico per non avere problemi economici e di gestione. I prodotti degli utenti riescono ad ottenere un’attenzione simile agli spot professionali senza costi aggiuntivi. Il media di massa deve puntare su un pubblico generalista che predilige interessi comuni e largamente diffusi. Si tiene inoltre traccia di qualsiasi interazione e si viene a costruire un target di peso. La tecnologia digitale è la tecnologia della scrittura perché le nostre azioni vengono trasformate per l’appunto in codici di scrittura. La configurazione di reti condivise avviene attraverso un sistema inizialmente distribuito che però di fatto è organizzato in maniera decentralizzata per esigenze di efficienza.
Algoritmi
Sono presenti strumenti di filtro che permettono di scegliere le informazioni e adattarle all’interesse personale. I filtri di fatto distorcono la visione totale del mondo. Si innesca una vera e propria "bolla di interessi" (o "filter bubble") che aiuta l’utente ad evitare una ricerca assidua di contenuti, ma limita la vastità di informazioni accessibili. Gli algoritmi che dirigono le scelte degli utenti seguono una precisa logica. Nel 1995, Nicholas Negroponte parla di daily me e della consapevolezza dell’utente che assume via via sempre maggior importanza. Ci sono diverse categorie di algoritmi che filtrano l’informazione:
- Content-based, basato sul contenuto;
- Pattern-based, basato sull’interesse e sull’osservazione di una serie di comportamenti;
- Collaborative filtering, diffuso soprattutto negli ultimi anni, è lo strumento raggiungibile facilmente attraverso i social network basato sulla similarità degli interessi tra utenti. L’obiettivo è predire quali articoli saranno più interessanti in base alle scelte già effettuate precedentemente. L’algoritmo analizza le associazioni degli articoli e il grado di similarità tra utenti.
L’elaborazione automatica
L'informatica
Il termine informatica deriva dal francese e nasce dalla contrazione dei termini information e automatique. L’informatica studia l’elaborazione automatica dell’informazione ed è quindi un modo di organizzare il medium (ossia il messaggio, come dimostrato dagli studi di Marshall McLuhan degli anni ‘50/’60) della comunicazione, della cultura e della conoscenza. L’informatica è una disciplina che coinvolge diversi aspetti della vita quotidiana, in particolare si occupa di:
- Oggetti naturali (macchine): come fisica, chimica e biologia;
- Oggetti ideali (algoritmi): come matematica e geometria e quindi descritti attraverso dei linguaggi formali.
Tuttavia, il fine è progettare e rendere operativi degli oggetti sociali (obiettivo finale dell’informatica) costituiti dagli uomini secondo un progetto e uno scopo e quindi sono dotati di:
- Genesi: come questo oggetto può svilupparsi all’interno di una comunità;
- Struttura;
- Funzioni sociali.
Uno strumento progettato deve rispettare dei requisiti per poter essere adottato e attivare dei meccanismi di modifica per potersi inserire come oggetto di modifica all’interno del contesto. L’informatica mette in relazione molti aspetti del sapere umano e per questo si contraddistingue per la sua naturale multidisciplinarietà. Nella disciplina dell’informatica si è sempre messo in primo piano la relazione tra la società e le modalità create dall’informatica. Vi è una parte di questa disciplina che è dedicata ai cambiamenti sociali: per diffondersi si ha bisogno di ciò che gli utenti conoscono già (quindi dalla tecnologia già esistente). In molti contesti di distribuzione, la rete ha un suo valore che permette di aumentare il servizio dello scambio. L’informatica è l’elaborazione automatica dell’informazione, un esempio di uno strumento che elaborava l’informazione è l’astrolabio, strumento che analizzava l’orario di alba e tramonto degli astri oppure la macchina di Anticitera (II secolo a.C.), uno strumento che ha dato vita a diverse ipotesi riguardo la sua funzione in quanto è un macchinario molto complesso: alla fine si è rivelato un astrolabio che veniva utilizzato sulle navi della Grecia antica (intorno al 150 a.C.). Se voglio una macchina che possa risolvere problemi generici è necessario:
- Servirsi di linguaggi formali;
- Codificare l’informazione;
- Avere a disposizione un’architettura in grado di leggere e salvare informazioni.
Un altro oggetto menzionato come uno tra i primi calcolatori è la Pascalina di Blaise Pascal, messa a punto intorno al 1642, la quale meccanicamente permetteva addizioni e sottrazioni fino a 12 numeri. Un macchinario molto simile era stato costruito tempo prima in maniera più complessa, tuttavia la macchina di Pascal risulta essere convenzionalmente adottata come la prima calcolatrice meccanica.
Algoritmi
Un algoritmo è una sequenza finita di istruzioni che conduce a un risultato in un tempo finito. C’è ancora un dibattito però su cosa può e non può essere considerato algoritmo e su cosa quest’ultimo dovrebbe ottenere. Si può considerare algoritmo anche una sequenza progettata per portare al risultato in un numero di passi finiti. Vi è inoltre una distinzione tra algoritmo deterministico (dato un input, si prevede un output) e algoritmo non deterministico (dato un input, si prevedono diversi output). Tra gli algoritmi non deterministici, si presenta una suddivisione tra probabilistici (terminata la procedura, si genera un risultato casuale) e distribuiti (alcuni input arrivano da nodi senza controllo e non è possibile determinare il numero di passaggi svolti dall’algoritmo). Oggi si lavora con algoritmi basati su reti prestabilite, però non si può prevedere l’input che riceveremo, quindi si lavora su una serie di algoritmi che non sono progettati per ottenere un risultato (quindi andando contro la non accettata definizione).
Codifica dell’informazione
Per essere trattata, l’informazione deve essere codificata e la fase di codifica è la fase in cui passiamo un tal dato da un formato ad un altro. La codifica dell’informazione può essere:
- Codifica analogica: vi è un’analogia, una relazione tra ciò che voglio rappresentare e come lo rappresento. Es. l’orologio serve a decodificare il passaggio del tempo;
- Codifica digitale: ciò che distingue il digitale dall’analogico è l’arbitrarietà in quanto si basa su un dato arbitrario.
Wilhem Schickard
Nonostante il fatto che la prima vera calcolatrice sia legata alla figura di Pascal, in realtà fu proprio Wilhem Schickard a mettere a punto nel 1623 il primo progetto di calcolatrice meccanica non programmabile.
Charles Babbage
Babbage può essere considerato uno dei padri dell’informatica grazie alla sua idea legata alla costruzione dell’Influential Machine, macchina mai costruita a causa della mancanza di finanziamenti e strumenti di sviluppo meccanico di difficile gestione a livello ingegneristico. Egli poi si rese conto di poter realizzare la macchina con funzioni più specifiche dandole il nome di Analytic Machine, un calcolatore simile a quello di Pascal, ma con più abilità e programmabile.
Scienza formale e sperimentale e Hilbert
L’elaborazione dell’informazione non è certamente un processo facile da descrivere, tuttavia possono esserci delle definizioni universali e sommarie. L’informatica è sia una scienza formale che una scienza sperimentale. I primi algoritmi sono il frutto di matematici e contabili, mentre i primi calcolatori sono il frutto di ingegneri e artigiani. La formalizzazione accademica della disciplina nasce col problema della decisione proposto da David Hilbert nel 1900.
Alan Turing
Alan Turing è colui che più di tutti potrebbe meritarsi il titolo di padre dell’informatica, quando durante la Seconda guerra mondiale crea una macchina formidabile, capace di decriptare dei codici in tempo reale. Dal punto di vista formale, egli ebbe il merito di formalizzare l’idea di Babbage e materializzarla, cercando di capire cosa era possibile automatizzare. Sulla base dei progressi ingegneristici e sulle formalizzazioni teoriche dei matematici accademici, si arriverà a formare i primi calcolatori elettronici come l’ENIAC (1946), basato su una derivazione della Macchina di Turing (1936), di origine americana. Il filone americano proseguirà anche grazie alla vittoria della Seconda guerra mondiale e spegnerà qualsiasi tentativo di sviluppo da parte dell’ingegneria tedesca.
L'elaborazione automatica
L’uomo è da sempre alla ricerca di sistemi che lo supportino per risolvere un problema. Ad un certo punto si pensò di costruire delle macchine per calcoli generali. Quest’idea fu inizialmente pensata da Babbage concependo la macchina come qualcosa di programmabile (come l’Influential Machine). Questo concetto vide una formalizzazione solo con Turing, quando quest’ultimo usò la sua idea di calcolo per affrontare il problema della calcolabilità (cos’è calcolabile?). Turing riuscì a risolvere il problema della calcolabilità posto da Hilbert all’inizio del ‘900: Hilbert credeva che l’uomo doveva essere in grado di decidere se un’espressione all’interno di un sistema programmabile derivasse da assiomi oppure no e quindi fosse valida per quel sistema oppure no. Questo problema in realtà non è risolvibile per sistemi formali abbastanza complessi secondo alcuni teorici contemporanei (come il paradosso del venditore), ma Turing risulta essere colui che ha apportato delle novità importanti. Egli stabilì un modello di computazione: per la prima volta viene definito un modello di computazione (obiettivo primario di Alan), descritto e dimostrato che ci sono situazioni in cui non è possibile risolvere un problema, in particolare focalizzandosi su un aspetto: sono in grado di decidere se il mio agente di calcolo giungerà a terminazione o no? Utilizzando la macchina di Turing questo non si può sapere finché non verrà eseguita e si riuscirà a verificare se il progetto avrà portato a qualche risultato.
Il modello di calcolo ha bisogno di poter descrivere un linguaggio (avere a disposizione dei simboli e saperli riconoscere). I simboli possono generare delle azioni, ossia spostare l’attenzione su un altro simbolo oppure scriverne uno: il linguaggio serve per codificare un comportamento, un’informazione, e serve un’architettura che possa leggere e salvare le informazioni. Turing immagina una macchina in grado di leggere un nastro di simboli per poi (basandosi sul nastro) sapere andare avanti e indietro e scrivere sul nastro. Il modello offerto da Turing necessita una memoria e deve servirsi di linguaggi formali, codificare le informazioni e avere a disposizione un’architettura in grado di salvare un’informazione. La macchina di Turing permette di descrivere qualsiasi funzione calcolabile e ciò che non è calcolabile attraverso di essa è definitivamente incalcolabile (secondo la "tesi di Church-Turing", ancora oggi contestata).
Macchina di Turing doodle 2012: Link
Algoritmo
Nel ‘900 abbiamo una definizione di algoritmo che è ricollegabile alla macchina di Turing: è una sequenza finita di istruzioni che conduce a un risultato in un tempo finito (definizione legata al problema della terminazione: per dimostrare che qualcosa è confutabile devo prima terminare la procedura, anche ci sono diversi problemi in cui possiamo verificare ciò anche senza terminare la procedura). Ad oggi, la definizione più adottata è spesso affiancata da quest’altra: l’algoritmo è sequenza di istruzioni non ambigue che producono un risultato e definiscono un processo di terminazione. Per essere automatizzabile l’algoritmo deve avere una terminazione.
Diagramma di flusso
Un modo sintetico e ordinato per descrivere un algoritmo è il diagramma di flusso. L’attività necessita una raccolta di dati che poi vengono espressi attraverso un diagramma del flusso. Si usa una notazione di tipo grafico per descrivere i passi dell’algoritmo. Il punto di incisione (rappresentato da un rombo) afferma che leggendo i dati si dovrà prendere una decisione sulla sua veridicità. Gli informatici vogliono sapere se un algoritmo può terminare una procedura oppure no: si concentra su quanto sarà costoso raggiungere tal risultato.
Struttura di un algoritmo
Dal 1966, un enunciato afferma che un programma per essere codificato richiede al massimo queste strutture per descrivere qualsiasi algoritmo:
- Schema di sequenza: indica una sequenza di descrizione;
- Schema di soluzione: indica una sequenza che presenta una decisione;
- Schema di iterazione: presenta delle iterazioni, cioè il ripetersi delle azioni per un numero di volte.
Questo enunciato prende il nome di "Teorema di Böhm-Jacopini".
La codifica dell’informazione
Input e output
Esistono molteplici definizioni di algoritmo. Se, ad esempio, si considera l’aspetto operativo, l’algoritmo è un insieme di metodi che, considerati un insieme di dati di ingresso, produce risultati e quindi una serie di attività che producono un certo risultato. Ogni algoritmo è dunque pensato per lavorare con un certo tipo di dati. Un algoritmo operativo dunque rappresenta un insieme di metodi che ci consente di risolvere un problema. Il problema definisce un insieme di aspetti che possono essere considerati attraverso un algoritmo. Questo ci aiuta a distinguere due aspetti: da un lato abbiamo il problema, che può essere definito anche in senso astratto, dall’altro abbiamo le istanze del problema che vengono valutate in un determinato momento. Le istanze del problema sono i dati di ingresso che vengono analizzati e vengono definiti input, i quali producono un certo risultato, ossia un output. Uno degli aspetti critici della progettazione di un algoritmo è capire se la procedura che realizza funziona per ogni istanza del problema.
Codifica e decodifica
L’informazione per essere trasmessa e trattata necessita di due importanti operazioni tra trasmettitori: la codifica e la decodifica. La codifica esprime la trasmissione attraverso un sistema simbolico che la trasforma in messaggio. La decodifica è semplicemente una trasformazione tra una serie di simboli in un’altra serie di simboli (o di segnali) e potrebbe portare allo svolgimento di un’azione. È opportuno distinguere tra il messaggio (un insieme di simboli o segnali) rispetto all’informazione che viene codificata e che riporta ad un concetto. La stessa informazione, poi, può essere codificata in diversi modi, così come succede per la codifica stessa (dipende dalla condizione con cui il messaggio è stato trasmesso). L’ambiguità si presenta come una caratteristica fondamentale della trasmissione. I livelli di codifica, inoltre, possono essere molteplici. La codifica dell’informazione può essere utilizzata per gestire alcuni elementi di manipolazione e quindi contenere degli algoritmi.
Misurare l’informazione
È possibile misurare l’informazione? Secondo Claude Shannon, padre della "teoria dell’informazione", l’informazione è ciò che ci permette di ridurre il nostro grado di incertezza. Se è possibile definire l’incertezza del destinatario, è possibile anche misurare la quantità d’informazione trasmessa. L’idea di Shannon è che quando è massima la probabilità...
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Appunti Fondamenti di informatica
-
Fondamenti di Informatica
-
Modelli (Fondamenti informatica 2)
-
Appunti completi Fondamenti di informatica