Pubblicato: martedì 30 aprile 2024
- di
Emiliano Grilli
categoria: Filosofia.
tags: | filosofia | testo puro | produttività |
Come salviamo l'informazione?
Il "digitale" è ormai parte integrante e fondamentale della vita di
ognuno di noi, ma spesso poco ci si sofferma sul suo funzionamento più
intrinseco e ci si limita ad utilizzare ciò che ci viene proposto
dall'esterno senza davvero rendersi conto di cosa succede all'interno
dei dispositivi elettronici che abbiamo in tasca o sulla scrivania, e
come questi trattino le informazioni.
Per questo farò un breve escursus di come le informazioni vengono
gestite in digitale, specificamente riguardo al testo puro.
Codifica binaria
E' noto che il mondo dei computer si basa sul codice binario: le
macchine di cui parliamo funzionano cioè in base due. Funzionano in
base due perché elettronicamente e a livello ingegneristico, gestire
due stati, "acceso" e "spento" è la cosa più semplice (ed è stato
chiaro fin dai tempi del telegrafo). Tutto ciò che è digitale quindi,
che sia dato, programma, immagine, video, stream, qualsiasi cosa, non
può prescindere da questa codifica. E' la base di tutto.
A differenza del mondo fisico, nel dominio digitale c'è un limite di
divisibilità nel piccolo che non si può trascendere: il bit. Il
bit è l'atomo dell'informatica: atomo significa infatti "che non si
può dividere". In realtà si è poi visto che i veri atomi si possono
dividere, ma il bit no: non esiste e non può esistere il mezzo bit o
il centesimo di bit.
Ok, ma come si passa dal bit a qualcosa di utile, come le foto di
teneri gattini?
Breve riassunto sui calcolatori
Il processore (CPU), il cervello di ogni device digitale, è
fondamentalmente un apparecchio che esegue calcoli ad una velocità
sorprendente, nell'ordine dei miliardi di operazioni al secondo (i
famosi GigaHertz), ed esegue questi calcoli sempre basandosi sulla
codifica binaria. Sia le istruzioni che gli vengono date (che so,
"somma il valore che c'è al registro x con quello al registro y")
che i valori (i dati) sono sempre codificati in forma binaria.
Inizialmente i computer erano macchine enormi, costosissime e
complessissime da costruire e da operare ed erano usati appunto per
questo, per fare calcoli scientifici con grandi numeri, o grandi
quantità di numeri, e in seguito per tenere la contabilità di grandi
multinazionali, o la gestione dei dati di uno stato e altri compiti di
larga scala su questo genere.
Successivamente, con l'avvento del personal computer all'inizio
degli anni '80, l'informatica è diventata alla portata di tutti e si è
via via legata sempre di più alla telematica, sfruttando le reti di
computer interconnessi che grazie ad internet, la "rete delle
reti", permettono di comunicare in un battere di ciglia da un capo
all'altro del mondo (cosa che oggi diamo per scontata ma che non lo
era affatto).
Altro concetto fondamentale è quello di memoria che può essere "di
lavoro" (RAM), dove il processore legge e scrive direttamente e
velocemente durante l'esecuzione, o "di massa" dove salvare le
informazioni per un uso successivo (schede perforate, nastro
magnetico, hard disk, cdrom, ssd e via dicendo).
Tornando ai bit: la macchina li sa gestire, spostare, salvare,
recuperare, sommare, moltiplicare, etc.. ma il significato che hanno
quei bit siamo noi a darlo: siamo noi che scriviamo il programma che
la macchina esegue, e siamo noi che sappiamo leggere i risultati che
la macchina ci restituisce a partire da un input che noi le
forniamo. Dal punto di vista della macchina sono solo infinite
sequenze di zero o uno. Il tenero gattino sono due milioni di bit uno
dietro l'altro.
Testo puro: un eroe sotto mentite spoglie
Perché voglio cantare un'ode al testo puro? Che cos'è il testo puro?
Il testo puro (plain text in inglese) o "testo semplice" (anche
se vedremo che non è poi così semplice) è il formato più basilare e
più standard in cui si possano salvare delle informazioni in digitale.
Tradizionalmente, questo tipo di file ha un'estensione .txt
, come
nel classico README.txt
che accompagna spesso il software, ma
possiamo trovare anche altre estensioni, a seconda del contenuto: ad
esempio un file markdown di solito è un .md
o un file HTML ha una
estensione .html
, ma diciamo che tutti questi tipi di file
contengono plain text e possono essere aperti con un editor di testo
semplice e letti da un umano, con diversi gradi di comprensibilità. Ci
possono anche essere dei file senza estensione (README
), in quel
caso per capire cosa c'è dentro ci può venire incontro il comando unix
file
:
file src/ardour/README
src/ardour/README: ASCII text
Il plain text è il formato in cui viene scritto il codice sorgente
ovvero il testo che viene utilizzato per scrivere i programmi da fare
eseguire alla macchina; in quel caso a seconda del linguaggio avremo
fai_questo.py
, fai_quello.js
, FaiCose.java
, etc...
Il testo semplice è anche il formato utilizzato in quella che è la
killer application di internet: l'email, anche se molti mandano le
mail in HTML (specialmente email di marketing o newsletter) anche in
questo caso il plain text garantisce una resa migliore con meno spreco
di banda. Anche la maggior parte dei protocolli di internet parlano di
solito in plain text.
Il testo semplice è anche, se vogliamo, il formato usato prima del
digitale, il formato con cui sono scritti da secoli i libri. E anche
in questo caso, a partire dallo stesso alfabeto era possibile avere
libri di poesie, libri di favole, libri scientifici, libri di
narrativa, etc...
Naturalmente una poesia o un racconto hanno una struttura immensamente
più libera rispetto ad un sorgente python o javascript, che deve
sottostare a delle regole molto più stringenti per essere interpretato
ed eseguito senza errori dalla macchina.
Una poesia non può essere "eseguita" da una CPU, ma può essere salvata
su file. Per farlo usiamo il testo puro, dove ogni carattere del testo
è rappresentato da uno specifico gruppo di bit, secondo una
convenzione standard per cui ad una certa sequenza di bit corrisponde
un determinato carattere.
Codifiche di testo
Uno dei modi di raggruppare i bit in elementi più grandi è il
byte che
consta di 8 bit e che viene usato anche come unità di misura della
memoria. Con un byte da 8 bit è possibile rappresentare 256 valori in
base 2, da 00000000
a 111111111
(da 0 a 255 in base dieci),
possiamo dire con una generalizzazione abbastanza veritiera che un
byte rappresenta un carattere del testo.
Un primo standard per la codifica del testo si ebbe negli anni '60 con
ASCII,
standard inizialmente a 7 bit (128 possibili valori) che codificava le
lettere maiuscole e minuscole della lingua inglese, lasciando fuori
non solo gli ideogrammi o gli alfabeti non latini, ma anche le comuni
accentate delle lingue europee, generando per decenni molta confusione
e svariate incompatibilità agli utenti non americani, che dovettero
ricorrere ad una estensione dell'ASCII a 8 bit chiamata
ISO-8859.
Oggigiorno fortunatamente esiste uno standard molto più avanzato
chiamato Unicode, che è retrocompatibile con ASCII e ISO-8859 ma
contiene tutti i simboli necessari a rappresentare qualsiasi lingua
umana ed è uno standard de facto utilizzato ovunque (comunemente la
variante UTF-8). In questo contesto non è più vera l'equivalenza
un byte = un carattere, perché unicode usa spesso più di un byte, ma è
comunque una astrazione utile per comprendere il quadro generale.
Vantaggi del testo puro
Il testo puro è un formato minimalista, fondamentale per tutta
l'informatica ed è uno dei modi primari con cui diamo senso ai
computer.
Esso offre molti vantaggi come formato di salvataggio delle
informazioni:
- Standard aperto: non mi lega a nessun vendor, posso leggere i miei
dati con qualunque software, è quindi estremamente portabile
- Future proof: essendo uno standard aperto, con grandissima
probabilità sarò in grado di leggerlo anche in futuro (cosa non vera
per i formati proprietari)
- Bassissima occupazione, in termini di byte, di spazio disco e di
banda: a tutti gli effetti costa meno salvarlo, trasmetterlo,
etc.. L'intera Divina Commedia occupa poco più di 500 Kb (meno di
una foto decente di un tenero gattino)
- Può essere sottoposto a controllo di
versione, che è ormai un requisito
indispensabile per la produzione di software
- Fornisce la base per la creazione di linguaggi più strutturati
(JSON, markdown, yaml, etc..)
- Può essere manipolato molto convenientemente, sottoposto a ricerca,
sostituzione, etc...
- Può essere convertito in altri formati (ad esempio può rappresentare
una tabella di database con il formato
CSV)
- Può essere copiato e incollato con facilità mantenendo il 100%
dell'informazione, in questo senso ne è la sorgente
- E' puro contenuto, indipendente dalla forma in cui si deciderà di
presentarlo.
Markdown
Tra i linguaggi che si possono usare per dare un minimo di struttura
al testo puro un posto di primo piano lo ricopre sicuramente
Markdown, un linguaggio di markup che molto semplicemente mette a
disposizione dell'autore elementi strutturali come titoli e liste, ed
elementi di formattazione come grassetto, corsivo,
monospaziato
e permette anche l'inserimento di link
ipertestuali.
Con queste pochissime istruzioni, che si possono imparare in breve
tempo, è possibile comporre testi complessi e strutturati che possono
poi essere renderizzati in HTML o in altri formati (questo articolo ad
esempio è stato scritto in markdown)
Org
Un altro formato di markup utilissimo (soprattutto se si usa emacs) è
il formato di Org mode, che ha feature molto
più avanzate di markdown come ad esempio la possibilità di usarlo per
il Literate
Programming, o
l'integrazione con agenda e calendario per creazione di TODO, o
addirittura la possibilità di crearsi una knowledge base personale
(una sorta di wiki).
Pur essendo meno portabile di markdown in quanto è utilizzabile a
piena potenza solo sotto emacs, org-mode è comunque un formato
puramente testuale e per il quale valgono tutti i vantaggi sopra
elencati.
Ledger
Un ulteriore esempio della potenza e della portabilità del testo puro
come formato dei propri dati è ledger, un sistema
completo di contabilità in Partita
doppia che utilizza un semplice formato in testo puro per la
tenuta del libro mastro (journal), e a partire da questo permette di
creare tutta una serie di reportistica di bilancio e in definitiva di
tenere a bada i propri conti (o quelli della propria azienda)
Anche ledger, manco a dirlo, ha un modo dedicato per emacs.
Conclusioni
Spero che questa piccola elucubrazione da vecchio informatico abbia
ispirato o almeno incuriosito qualcuno ad esplorare i molteplici modi
in cui il testo puro può arricchire la nostra vita digitale, e
mostrato che esso rappresenta quanto di più vicino ci possa essere a
una informazione pura, inalterata, essenziale.
Facendo un parallelo con le tecniche delle arti visive, paragonerei il
testo puro alla umile matita: strumento basilare ma indispensabile,
che costituisce il fondamento di tutto quello che viene dopo.
Ispirazione
E finalmente, il premio meritatissimo di chi è arrivato fino in fondo, il tenero gattino! (In ASCII art naturalmente)
_
\`*-.
) _`-.
. : `. .
: _ ' \
; *` _. `*-._
`-.-' `-.
; ` `.
:. . \
. \ . : .-' .
' `+.; ; ' :
: ' | ; ;-.
; ' : :`-: _.`* ;
.*' / .*' ; .*`- +' `*'
`*-* `*-* `*-*'
(ASCII Art by Blazej Kozlowski)