Clipper (linguaggio)

Da Wikipedia, l'enciclopedia libera.
Clipper
Autore
Data di origine 1985
Ultima versione 5.3b
Utilizzo
Paradigmi
Tipizzazione
Implementazione di riferimento
Sistema operativo DOS
Sito web [1]

Clipper è un versatile linguaggio di programmazione di alto livello. È stato ed è usato prevalentemente per creare programmi gestionali integrati basati su database relazionali in ambiente DOS, ma la sua potenza e flessibilità (unita alla caratteristica architettura aperta) sono quelle tipiche dei linguaggi general-purpose.

Storia[modifica | modifica sorgente]

Clipper è nato nella prima metà degli anni ottanta come semplice compilatore per il popolare software di gestione di database DBase III. La compilazione del codice dBASE (che nell'ambiente originale DBIII era semplicemente codice interpretato) generava in parte codice macchina nativo ed in parte, per alcune sezioni di codice gestite dinamicamente, P-Code (pseudo codice) destinato ad essere eseguito a run-time da una Macchina virtuale.

Clipper venne creato dalla Nantucket, successivamente ceduta a Computer Associates, sviluppato in C (linguaggio).

Come prodotto maturo rimane un fondamentale strumento DOS per molti anni, aggiungendo un potente preprocessore, elementi sintattici del C e del linguaggio Pascal, elementi di OOP (principalmente classi predefinite direttamente istanziabili), ed il caratteristico tipo di dati code-block.

Numerose sono le innovazioni introdotte per la prima volta proprio da Clipper sulle architetture target (PC DOS) verso la fine degli anni ottanta, in parte con la versione denominata "Summer '87", lodata per le UDF, ossia le funzioni definibili dall'utente in linguaggio C e Assembler, per la multiutenza, le librerie di funzioni e i generatori di prospetti e soprattutto con la versione 5, che segna la svolta definitiva nella maturità del linguaggio e rimane in auge come major version per tutti gli anni novanta.

L'interfaccia verso i database e gli indici si arricchisce con potenti driver sostituibili modulari (RDD, Replaceable Database Drivers), che consentono:

  • l'impiego di indici e strutture di database nettamente più efficienti rispetto ai formati nativi DBF/NTX;
  • l'apertura verso altre piattaforme e tipologie di database;
  • la possibilità di implementare meccanismi avanzati e robusti di cifratura e decodifica "on-the-fly" degli header e/o dei dati.

Fra gli RDD vale la pena di ricordare Comix (poi integrato in Clipper 5.3) e ADS/AXS in grado di utilizzare un approccio client/server anche in applicazioni DOS.

Queste caratteristiche, unitamente al sistema di interfaccia Extend che consente di scrivere con semplicità librerie in C ed Assembly supportando lo scambio bidirezionale di parametri e l'invocazione da low level di macroroutine Clipper dinamicamente assegnate tramite i codeblocks, ne fanno un sistema unico, flessibile e straordinariamente potente per la stesura di applicazioni altamente verticalizzate ed anche (se ben congegnate) estremamente performanti, che includono il controllo dell'hardware al più basso livello e giungono fino alla creazione semplificata delle interfacce utente più complesse ed elaborate (con ampissimo supporto anche per modalità grafiche, semigrafiche e standard SAA/CUA).

Unico "svantaggio" di Clipper in ambiente DOS, a fronte di una così ampia potenza, integrabilità e flessibilità, è la ridotta efficienza in termini di spazio su disco ed in memoria degli eseguibili prodotti, che tendono ad assumere dimensioni notevoli (per l'epoca, ma pur sempre ridicole in confronto agli attuali mastodonti): inconveniente peraltro facilmente ovviabile grazie al supporto nativo degli overlay, delle librerie dinamiche condivise PLL (introdotte nei primi anni novanta, anticipando l'avvento delle DLL in ambiente windows) e di numerosi DOS Extenders.

Tra i linker disponibili, sono certamente da ricordare RTLink (presente dalla versione 5.01 di Clipper in versione ridotta), Exospace (integrato poi nella versione 5.3 di Clipper), Blinker e WarpLink (denominato poi CauseWay con l'integrazione di un Dos Extender 386).

Durante gli anni novanta si sviluppa attorno al linguaggio Clipper un fiorente e remunerativo mercato per librerie ed estensioni di terze parti, generatori di codice, tools di analisi statica e documentazione dei sorgenti, compressori e protettori di eseguibili, tools per reverse engineering, debugger (MrDebugger) e profiler avanzati, utility per manutenzione, backup, controllo di integrità e riparazione dei file di database, ed anche interi ambienti di sviluppo RAD con caratteristiche innovative di grande interesse (dBsee ed altri), poi divenute patrimonio comune nei tool RAD di seconda e terza generazione in ambiente windows.

Da notare anche alcune estensioni in grado di creare programmi Windows, partendo da sorgenti clipper DOS: FiveWin, Clip4Win e DolceVita.

A tutt'oggi, nel 2006, il linguaggio Clipper è attivamente supportato ed esteso da molte organizzazioni, sia gratuite (GPL based) come Clip, Harbour, xHarbour che commerciali come Xbase++ e FlagShip.

Molte delle attuali (2006) implementazioni sono altamente portabili (DOS, Windows, Linux (32,64), Unix (32,64), OS/X) e supportano diverse varianti ed estensioni sintattiche del linguaggio.

Esempio di codice[modifica | modifica sorgente]

...
SELECT 1
USE uno.dbf
DECLARE nomecampi [FCOUNT()]
FOR y = 1 TO FCOUNT()
nomecampi[y] = FIELDNAME (y)
NEXT y
[1] ...

Note[modifica | modifica sorgente]

  1. ^ Margaret Zinky, Clipper, Tecniche Nuove, Milano, 1989

Bibliografia[modifica | modifica sorgente]

  • Stephen J. Straley, Il manuale Clipper 5.2, Milano, etc.: McGraw-Hill libri Italia, 1994, ISBN 88-386-0230-1
  • Moreno Risaroli, Clipper, Milano: Apogeo, 1994, ISBN 88-7303-074-2
  • Dan D. Gutierrez, CA-Clipper 5.2: step-by-step, New York: John Wiley & Sons, 1994, ISBN 0471554995; traduz. italiana di Michele Pacifico, CA-Clipper 5.2, Milano: Mondadori informatica, 1994, ISBN 88-7131-644-4

Voci correlate[modifica | modifica sorgente]

Collegamenti esterni[modifica | modifica sorgente]