Introduzione all’informatica umanistica
- Introduzione alle Digital Humanities
- Fondamenti di informatica: teoria dell'informazione, algoritmi e linguaggi, architettura di un elaboratore
- 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à materiale. 1
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 si 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 eseguendo 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 i dati sono elaborati dal sistema attraverso un programma (software) per calcolare il risultato. Il risultato è infine restituito tramite output (es: stampante, video, schermo) 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 monitor, 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’unità 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.
È volatile, 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