# Clipper (lenguaje de programación)

Clipper es un lenguaje de programación procedural e imperativo creado en 1985 por Nantucket Corporation y vendido posteriormente a Computer Associates, la que lo comercializó como CA-Clipper. En un principio Clipper se creó como un compilador para el sistema gestor intérprete de bases de datos dBase III (de hecho las versiones estacionales de Nantucket incluían una etiqueta que lo indicaba así), pero con el tiempo el producto evolucionó y maduró, convirtiéndose en un lenguaje compilado más poderoso que el original, no solo por sus propias implementaciones sino también por las ampliaciones desarrolladas por terceros en C, Ensamblador y Pascal, de los que fue heredando características. Esto lo convirtió en la herramienta líder de desarrollo de aplicaciones de bases de datos relacionales bajo sistema operativo MS-DOS, sobre todo programas de gestión, contabilidad y facturación, agendas comerciales y programas de testificación.

## Características

A diferencia de otros lenguajes xBase, Clipper nunca contó con un modo intérprete, similar al de dBase. Sus utilidades para manejo de base de datos, tales como la de creación de tablas (DBU), se entregaban con el código fuente escrito en Clipper e incluido, el usuario podía adaptarlas a sus necesidades si quería. Se aportaban también muchas rutinas escritas en C y Ensamblador a las que el usuario podía acudir, incluso ampliar y crear bibliotecas de pre-enlaces completos e importantes
Clipper trabaja en modo compilador puro generando un código objeto binario; el paquete proveía también un enlazador (RTLINK o DLINK, y BLINKER) que con el módulo objeto y las bibliotecas de pre-enlace generaba un módulo ejecutable directo. Esto último le otorgaba a las aplicaciones Clipper una velocidad que otros manejadores de bases de datos no poseían, y, como desventaja, la necesidad de recompilar y enlazar nuevamente cada vez que se corregía algún error en el código fuente (la depuración era lenta).
Posee características que fueron muy atractivas para su época y su entorno de trabajo (DOS), tales como: manejo propio de memoria virtual (RAM en disco); manejo de memoria extendida, las aplicaciones podían superar la barrera de los 640Kb de RAM impuesta por MS-DOS; rutinas y bibliotecas pueden cargarse solo cuando son necesarias y se descargan de RAM cuando ya no hacen falta (enlace y overlays dinámicos); la cantidad de registros por tablas estaba solo limitada a la capacidad del disco (con máximo 1024 columnas); gran robustez en las aplicaciones, particularmente en las diseñadas para cliente-servidor (red LAN), etc.
Si bien no poseía prácticamente funciones de cálculo tales como las trigonométricas, que otros lenguajes como FoxPro sí incorporaron; el usuario las podía fácilmente elaborar en C y utilizarlas como cualquier otra función de biblioteca propia del paquete, ventaja que devenía de que el compilador Clipper y muchas de sus bibliotecas estaban casi completamente desarrolladas en C.
Su forma, administración, almacenamiento e intercambio de pantallas era sencillo, efectivo y veloz; lo que otorgaba buen dinamismo a las aplicaciones desarrolladas con Clipper.
El lenguaje en sí era poderoso, contando con una gran cantidad de sentencias, funciones, administración de memoria y variables que permitían al programador desarrollos muy flexibles y eficientes; en forma razonablemente rápida. También el paquete incluía un completo "manual en línea navegable", que se cargaba en memoria RAM, a requerimiento del programador, y se accedía por la sola presión de un par de teclas.
En su larga época dorada ha sido, probablemente, el lenguaje gestor de bases de datos relacionales de "bajo y mediano porte" más utilizado en el mundo. Aún hoy existen muchos desarrolladores Clipper (algunos agrupados comunidades y con foros en Internet), que elaboran aplicaciones, incluso estilo Windows, usando sus propias bibliotecas gráficas escritas en C y Ensamblador.

## Las primeras versiones

Las primeras versiones se denominan versiones estacionales por hacer referencia a una estación del año en sus nombres oficiales. Todas ellas se nominaban como compiladores dBase. Estas fueron:
* Nantucket Clipper Winter'84 - lanzada el 25 de mayo de 1985
* Nantucket Clipper Summer'85 - lanzada en 1985
* Nantucket Clipper Winter'85 - lanzada el 29 de enero de 1986
* Nantucket Clipper Autumn'86 - lanzada el 31 de octubre de 1986
* Nantucket Clipper Summer'87 - lanzada el 21 de diciembre de 1987
* Gatsoft Clipper Summer'88 - lanzada el 16 de marzo de 1988

## Clipper 5

Clipper 5.0 supone un salto cualitativo del lenguaje, aunque comienza mal. Dada la creciente popularidad (Summer 87 ha sido utilizada hasta el año 2000 como herramienta habitual de desarrollo; en Telefónica se utilizó ampliamente hasta al menos 2008 en aplicaciones importantes), se decide centrarse más en ampliar el lenguaje que en ser un compilador mejorado de dBase. Se implementan así los pseudoobjetos y otras mejoras... pero el producto se lanza con numerosos errores de software que hacen que el público objetivo se retraiga y siga usando la versión Summer87, mucho más estable. La 5.01 corrige muchos de los problemas, pero no será hasta la 5.2 que se produzca el vuelque masivo de los desarrolladores.
Las versiones 5 de Nantucket son:
* Nantucket Clipper 5.00 - lanzada en 1990
* Nantucket Clipper 5.01 - lanzada el 15 de abril de 1991
* Nantucket Clipper 5.01 Rev.129 - lanzada el 31 de marzo de 1992
La multinacional americana Computer Associates adquiere Nantucket y se lanza a mejorar el producto afianzando las características heredadas de C, en particular el tipo de datos code-block (literalmente bloque de código, un híbrido entre las macros de dBase, la evaluación de cadenas de caracteres y los punteros de funciones). Otra de las mejoras procedentes de la versión 5.0 es el sistema "Replaceable Database Drivers" (RDD o drivers reemplazables de base de datos), que permiten con una sola sentencia cambiar entre diferentes normas de base de datos. La aparición de la versión 5.2, con una carrera frenética de subversiones (con mejoras y corrección de errores) hasta la 5.2c, que marca el comienzo de la migración masiva de quienes todavía permanecían en Summer'87. Deviene así la versión de Clipper más usada de la historia. Contrariamente, su sucesora, 5.3, pese a implementar mejoras, cae en un error de bulto, al no tener en cuenta la compatibilidad con al menos las más populares bibliotecas de Clipper (tanto comerciales como freeware), y por consumir excesivos recursos de DOS.
* CA Clipper 5.01a -
* CA Clipper 5.20 - lanzada el 15 de febrero de 1993
* CA-Clipper 5.2a - lanzada el 15 de marzo de 1993
* CA Clipper 5.2b - lanzada el 25 de junio de 1993
* CA-Clipper 5.2c - lanzada el 6 de agosto de 1993
* CA Clipper 5.2d - lanzada el 25 de marzo de 1994
* CA-Clipper 5.2e - lanzada el 7 de febrero de 1995
* CA Clipper 5.30 - lanzada el 26 de junio de 1995
* CA Clipper 5.3a - lanzada el 20 de mayo de 1996
* CA Clipper 5.3b - lanzada el 20 de mayo de 1997
Computer Associates decide abandonar Clipper ante la pujanza de Microsoft Windows, y vuelca parte del desarrollo de Clipper (el proyecto Aspen de Nantucket) a su nueva herramienta CA-Visual Objects, que se presenta casi a la vez que Clipper 5.3 Pero el abandono de la sintaxis xBase y el no proveer una herramienta de migración adecuada, unido al alto precio del producto (que además debía competir con otros productos de la propia casa, uno de ellos basado en BASIC), hace que el grueso de programadores Clipper opten por permanecer en las versiones 5.2/5.3 con bibliotecas de terceros como FiveWin, y DGE, o migren a herramientas xBase como Visual FoxPro a medida que el mercado DOS va reduciéndose.
El 22 de abril de 2002 Computer Associates y GrafX Software anuncian que han alcanzado un acuerdo de licenciamiento, marketing y desarrollo de dos de sus lenguajes de desarrollo: CA-Clipper y CA-Visual Objects.
Una de las principales características que ayudó al éxito de Clipper fue la posibilidad de expandir el lenguaje con rutinas en C y ensamblador. Varias de ellas, como CodeBase o Apollo son RDDs. Con la aparición de Windows se desarrollaron varias de ellas para portar las aplicaciones Clipper a Windows. La más popular es la española FiveWin, empleada en los productos líderes de contabilidad en España.
Además, el uso de linkers alternativos permitieron mejorar el rendimiento del ejecutable generado. El más aclamado fue Blinker, que añade un extensor de DOS con modo protegido (es utilizado con numerosos lenguajes y compiladores). Añadió soporte para compilar programas y bibliotecas para Windows.
En la actualidad el lenguaje Clipper está siendo activamente implementado y extendido por varios proyectos y vendedores. Entre los proyectos de software libre podemos destacar Clip (desactualizado desde 2006), Harbour y xHarbour. Entre los compiladores comerciales XBase++ y Visual FlagShip. Y Otros productos como "MEDIATOR" y "Eagle1 y Condor1 Archivado el 9 de julio de 2009 en Wayback Machine." que le brindan la posibilidad de conectarse a Servidores de bases de datos relacionales como MS-SQL, MySQL y Oracle.
XBase++ ha sido llamado el Compilador Clipper de 32 bits, siendo actualmente el líder en innovaciones e incorporaciones al lenguaje. Ya se han vendido más de 25 000 copias del compilador y lo usan desde desarrolladores solitarios hasta grandes empresas como Hewlett-Packard o el Gobierno de Canadá.
Varias de esas implementaciones son portables gracias a su desarrollo en C (DOS, Windows, GNU/Linux (32 y 64 bits), Unix (32 y 64 bits), y Mac OS X), soportando varias extensiones del lenguaje ; cuentan con varias extensiones del lenguaje, y varios Replaceable Database Drivers (RDD) que soportan los formatos más populares de tablas, como DBF, DBTNTX, DBFCDX (FoxPro y Comix), MachSix (Apollo), SQL, y más. Todas estas nuevas implementaciones mantienen la completa compatibilidad con la sintaxis estándar xBase, a la vez que ofrecen programación orientada a objetos y sintaxis orientada al destino como SQLExecute.
Actualmente hay una versión libre, el Proyecto Harbour que tiene como objetivo original ser 100% compatible con la versión 5.2 (La más popular de las versiones de Clipper), también se han añadido nuevas características como soporte para SQL a través de SQLite. Harbour está disponible para múltiples plataformas, incluyendo no solo MS-DOS y Windows, sino también a GNU/Linux, OS/2 y otras. En el mes de julio de 2011 se anunció oficialmente el lanzamiento de la versión 3.0, la cual ha sido la última publicada y se descuenta que el proyecto ha sido abandonado.
Rectificación: a la fecha 20-12-2024 Harbour está en la versión estable 3.2, si bien el grupo de desarrollo está conforme con ella y la mantención la desarrolla en su mayoría Przemyslaw Czerpak, el foro de developers sigue funcionando y están discutiendo ideas para mejorarlo (José Arias)
En 2005, los newsgroups de Usenet relativos a Clipper comp.lang.clipper y comp.lang.clipper.visual-objects seguían activos.

## Programación en Clipper

Un sencillo Hola Mundo:
Una máscara simple de entrada de base de datos:
Función que invierte una cadena de caracteres (Clipper 5.2):