Parte 6. I linguaggi di
codifica
6.1
I linguaggi: dichiarativi e procedurali
Lesigenza di produzione
di testi in formato elettronico ha condotto
allelaborazione di molteplici sistemi
orientati alla creazione e manipolazione
di testi, che vanno dai word-processor
ai più sofisticati sistemi di desktop
publishing (che consentono di controllare
tutto il processo di produzione, composizione
e formattazione dei testi a fini editoriali).
Diremo che i sistemi di text
processing si possono dividere in due
classi: i sistemi di tipo WYSIWYG
(What You See Is What You Get) e
i sistemi basati su markup language.
I primi sono programmi che
sfruttano le sempre maggiori potenzialità
grafiche offerte dagli elaboratori per tentare
di rappresentare sul video esattamente ciò
che apparirà poi sulla carta stampata. Il
problema sostanziale di questi sistemi è
che pur agevolando notevolmente il lavoro
dellutente, proponendosi come mezzo
rapido ed amichevole anche alloperatore
meno esperto (consentendogli di interagire
con la macchina tramite linterfaccia
grafica, e cioè manipolando direttamente
la rappresentazione visibile sullo schermo),
legano lelaborazione del testo ad
un determinato programma, rendendo quindi
alquanto problematica la portabilità tra
ambienti software diversi. Impiegando
cioè, al fine della rappresentazione del
testo, dei caratteri di controllo invisibili,
immessi dentro il file di testo, rendono
il file leggibile esclusivamente dal sistema
che lha generato. E la macchina
che inserisce direttamente il markup,
la codifica, non lutente, che non
necessita quindi di conoscere i comandi
a memoria. I sistemi di questo tipo non
si rivelano dunque come i più adatti alla
codifica scientifica di un testo.
Esistono anche programmi che
non si interessano dellaspetto che
il documento assume sul video, per concentrarsi
invece sul risultato finale. I file destinati
a questo tipo di programmi sono composti
dal testo che si vuole realizzare e da una
serie di istruzioni che indicano al device
di output (normalmente la stampante) quello
che deve fare. Se, da un lato, questi programmi
rendono complessa loperazione di elaborazione
del testo, dallaltro, utilizzando
file scritti con un normale editor (e quindi
in plain ASCII o formato solo
testo), rendono più agevole la trasportabilità
dei prodotti.
Questi markup language,
detti in italiano linguaggi di marcatura
o di codifica del testo, si basano su un
insieme di istruzioni facente parte, appunto,
di un vero e proprio linguaggio orientato
alla descrizione dei fenomeni di strutturazione,
composizione, impaginazione del testo stesso.
I comandi si configurano come sequenze di
caratteri ASCII visibili, e vengono immessi
dentro il file del testo, secondo una determinata
sintassi, immediatamente accanto alla sequenza
di caratteri a cui si riferiscono e cioè
marcando direttamente i blocchi
di testo cui intendono assegnare una determinata
funzione.
Il termine markup,
impiegato nellambito della codifica
del testo in formato elettronico, deriva
dalla designazione, nella stampa tipografica
tradizionale, di quellinsieme di simboli,
indicazioni, annotazioni aggiunte dallautore
o dalleditore su di un manoscritto
o su di un dattiloscritto per istruire il
tipografo o il compositore relativamente
a come trattare, dal punto di vista grafico,
il testo: impaginazione, scelta dei caratteri
da impiegare, spaziature, a capo ecc....
E possibile distinguere
due diverse classi di linguaggi di markup,
che differiscono per il tipo di comandi
impiegati allatto delloperazione
di codifica ovvero per la semantica delle
istruzioni utilizzate: markup specifico
e markup generico.
Il primo tipo consiste di
un insieme di istruzioni operative che indicano
localmente la struttura tipografica e compositiva
della pagina, le spaziature, linterlineatura,
le caratteristiche dei font, modificando
questi parametri direttamente per le porzioni
di testo cui si riferiscono. Questo tipo
di marcatura è anche detta procedurale
in quanto indica alla macchina le procedure
di trattamento cui deve sottoporre la sequenza
di caratteri al momento della stampa.
Si tratta dei primi linguaggi
di marcatura, ideati con lobiettivo
di occuparsi essenzialmente dellaspetto
tipografico del testo. Non accettando ancora
lottica del WYSIWYG, era necessario
individuare una serie di istruzioni locali
che consentissero alla periferica di generare
il documento nella forma tipografico-compositiva
desiderata. Sono questi i linguaggi orientati
sul documento più che sul testo,
da intendersi secondo le caratteristiche
in precedenza descritte.
Sostanziali si rivelano quindi
i limiti di un markup di tipo procedurale.
In un documento testuale la composizione
del manufatto rappresenta la realizzazione
della struttura astratta (logica) del testo,
la quale costituisce un bagaglio informativo
essenziale ai fini di una corretta comprensione
del testo stesso. Indispensabili le divisioni
di un testo in sezioni o capitoli, che coordinano
lintreccio testuale ed indicano al
lettore il ritmo narratologico. In una codifica
procedurale queste informazioni vengono
inevitabilmente perdute in quanto non rappresentate
e si rivela dunque necessario, per accedere
ad esse, conoscerne esattamente la composizione
tipografica. In più si presentano limiti
anche di carattere pratico: un linguaggio
di codifica procedurale comporta uno stretto
legame con il software di trattamento
del testo che è in grado di interpretarlo,
limitando dunque la portabilità del testo
codificato tra ambienti diversi. Inoltre
le istruzioni di formattazione di un testo
di questo tipo vengono fissate una volta
per tutte: se si intende alterare laspetto
stampato di un testo è necessario modificare
tutte le istruzioni di codifica.
Proprio a causa di questa
serie di limitazioni si è rivelata indispensabile
lelaborazione di un nuovo tipo di
linguaggio che consentisse essenzialmente
la rappresentazione della struttura astratta
del testo. Sono stati così creati i cosiddetti
linguaggi di markup generico dove
i simboli di codifica non vengono più impiegati
come istruzioni di formattazione, di impaginazione,
ma come indicatori di struttura.
I linguaggi basati su un generic
markup sono costituiti da un insieme
di marcatori (tag) che, immessi
nel testo, indicano non le caratteristiche
fisiche, ma la funzione assolta dal blocco
di testo cui si riferiscono. A ciascun blocco
viene associato un marcatore che lo definisce
come titolo, paragrafo, nota, citazione
ecc., senza preoccuparsi di come tali elementi
del testo appariranno fisicamente.
Poiché consentono di dichiarare
a quale tipo di struttura appartiene una
qualsivoglia porzione della fonte, questi
linguaggi vengono anche definiti linguaggi
dichiarativi.
Diremo quindi che mentre un
linguaggio basato su di uno specific
markup (o linguaggio procedurale)
si concentra essenzialmente sul documento,
un linguaggio basato su di un generic
markup (o linguaggio dichiarativo)
si concentra sul testo.
Marcando elementi appartenenti
alla struttura astratta del testo, un generic
markup language risulta dunque assolutamente
indipendente dai diversi device;
questo però non esclude la possibilità che
venga usato anche per ottenere un determinato
output del documento. E cioè possibile
marcare dichiarativamente anche aspetti
grafici della pagina (salti-pagina, spazi
bianchi, rientri ecc.) [1] . Se quindi il linguaggio
scelto si configura come piuttosto potente,
sarà possibile rappresentare il testo, e
cioè i suoi elementi, a vari livelli; si
potranno cioè costruire molteplici modelli
del testo e, in più, sarà consentito impiegare
un testo trattato con un linguaggio di codifica
dichiarativa per qualsiasi tipo di trattamento
informatico. Non essendo cioè tali linguaggi
dedicati a nessuna particolare applicazione,
se si è stati in grado di dichiarare tutto
ciò di cui si necessita, il testo potrà
essere analizzato dal punto di vista morfologico,
lessicografico, narratologico.
|