34
Lezione 2 Dagli editor di testo alla codifica di alto livello

Lezione 2 Dagli editor di testo alla codifica di alto livello

Embed Size (px)

Citation preview

Page 1: Lezione 2 Dagli editor di testo alla codifica di alto livello

Lezione 2 Dagli editor di testo alla codifica di alto livello

Page 2: Lezione 2 Dagli editor di testo alla codifica di alto livello

Il punto di partenza:

Testo digitalizzato a livello di carattere (usando ASCII, ISO-Latin-1, o UNICODE)

Le avventure di PinocchioCapitolo ICome andò che Maestro Ciliegia, falegname, trovò un pezzo di legno, che piangeva e rideva come un bambino.C'era una volta...- Un re! - diranno subito i miei piccoli lettori.- No, ragazzi, avete sbagliato. C'era una volta un pezzo di legno.Non era un legno di lusso, ma un semplice pezzo da catasta, di quelli che d'inverno si mettono nelle stufe e nei caminetti per accendere il fuoco e per riscaldare le stanze.Non so come andasse, ma il fatto gli è che un bel giorno questo pezzo di legno capitò nella bottega di un vecchio falegname, il quale aveva nome mastr'Antonio, se non che tutti lo chiamavano maestro Ciliegia, per via della punta del suo naso, che era sempre lustra e paonazza, come una ciliegia matura.

Page 3: Lezione 2 Dagli editor di testo alla codifica di alto livello

Cosa intendiamo qui per “testo”?

Testo: “insieme di parole, dal latino textus, correlate tra loro per costituire un'unità logico-concettuale”

Significato qui rilevante: una stringa di simboli che possa essere prodotta/letta direttamente da un essere umano. Ad esempio: Un brano in un qualche linguaggio naturale. Un insieme di dati leggibili (p.es. quelli di un elenco telefonico) Un passo di un codice di programmazione, Il file di configurazione di un software

Ma non, ad esempio: Qualsiasi opera di ingegno umana (p.es. non un dipinto, una

melodia fischiettata,…) Un file prodotto e interpretato esclusivamente da macchine

(p.es. una parte di un programma eseguibile) Una sequenza casuale di simboli

Criterio intrinsecamente vagovago

Page 4: Lezione 2 Dagli editor di testo alla codifica di alto livello

Elaborazione di un testo a livello carattere: 3 categorie di programmi

Editor di testo:p.es. blocco note, Emacs, Scite, …

Programmi di videoscrittura:Microsoft Word, WordPerfect, Openoffice

Writer,… Programmi di “Desktop publishing”

Adobe Pagemaker, Quark Xpress,…

Page 5: Lezione 2 Dagli editor di testo alla codifica di alto livello

Editor di testo Programmi per caricare, scrivere o

modificare testi in formato ASCII (Latin-1 / UNICODE)

Funzioni di stampa ridotte all’osso (niente formattazione del carattere, paragrafo, …)

Funzioni anche molto sofisticate di manipolazione del testo (ricerca/sostituzione avanzata, macro, …)

Sensibili alla sintassi di vari tipi di file di testo (linguaggi di programmazione, HTML, …)

Page 6: Lezione 2 Dagli editor di testo alla codifica di alto livello

Editor di testo

“Blocco note” (ingl. “Notepad”) di Windows. Editor minimalista, distribuito con

Windows. Legge di base file con suffisso .txt

Nessuna funzione sofisticata Nessuna sensibilità al tipo di file Conosce UNICODE Problemi nel trattamento di file non-

windows

Page 7: Lezione 2 Dagli editor di testo alla codifica di alto livello

Blocco note / Notepad

Page 8: Lezione 2 Dagli editor di testo alla codifica di alto livello

Blocco note / Notepad

Segni di fine lineaUnix non riconosciuti (LF)

Page 9: Lezione 2 Dagli editor di testo alla codifica di alto livello

Blocco note (su un file binario .doc)

Caratteri binarinon stampabili

Caratteri stampabilipresenti nel file Word

Page 10: Lezione 2 Dagli editor di testo alla codifica di alto livello

Scite

Page 11: Lezione 2 Dagli editor di testo alla codifica di alto livello

Scite (su un file binario .doc, scritto da Word)

Page 12: Lezione 2 Dagli editor di testo alla codifica di alto livello

Scite (su un file .html)

Page 13: Lezione 2 Dagli editor di testo alla codifica di alto livello

Scite (su un file .c , un linguaggio di programmazione)

Page 14: Lezione 2 Dagli editor di testo alla codifica di alto livello

Scite(su un altro linguaggio, Python)

Page 15: Lezione 2 Dagli editor di testo alla codifica di alto livello

Emacs Probabilmente il più potente editor esistente. Può essere esteso dagli utenti per usi vari;

modulare Sofisticata serie di comandi sul testo Gratuito, con codice a disposizione (“open

source”) Due versioni: GNU Emacs (1976 Richard

Stallman) e Xemacs Disponibile per UNIX, Windows, Mac, … Interfaccia prevalentemente non grafica; ben

documentata ma difficile da imparare

Page 16: Lezione 2 Dagli editor di testo alla codifica di alto livello

Emacs: estensibilità

Grazie a varie estensioni, oltre alle funzioni più comuni, Emacs consente di: Scrivere ed analizzare programmi in qualsiasi linguaggio Leggere la posta e le news Visualizzare pagine web Visualizzare alcuni tipi di immagini Trattare documenti multilingue Visualizzare calendari e agende di vario tipo Eseguire programmi esterni sul testo caricato Giocare, …

Page 17: Lezione 2 Dagli editor di testo alla codifica di alto livello

GNU Emacs(sul testo di Beccaria)

Page 18: Lezione 2 Dagli editor di testo alla codifica di alto livello

GNU Emacs (uso dei colori su un file in c)

Page 19: Lezione 2 Dagli editor di testo alla codifica di alto livello

GNU Emacs (calendario con festività varie)

Page 20: Lezione 2 Dagli editor di testo alla codifica di alto livello

GNU Emacs (fasi lunari, esempi di alfabeti)

Page 21: Lezione 2 Dagli editor di testo alla codifica di alto livello

Editing avanzato: sistemi di sicurezza anticrash (Emacs, Word)

Salvataggio automatico ogni n caratteri battuti

Mantenimento della versione precedente ogni volta che si salva un file (“Copia di backup” in Word)

Possibilità di criptazione dei file Possibilità di lavorare su file diversi

come se fossero uno stesso documento

Page 22: Lezione 2 Dagli editor di testo alla codifica di alto livello

Editing avanzato: comandi di alterazione/spostamento (Emacs)

Con una singola combinazione di tasti è possibile:

Trasporre due caratteri, due parole, due righe (“teh” “the”)

Mettere in maiuscolo/minuscolo la parola che segue (tutta, o solo la lettera iniziale)

Spostarsi di una frase/paragrafo/sezione… Cancellare fino a fine/inizio riga …

Page 23: Lezione 2 Dagli editor di testo alla codifica di alto livello

Editing avanzato: macro (Emacs, Word)

Possibilità di registrare una sequenza di comandi mentre la si esegue

La sequenza può essere poi salvata, modificata e riprodotta con una semplice combinazione di tasti

Possibilità di eseguire una macro n volte Utile per velocizzare sequenze di operazioni

ripetitive

Page 24: Lezione 2 Dagli editor di testo alla codifica di alto livello

Editing avanzato:trova/sostituisci tramite espressioni regolari Il linguaggio

delle espressioni regolari (regular expressions) consente di descrivere in modo astratto gruppi di caratteri.

Esempio (sintassi di Emacs)

Espress. Significato

a Il carattere “a”

. Qualsiasi carattere (“\.” trova il punto)

[a-z] Un carattere compreso tra “a” e “z” minuscole

[^a-z] Ogni carattere tranne quelli in [a-z]

ba? “b” o “ba” (“a” occorre 0 o 1 volte)

ba+ “ba”, “baa”, “baaa”, “baaaa”, … (1 o più volte)

ba* “b”, “ba”, “baa”, “baaa” … (0 o più volte)

\(da\)+ “da”, “dada, “dadada”, …

\(in\|ne\) “in” oppure “ne” (alternativa)

\(.+\) \1 Gruppo di uno o più caratteri ripetuto con 1 spazio in mezzo (“alto alto”, “caldo caldo”)

Page 25: Lezione 2 Dagli editor di testo alla codifica di alto livello

Editing avanzato Memoria nelle espressioni regolari:

\( testo1 \) \( testo2 \) memorizza testo1 e testo2 nelle variabili \1 e \2

\1 restituisce testo1 \2 restituisce testo2

Utile nelle ricerche di espressioni regolari e nella sostituzione

Consente di trovare ripetizioni di uno stesso elemento testuale, qualunque esso sia.

Page 26: Lezione 2 Dagli editor di testo alla codifica di alto livello

Editing avanzato:trova/sostituisci tramite espressioni regolari Trova: \(.\)\(.\)\(.\)

e sostituisci con: \3\2\1 “Trova qualsiasi terna di caratteri, assegnagli i numeri \1, \2 e \3 …e riscrivili in ordine inverso

Esempio: “abc” \1 = a , \2 = b, \3 = c “cba”

Trova: \(io\|lui\) e sostituisci con: \1 \1

“io” “io io” ; “lui” “lui lui”

Page 27: Lezione 2 Dagli editor di testo alla codifica di alto livello

Editing avanzato:trova/sostituisci tramite espressioni regolari Trova: \([^.?!]\) +\([A-Z]\(\.\|[a-z]+\)\) +\([A-Z][a-z]+\)

e sostituisci con: \1 <c>\4</c>, <n>\2</n> “Dopo un carattere che non sia il punto fermo, esclamativo o

interrogativo, trova un nome maiuscolo o una iniziale puntata, seguito dopo uno o più spazi da un cognome, e …

…inverti il nome o l’iniziale, con il cognome, marcandoli con <n(ome)> e <c(ognome)> rispettivamente, separati da “,” ”

Esempio: Marco Tullio <c>Tullio</c>, <n>Marco</n> M. Tullio <c>Tullio</c>, <n>M.</n> . Ecce Homo! Non fa nulla (non otteniamo

<c>Homo</c> <n>Ecce</n>)

Page 28: Lezione 2 Dagli editor di testo alla codifica di alto livello

Editor avanzati Pro. Utilissimi:

Per elevati volumi di scrittura, o frequenti cicli di correzione (uso rapido dei tasti invece del mouse)

Quando l’aspetto del documento stampato è irrilevante o viene delegato ad altri (p.es. una casa editrice) o a un software specifico

Quando si devono modificare elevate quantità di dati simili (elenchi di nomi, numeri telefonici, errori sistematici in un documento lungo)

Per testi particolari (programmi, file “tecnici”), se l’editor può marcare automaticamente la sintassi, e/o correggere sviste.

In genere gratuiti, e disponibili su ogni S.O.

Page 29: Lezione 2 Dagli editor di testo alla codifica di alto livello

Editor avanzati Contra.

Mancanza di formattazione tipo “WYSIWYG” (What You See Is What You Get)

Ripida curva di apprendimento per poter utilizzare i programmi al di là delle funzioni di base.

Il trova/sostituisci con le espressioni regolari può fare gravi danni in un testo (importanza del backup!)

Compatibilità parziale con programmi che richiedono o si aspettano testo formattato (Word)

Page 30: Lezione 2 Dagli editor di testo alla codifica di alto livello

Per saperne di più Sito principale di Emacs:

http://www.gnu.org/software/emacs/ Manuale in italiano di Emacs online:

http://docit.bice.dyndns.org/Emacs/e14/cap_emacs.html

Espressioni regolari: Sez. 4.2 del Lenci, Montemagni , Pirrella “Testo e

Computer” Manuale online di Emacs, sez. sulle espressioni

regolari:http://docit.bice.dyndns.org/Emacs/e14/cap_search.html#sintassi-delle-espressioni-regolari

Page 31: Lezione 2 Dagli editor di testo alla codifica di alto livello

Elaborazione di un testo a livello carattere: categorie di programmi

Editor di testo:p.es. blocco note, Emacs, Scite, …

Programmi di videoscrittura:Microsoft Word, WordPerfect, Openoffice

Writer,… Programmi di “Desktop publishing”

Adobe Pagemaker, Quark Xpress,…

Page 32: Lezione 2 Dagli editor di testo alla codifica di alto livello

Programmi di videoscrittura Consentono una gestione “globale” del

documento Composizione, modifica, revisione Definizione struttura (metodo degli “stili”) Formattazione e stampa

Più limitati nelle funzioni di editing rispetto agli editor avanzati, e nelle funzioni di composizione e stampa rispetto ai veri programmi di Desktop Publishing

Problemi di interoperatività (Word/altri, vecchie/nuove versioni, Windows/Mac)

Page 33: Lezione 2 Dagli editor di testo alla codifica di alto livello

Programmi di videoscrittura

Le funzioni di formattazione e stampa messe a disposizione da un programma come Word sono già il riflesso di una (spesso non esplicita o coerente) strutturazione del testo che va al di là della codifica di livello 0 Grassetto enfasi (?) Corsivo citazione (?) / enfasi (?) / … Centratura titolo (di testo/sezione,…?)

Page 34: Lezione 2 Dagli editor di testo alla codifica di alto livello

Formato grafico e codifica L’uso del formato grafico per rappresentare

una codifica di alto livello è insufficiente Non sufficientemente esplicito (cosa “significa”

un corsivo ?) Difficilmente combinabile

(corsivo+grassetto+apice+… = illegibilità) Non applicabile a certi elementi (p.es. fine

pagina) o legato a determinate realizzazioni del testo (video a colori, stampa,…)

Esteticamente debole