Per linguaggio di programmazione “xBase” si intende un insieme di “dialetti” che derivano in ultima analisi dal DBIII (anni ’80) e successive migliorie (foxBase, Clipper, QuickSilver negli anni ’80 e ’90, etc.), tutti linguaggi dedicati alla gestione di basi di dati (database) e quindi dotati di specifiche funzioni per agevolare tali gestioni.
I linguaggi xBase si sono affermati come strumento di sviluppo di applicativi gestionali in un’epoca in cui non esisteva il mouse, non esisteva Windows, e gli utilizzatori interagivano con i programmi essenzialmente mediante un monitor monocromatico e una tastiera. Ebbe straordinaria fortuna Clipper, in tutto il mondo, che fu usato da milioni di programmatori (me compreso). Clipper non prevedeva di per sé Windows, ma aveva una struttura aperta, talmente aperta che degli sviluppatori indipendenti crearono un “ponte” tra Clipper e Windows, permettendo così al linguaggio xBase per eccellenza di non morire nel nuovo mondo informatico caratterizzato dalle finestre e dalla grafica. Gli odierni Harbour e xHarbour permettono di compilare senza praticamente modifiche persino i vecchi programmi scritti per DBIII, ma offrono anche un completo ambiente di sviluppo per creare applicazioni dotate di GUI (graphic user interface) e che sfruttano tutte le potenzialità dei moderni sistemi.
In breve, Harbour e xHarbour sono due compilatori in grado di trasformare un listato sorgente xBase in un eseguibile Windows/Linux/et.al. Essi derivano concettualmente da Clipper, di cui accettano linguaggio e sintassi, e replicano ed ampliano la struttura aperta.
Si tratta in realtà di due pseudo-compilatori che trasformano il sorgente (= il programma come lo scrive il programmatore, che è un essere umano e avrebbe terribili difficoltà a scrivere i programmi direttamente nel codice macchina che il computer può digerire) in una sorta di codice intermedio basato su un notissimo, basilare e universale linguaggio di programmazione, il linguaggio C, e poi richiamano un compilatore C vero e proprio ( compilatore=programma che pre-digerisce i sorgenti e li trasforma in codice macchina) per generare l’eseguibile finale.
La base fornita dal comune denominatore C consente una estrema versatilità del linguaggio, il quale consente di incorporare nei programmi praticamente qualunque cosa, direttamente in linguaggio C o mediante componenti aggiuntivi basati sul C. Ricordo che anche Windows è scritto in gran parte in C, come pure Unix/Linux ecc.
Se qualcuno a questo punto si stesse chiedendo che bisogno ci sia di usare uno pseudo-compilatore C eccetera, e se non sarebbe meglio scrivere i programmi in C direttamente, potrebbe rispondersi da solo con una analogia, chiedendosi per esempio che bisogno ci sia di comprare le scarpe bell’e fatte quando si può benissimo comprare cuoio, gomma, colla e procedere con molta maggiore libertà e soddisfazione personale alla realizzazione delle proprie scarpe su misura.
Come ho detto prima, [x]Harbour e compagnia bella (Alaska xBase, Visual Foxpro, Flagship ecc.) sono linguaggi “di alto livello” il che non significa che abbiano un rango nobiliare nei confronti dei linguaggi di “basso livello” come il C. Alto e basso livello nel gergo informatico stanno a designare in pratica il loro livello di astrazione rispetto al linguaggio macchina, l’ingestibile (per noi umani) codice binario che è l’unica cosa che in ultima analisi un computer esegue direttamente. Tanto più ci si astrae da queste istruzioni elementari, tanto più alto è il livello. In pratica una singola istruzione in un linguaggio di alto livello corrisponde a centinaia o migliaia di operazioni elementari o di basso livello. In questo modo il programmatore può scrivere meno codice e concentrarsi sulla logica del programma, tralasciando i dettagli. Naturalmente un linguaggio di alto livello non consente un controllo fine delle singole istruzioni o di fare particolari operazioni di dettaglio, allo stesso modo in cui un bulldozer non va bene per rimuovere un centimetro di sabbia da uno scavo archeologico, ma questo controllo fine, per le applicazioni gestionali, non è necessario più di quanto sia necessario uno spazzolino di tasso per spianare un terreno in edilizia.
[x]Harbour sta ad indicare i due compilatori Harbour e xHarbour. Essi sono alquanto simili, ma questo è comprensibile se si pensa che essi sono in effetti due teste del medesimo… mostro.
La storia di questi compilatori è lunga e riporto qualche approfondimento di carattere “storico” qui.