INTRODUZIONE ALL’INFORMATICA UMANISTICA
Introduzione alle Digital Humanities
Fondamenti di Informatica: teoria dell'informazione, algoritmi e linguaggi, architettura di un eleboratore
Internet & Web
Creazione di pagine web: HTML & CSS
Il metalinguaggio XML
Informatica umanistica e filologia: l’edizione scientifica digitale [Dr. Anna Cappellotto]
TEI e codifica dei testi
OCR: Riconoscimento ottico dei caratteri [Dr. Stefano Bazzaco]
RegEx: Espressioni regolari e loro utilizzo
Natural Language Processing: l'elaborazione del linguaggio naturale
Distant reading: introduzione e uso di Voyant
Distant Reading con Sentiment Analysis [Dr. Simone Rebora]
Stilometria [Dr. Simone Rebora] Introduzione alle Digital Humanities
le Digital Humanities sono un ramo avanzato delle discipline umanistiche che usa strumenti
computazionali per lo studio di vecchie e nuove tematiche e al contempo si pone come scopo quello
di rinnovare la pratica di ricerca di discipline umanistiche, presentano un ampio ventaglio che spazia
dalla mappatura di monumenti con tecnologie 3D (in grado di aiutare gli storici ad esplorare civiltà
antiche) allo smart management di informazioni per lo studio di opere di un particolare poeta.
Un’altra curiosa applicazione vede protagonisti i droni utilizzati dagli archeologi durante le loro
spedizioni: un chiaro esempio di incontro fra “digital” e “humanities”.
Le DH garantiscano pari opportunità alla società globale del XXI secolo, basti citare i “musei digitali”
o le collezioni d’arte online. Anni fa, visitare un museo e godere dei più grandi capolavori artistici
erano appannaggio di una ristretta élite, favorita da condizioni economiche, culturali, storiche e
geografiche. Ora, con l’applicazione delle tecnologie digitali alle materie umanistiche, la maggior
parte delle persone ha la possibilità di fare propri almeno i rudimenti di storia, delle arti e delle altre
discipline. Fondamenti dell’informatica
Definizione di informatica: l’informatica è la scienza che si occupa della trasmissione delle
informazioni per mezzo dell’elaborazione elettronica, la quale rende possibile gestire e organizzare
le masse di dati prodotti.
L’informatica può definirsi a pieno titolo come una scienza universale dell’informazione, ovvero
come l’informazione possa essere codificata, manipolata, valutata, analizzata e misurata.
L’informatica, come scienza, si fonda sulla teoria della calcolabilità effettiva sviluppata nell’ambito
dello studio dei fondamenti della matematica, intorno agli anni 30 (tributo di studiosi quali Church,
Gödel, Kleene, Post e Turning), in un effervescente panorama culturale e scientifico di inizio secolo
– sono di quel periodo gli studi sulla materia, meccanica quantistica e sui fondamenti della
matematica – si sviluppa pienamente negli anni 40 con la realizzazione del primo calcolatore
elettronico.
CODICE BINARIO
Come rappresentare in maniera informatica i dati? Un codice è una convenzione prestabilita, è uno
strumento dotato di un insieme di segni (alfabeto del codice), e di un insieme di regole di
composizione dei segni per mezzo dei quali è possibile rappresentare fenomeni della realtà
1
materiale. I computer memorizzano ed elaborano le informazioni sotto forma di bit (Binary digit)
che è l’unità di informazione base e può rappresentare due informazioni: vero/falso, acceso/spento.
Si parla di rappresentazione binaria (o digitale). Il linguaggio di base mediante il quale ogni info deve
essere codificata è costituito da due soli simboli (0 e 1) sono simboli, non numeri. I computer
memorizzano ed elaborano le info sotto forma di bit per ragioni tecnologiche. Per poter
rappresentare un numero maggiore di info è necessario utilizzare sequenze di bit. Il processo
secondo cui si fa corrispondere ad una info una configurazione bit prende il nome di codifica dell’info
L’ALGORITMO
Supponendo avere a disposizione un linguaggio per programmare una macchina. Tale linguaggio è
caratterizzato da un insieme di istruzioni in grado di far eseguire più o meno complesse operazioni
alla macchina. I dati sono semplici numeri naturali. Un algoritmo è quindi una sequenza finita di
istruzioni nel linguaggio della macchina. Secondo queste ipotesi è quindi possibile mettere in
sequenza tutti i possibili algoritmi enumerarli come è possibile enumerare i numeri naturali:
P0..P1..P2.. trattasi della logica di calcolo seguita dal programma informatico per elaborare i dati.
Per rappresentare un algoritmo si utilizza un diagramma di flusso o diagramma a blocchi come in
matematica (flow Chart). Ogni blocco descrive un’operazione di calcolo e assegnazione dei dati.
Generalmente i primi passi dell’algoritmo consistono nell’inserimento dei dati di input (entrata). I
passi intermedi riguardano l’elaborazione, mentre quelli finali la visualizzazione dei risultati come
output (uscita). In alternativa al diagramma a blocchi, un algoritmo può essere rappresentato da
uno pseudocodice.
La differenza tra algoritmo e programma? Non sono la stessa cosa: L’algoritmo è il metodo di
risoluzione del problema. Il programma è un codice di linguaggio della macchina eseguibile dal
computer. L’algoritmo deve essere codificato in un programma informatico tramite un linguaggio di
programmazione per essere eseguito da un computer.
Le caratteristiche dell’algoritmo:
→
Completezza è capacità dell’algoritmo di trovare una soluzione al problema per cui si è
sviluppato. →
Ottimalità questa caratteristica si verifica se la soluzione trovata dall’algoritmo è la migliore
possibile. →
Complessità è la difficoltà di utilizzo dell’algoritmo in termini di tempo di elaborazione impiegato
(complessità temporale) e di memoria utilizzata (complessità spaziale).
Un problema trattabile può essere risolto utilizzando algoritmi diversi, più o meno complessi. La
teoria della complessità: è il campo dell’informatica che studia la complessità degli algoritmi e
individua quello più in grado di risolvere il problema nel minor tempo di esecuzione e consumo.
(complessità polinomiale) Un problema di dice trattabile se esiste un algoritmo in grado di risolverlo
computazionalmente con una complessità polinomiale. In caso contrario, è detto intrattabile.
IL LINGUAGGIO DI PROGRAMMAZIONE
Il linguaggio di programmazione è usato per programmare un computer e eseguire una serie di
operazioni (algoritmo) tramite di una sequenza di istruzioni detta programma informatico.
ALGORITMO (o pseudocodice) 2
PROGRAMMA INFORMATICO LINGUAGGIO DI PROGRAMMAZIONE
COMPUTER
Tipi di linguaggi di programmazione:
• Linguaggi procedurali: l’esecuzione del programma inizia con la prima istruzione e procede
seguendo il flusso imposto dalle condizioni.
• Linguaggi orientati agli oggetti (OOP): basati sul principio delle proprietà e le relazioni degli
oggetti, istanze e classi.
• Linguaggi di programmazione interpretati: i linguaggi sono eseguiti direttamente tramite la
lettura del codice sorgente (file di testo) da parte di un apposito software interprete.
→ →
CODICE SORGENTE SOFTWARE INTERPRETE ESECUZIONE
• Linguaggi di programmazione compilati: i linguaggi sono eseguibili soltanto dopo la
trasformazione del codice sorgente in linguaggio macchina. Questa operazione è detta
compilazione ed è effettuata tramite appositi software compilatori.
→ → →
CODICE SORGENTE SOFTWARE COMPILATORE OGGETTO ESEGUIBILE ESECUZIONE
Il primo linguaggio di programmazione della storia viene creato nel 19° secolo da Ada Lovelance per
programmare la macchina di Charles Babbage. Con la nascita dei primi elaboratori sono nati diversi
linguaggi di programmazione tra cui i più conosciuti sono i seguenti:
• Basic
• Linguaggio C
• Cobol
• Fortran
• Java
• Lisp
• Pascal
I professionisti che utilizzano i linguaggi di programmazione per creare dei programmi informatici
sono detti programmatori informatici. Il loro scopo è tradurre l’algoritmo in un programma
informatico eseguibile dal computer utilizzando le regole di un linguaggio di programmazione.
Lo pseudocodice (o pseudolinguaggio) : non è un linguaggio di programmazione e non è eseguibile
dai computer. Nelle fasi di progettazione e di analisi l’algoritmo può essere descritto tramite uno
pseudocodice in alternativa ai diagrammi di flusso. lo scopo dello pseudocodice agevolare l’attività
di programmazione.
ARCHITETTURA DI UN ELABORATORE
In un elaboratore elettronico le informazioni sono elaborate in dati che sono inseriti tramite
periferiche di input (es: tastiera, scanner) e convertitore di linguaggio binario. Successivamente si
dati sono elaborati dal sistema attraverso un programma (software) per calcolare il risultato. Il
risultato è infine restituito tramite output (es: stampante, video, schemo) o verso dispositivi di
memoria (es: memoria Ram, hard disk, ecc).
L’informatica si distingue in due grandi comparti, l’informatica teoria e l’informatica applicata.
• Informatica teorica: studia le teorie basi della computabilità; es. studio degli algoritmi e della
teoria della complessità.
• Informatica applicata: l’informatica applicata, invece, si basa sulla realizzazione dei
componenti hardware dei computer e dei programmi/procedure software per l’elaborazione
dei dati. 3
→
Hardware insieme dei dispositivi fisici utilizzati per costruire un computer o un sistema di
elaborazione dei dati. Ad esempio: microprocessore, il disco fisso, il monito, la memoria, stampante,
la tastiera, ecc.
→
Software Il termine software rappresenta i programmi per computer. È un termine, che tradotto
letteralmente significa "elementi molli, creato per contrasto alla parola hardware, che significa
invece, "elementi duri". Un software è un insieme di istruzioni, raccolte in uno o più file, che indicano
al PC cosa fare.
- Telematica: è una tecnologia informatica applicata che si occupa della trasmissione dei dati tra
computer situati in differenti luoghi. Il termine “telematica” nasce dall’unione dell’informatica
e delle telecomunicazioni.
- Intelligenza artificiale: è la disciplina che studia l’applicazione delle tecnologie informatiche per
risolvere problemi complessi, utilizzando un metodo di ragionamento simile a quello umano.
L’architettura di von Neumann:
nella macchina di von Neumann i dati e i programmi risiedono fisicamente nella stessa memoria del
computer consentendo alla macchina di essere programmabile al 100%. I dati sono elaborati da un
processore che il risultato come output. Questa architettura è ancora oggi utilizzata nella
progettazione dei moderni computer.
Negli anni 60 i computer sono una tecnologia accessibile soltanto alle grandi aziende e sono di
grandi dimensioni. Negli anni 70 comincia un processo di miniaturizzazione che porterà alla nascita
dei personal computer che a partire dal 2010 stanno convergendo progressivamente nella telefonia
con la nascita di smartphone e tablet.
L’architettura del computer (elaboratore) si basa sullo schermo funzionale, (ideato nel 1947 da Von
Neumann) una unità centrale di elaborazione (CPU), dalla memoria centrale, e dalle unità
periferiche di entrata (input) e uscita (output).
L’unita centrale di elaborazione (Cental Processing Unit o CPU) è composta da una unità di controllo
(Control Unit) e una unità di logico – aritmetica (ALU o Arithmetic Logic Unit).
Arithmetic Logic Unit ALU: esegue le operazioni elementari necessarie per l’esecuzione delle
istruzione su dati binari
Control Unit CU: controlla e coordina l’attività della CentralProcessingUnit CPU, responsabile del
trasferimento e della decodifica delle istruzioni dalla memoria centrale.
Il programma informatico determina una sequenza di operazioni e di comandi che la macchina
esegue per elaborare i dati. 4
Ogni singolo componente del computer è collegato agli altri tramite l’unità centrale di elaborazione
(CPU). Le unità periferiche svolgono le funzioni di entrata e uscita dei dati. Il programma che regola
l’elaborazione e il flusso dei dati input e output si trova nella memoria del computer.
La CPU (Central Processing Unit) è l'unità di elaborazione centrale (il microprocessore). È il cuore
del computer, in cui avviene l'esecuzione effettiva delle operazioni sui dati e dei calcoli
Il clock (orologio) permette il sincronismo delle operazioni.
Il registro è una locazione di memoria. La CPU sposta temporaneamente nei suoi registri ciò che gli
interessa in un certo momento, non lavora direttamente sulla memoria centrale.
La memoria centrale contiene tutta l’informazione che deve essere elaborata a breve termine. Ogni
elemento di info per poter essere elaborato deve prima essere acquisito dalla memoria centrale e
portato nei registri. Il sistema operativo le carica dalla memoria di massa quando comandiamo
l’esecuzione di un programma. Vengono trasferite alla CPU quando la CPU ne ha bisogno.
È volative, ossia se ne perde il contenuto quando la macchina viene spenta. In generale, di
dimensioni ridotte ed un tempo di accesso/lettura fino a pochi nano-secondi.
Unità di misura: byte (equivale a 8 bit) word (16 bit)
Kilobyte 2^10 KB
Megabyte 2^20 MG
Gigabyte 2^30 GB
Terabyte 2^40 TB
Il bus di sistema collega questi el