main index Qui sotto, l'introduzione della mia tesi di laurea. Il mio poderoso curriculum è in questa pagina.


Introduzione

Fino a non molto tempo fa nell'immaginario collettivo dei "non addetti ai lavori" il programmatore era una persona in camice bianco, in un ambiente asettico, che portava con aria seria sotto il braccio un grosso pacco di stampati e schede perforate. In tempi più recenti, durante il boom degli anni ottanta (la diffusione di massa di personal computer e l'aumento pressoché verticale del rapporto tra prezzo e prestazioni), la figura si è evoluta in quella di un nevrotico picchiettatore di tastiere, tanto più bravo quanto più veloce nella digitazione, velocità presumibilmente proporzionale alla conoscenza del "linguaggio" della macchina. Entrambe le immagini non sono molto distanti dalla realtà: fino alla reale diffusione di massa di macchine sufficientemente potenti, l'interfaccia uomo-macchina, in modo particolare per quel che riguarda l'inserimento di regole ("programmazione"), ha pagato il caro prezzo del compromesso tra prestazioni e semplicità d'uso. Uno dei filoni di ricerca per rendere più facile l'inserimento di regole in un elaboratore, specialmente nei confronti di chi non ha una solida "esperienza in digitazione", è quello che punta ai linguaggi visuali: l'obbiettivo è l'inserimento delle regole non più in forma testuale ma in forma visuale ottenendo, a scapito di un po' di risorse macchina, il duplice vantaggio di essere semplice e intuitivo anche per i "non addetti ai lavori". La strategia object-oriented ha seriamente semplificato la progettazione e lo sviluppo di simili tools. Il sistema VLCC (Visual Language Compiler-Compiler) è un generatore di ambienti di programmazione visuale. L'utente del VLCC definisce un linguaggio visuale (regole, simboli, etc) ottenendo in output un parser per tale linguaggio. Concettualmente simile a strumenti come YACC e BISON, il VLCC è però in architettura object-oriented ed ha a che fare con simboli visuali come possono essere per esempio figure geometriche e bitmap (mentre i linguaggi classici hanno a che fare solo con caratteri) e con relazioni visuali come "collegato a" e "interno a" (mentre i linguaggi classici sono ristretti alla sola concatenazione tra stringhe).
Il VLCC è uno strumento in continua evoluzione, a cui hanno lavorato in tempi diversi vari tesisti dell'Università degli Studi di Salerno. Il VLCC gira in ambiente Windows ed è stato scritto in Borland C++. Per questi motivi si assume che il lettore di questo testo abbia conoscenze formali di linguaggi classici e linguaggi visuali, dei tool appena citati, della filosofia object-oriented e del C++, nonché dell'ambiente Windows; alla fine di questo testo viene indicata la bibliografia utilizzata come materiale di documentazione per questo lavoro.

Click here for my CV Ho conseguito la laurea in Scienze dell'informazione il 23 gennaio 1997 all'Università degli studi di Salerno. Titolo della tesi: Progetto ed implementazione di un editore di simboli evoluto per il sistema VLCC.

Tipo di lavoro: ricerca applicata, nell'ambito di un più grande progetto - la realizzazione di un generatore di compilatori di linguaggi visuali (Visual Language Compiler-Compiler: un ambizioso e massiccio "YACC visuale").


Alcune curiosità a proposito di questo lavoro.

Innanzitutto do una soddisfazione alla mia vanità: la mia tesi di laurea in scienze dell'informazione, tesi di ricerca applicata nel campo dei linguaggi visuali di cui hai appena letto l'introduzione, è stata profumatamente premiata (cioè col massimo punteggio ottenibile, quello dei "guru dell'informatica", quello "davvero impossibile").

Devo anche dire che non è stato il lavoro più difficile che io abbia mai fatto, quantunque mi abbia richiesto un anno a tempo pieno e diversi mesi di "preparatoria". Integrare ad un lavoro già complesso seimila righe di codice C++, per non contare tutta la programmazione "intermedia", non sono uno scherzo, ma modestamente (si fa per dire) ho fatto anche cose più potenti (e profumatamente pagate).

Sul sito del Dipartimento di Informatica ed Applicazioni dell'Università di Salerno c'era fino a poco tempo fa ancora una pagina superstite con un abstract della mia tesi, scritto non da me ma - con buona probabilità - da un tesista a me successivo. Nel timore che cambino per l'ennesima volta l'indirizzo di tale pagina, mi permetto di riportarne qui il sotto il contenuto, anche se non mi sembra presentare esattamente il mio lavoro:

Questa tesi è stata svolta nell'ambito del progetto VLCC. Il sistema VLCC (Visual Language Compiler-Compiler) estende al caso dei linguaggi visuali le tecniche di compilazione dei linguaggi di stringa. In particolare, il VLCC si propone come uno YACC "visuale" che traduce specifiche sintattiche di un linguaggio visuale in un parser per quel linguaggio. Inoltre, esso è in grado di generare in modo automatico anche l'ambiente di programmazione visuale per l'editing delle sentenze visuali. L'aspetto grafico e semantico dei terminali del linguaggio deve essere definito insieme alla grammatica tramite un editore dei simboli. La presente tesi ha riguardato il progetto e l'implementazione tramite il paradigma object-oriented di un ambiente integrato per la definizione sia "fisica" che "logica" dei simboli di un linguaggio visuale. Il lavoro svolto permette ora di definire come terminali di un linguaggio visuale oggetti grafici di vari formati fra cui quello vettoriale, bitmap.

Altra curiosità, stavolta riguardante il backup della tesi. Nell'eseguibile autoscompattante era sempre codificata la data (due cifre per il giorno e due cifre per il mese), per cui il dischetto conteneva il file VLCC1701.EXE, che oltre a significare "VLCC versione 17 gennaio" (chiuso infatti il 17 gennaio 1997 alle 3:58 del mattino) scimmiottava ironicamente la "targa" dell'Enterprise di Star Trek (che non ha mai guadagnato la mia ammirazione). In compenso il file in questione era esattamente di 999999 bytes (per "tararlo" così precisamente bastò aggiungere qualche riga extra di commento nei files di documentazione), affiancato da un file LEGGIMI di 999 bytes.

Fin da subito avevo proposto al relatore di lavorare sotto Linux. Purtroppo all'epoca (fine maggio 1995) Linux godeva di considerazione solo a livello universitario, e dato che l'argomento doveva presentarsi stimolante anche in ambiente industriale, mi fu chiesto di lavorare sotto Windows.

E lì cominciarono i guai: la tesi contiene una ricca sezione su come aggirare i bug di Windows, quelli del compilatore Borland e quelli delle sue librerie, bug che sono costati al sottoscritto numerose sessioni notturne di debugging a oltranza per scoprire, tanto per fare qualche esempio, dei problemi con il linking statico e dinamico (col risultato che una libreria che avevo sviluppato era da linkare staticamente da una parte e dinamicamente altrove), con lo stack-overflow checking (da evitare il più possibile sia per un bug di implementazione dei tool di sviluppo, sia per evitare di "sfondare" la grandezza dei segmenti di codice), le allocazioni di memoria (da "omologare" il più possibile, evitando il mix di stack, malloc e new, altamente pericoloso per i tools dell'ambiente Windows), perfino di problemi con la cosiddetta "modalità avanzata" di Windows (che miracolosamente sparivano forzando la modalità standard).

Se io avessi scelto Linux, avrei impiegato metà del codice, un quarto del tempo, un trentesimo della pazienza, ed avrei lavorato solo di giorno. Di questo ne sono stato convinto da inizio a fine lavoro: non ho mai avuto indizi per pensare diversamente.


Google
 
Web www.alfonsomartone.itb.it

Una preziosa cinquecentina dell'allora vescovo di Uppsala

send e-mail - continua (next page)