Pagine

martedì 18 agosto 2009

GNU source highlight code syntax

Premessa

Scrivendo post su Blogger (la presente piattaforma di blogging) ho riscontrato la necessità di inserire codice di programmazione C++ o Perl o, all'occorrenza, di altri linguaggi, all'interno di articoli inerenti la piattaforma Arduino .
Blogger, purtroppo, non mette a disposizione strumenti di syntax highlight e quindi ho fatto qualche ricerca sul web per trovare un programma o una utility che rispondesse alle mie esigenze.
In questo articolo vi parlerò di GNU Source Highlight, un software che elabora un file con del codice di programmazione all'interno e genera un file che evidenzia il codice grazie al syntax highlight tramite TAG HTML.
In poche e semplici parole gestisce gli elementi costitutivi del linguaggio separando con colori differenti i commenti, i comandi, le inclusioni di librerie e via dicendo.
Questo processo rende estremamente più leggibile il codice e quindi più fruibile visivamente all'interno di un articolo su un blog o di un documento a corredo in generale.

Gnu Source HighiLight più in dettaglio

Gnu Source HighiLight è un software scritto da Lorenzo Bettini e gira su piattaforma Linux o, tramite Cygwin, anche su piattaforma Windows.
Lo si può scaricare dal sito e compilarlo in pochi passaggi che non analizzerò in questa sede.
In alternativa è possibile installarlo direttamente dai repository della propria distribuzione.
Su Debian/Ubuntu, ad esempio, è bastato digitare (da utente root) il comando:
apt-get install source-highlight

Il programma attualmente gira esclusivamente tramite riga di comando ma, sebbene sia molto semplice da utilizzare, l'autore nel proprio blog afferma di aver creato anche una GUI con librerie QT.
Tuttavia, dato che tale GUI è estremamente recente, non è ancora inclusa nei repository e per questo motivo non ho avuto voglia di provarla ma se qualche lettore lo ha fatto mi farebbe piacere qualche commento al riguardo.
Il sistema di help è veramente molto ben fatto. Il software fornisce una ottima documentazione online e grazie alla opzione "--help" visualizza le varie opzioni anche su shell.
In particolare, nel suo utilizzo minimale, il software richiede il nome del file che contiene il codice, il tipo di codice da gestire ed il file di output che deve generare.
In sostanza:
source-highlight -i input.cpp -o output.htm -s C

trasforma input.cpp che contiene codice C in output.htm
Da notare anche la lista di linguaggi gestibili con questo softwareè davvero molto nutrita; tale lista è ottenibile con
source-highlight --lang-list

e prevede linguaggi più e meno noti; si va dal C++ al php, dal perl al TeX, dal pascal al pyton, dal linguaggio di shell al file syslog....

Un esempio pratico

Vediamo un esempio pratico. Sebbene molto conciso penso che renda l'idea di quello che è stato detto fino ad ora. Di seguito è stato inserito del codice Arduino prima e dopo l'utilizzo di source-highlight.
Prima
unsigned long time; // Variabile che rileva il tempo
unsigned long evento; //Variabile che attiva un evento

void setup(){
time = millis();
evento = millis();
}

void loop(){
time = millis();
}
Dopo diventa
unsigned long time; // Variabile che rileva il tempo
unsigned long evento; //Variabile che attiva un evento

void setup(){
time = millis();
evento = millis();
}

void loop(){
time = millis();
}


Conclusioni

Source-highlight è un ottimo strumento tutto italiano (l'autore lavora a Torino); è un progetto in via di sviluppo e quindi non fermo e vale la pena utilizzarlo se si scrive codice di programmazione.
E' un software molto utile per tutti coloro che devono fornire della documentazione a corredo del proprio codice o per coloro che, come me, vogliono scrivere del codice su piattaforme web che non hanno sistemi di syntax highlight integrati.
In futuro utilizzerò questo strumento per i miei prossimi post.

1 commento:

  1. Vittorio, sono Lorenzo, l'autore di GNU Source-highlight, che dire... ti ringrazio infinitamente per questa recensione e sono contentissimo che ti trovi bene con source-highlight :-)

    Solo alcune precisazioni:
    1. in realta' come output source-highlight gestisce anche altri formati tra i quali LaTeX e puo' essere usato, tramite less, per evidenziare il codice direttamente da finestra di terminale
    2. consiglio sempre di scaricare, e compilare il programma, direttamente dal sito web perche' spesso i repository nelle distribuzioni Linux non sono molto aggiornati
    3. L'interfaccia Qt di cui parli (http://srchiliteqt.sourceforge.net/) in realta' e' solo un'interfaccia Qt alla libreria di source-highlight e non al programma stesso; pero' sto gia' lavorando ad un'interfaccia grafica Qt al programma stesso (cosi' da poter evidenziare un listato tramite questa interfaccia e copiarlo/incollarlo da altre parti, ad es. in un blog).

    Ancora grazie mille! :-)

    RispondiElimina