Esta entrada de Harbour. Clipper hoy en día, pretende dar a conocer esta excelente herramienta de software libre. ¡Qué tiempos! Aplicaciones de gestión como churros que funcionaban de maravilla. Los usuarios se hacían con la pulsación de teclas rápidas y «volaban» utilizando esas aplicaciones. ¿El ratón?¿Para qué? Jeje, claro, no todo era perfecto y seguro que más de uno recuerda cuando en alguna ocasión, los índices se estropeaban, se corrompía la base de datos… Nada que no ocurra también en estos tiempos. Todo además, consumiendo muchos menos recursos que ahora…, para hacer lo mismo. Eso era Clipper. Es que Clipper estaba hecho para eso. Ese lenguaje XBase era ideal para ello. Hacía posible esa forma de desarrollar aplicaciones para ese público. Informatizó una gigantesca cantidad de negocios. Sin embargo, llegó lo inevitable y el rey de las aplicaciones de consola se quedó atrás cuando aparecieron los entornos gráficos. Esto es, básicamente Windows. Hubo intentos de llevar Clipper a estos entornos pero no triunfaron. Nace Harbour como creación de Antonio Linares. Mirad esta entrevista: entrevista con Antonio Linares . Harbour ofrece todo lo que Clipper pero además: multiplataforma, multitarea, programación a objetos, CGI, etc. No esperemos más y vamos allá.
Obtener e instalar Harbour
En el momento de escribir este artículo, la página oficial del proyecto Harbour se encuentra en GitHub: Portal de Harbour . Lo que más destaco en esta página, es el recuadro donde se nos informa del estatus del proyecto y un enlace para realizar la descarga que es lo que más nos interesa en este momento. Aunque disponemos de diferentes enlaces de descarga en el menú [Download] (en la parte superior de la página), siempre nos lleva a Sourceforge que es donde está alojado el proyecto. En este lugar nos encontramos carpetas para el código fuente y binarios para Dos, Windows (el más descargado), diferentes distribuciones de Linux, OS/2 y OSX. Dentro de cada una de ellas, veremos que disponemos de varias versiones. Buscaremos la última estable (en estos momentos la 3). Igualmente podemos hacer uso de la versión Nightly, más avanzada pero no estable. En el binario para Windows, podemos bajarnos el instalador (.exe) o bien la versión comprimida. Vamos con el instalador.
Instalando Harbour en Windows
Una vez hemos descargado el instalador para Windows, lo ejecutamos con derechos de administrador (por si acaso). En el asistente de instalación, tendremos que elegir, entre otras cosas, la ruta donde queremos instalar la herramienta. Considero que ventana de instalación más importante es donde seleccionamos que cosas queremos instalar: Vemos en la imagen que hay cosas marcadas como el IDE que no vienen seleccionadas por defecto. Yo he marcado el IDE para facilitar el trabajo de desarrollo y otras librerías (64 o 32 bits) para crear interfaces para las aplicaciones Harbour. Marcamos lo que necesitemos. Finalmente, seguimos las instrucciones del asistente para terminar la instalación.
Obteniendo e instalando Harbour en Ubuntu Linux
Para obtener Harbour en Ubuntu Linux podemos obtenerlo desde Sourceforge. Es un paquete DEB que después podríamos proceder a instalar. Es el camino más rápido.
//Instalamos el DEB obtenido (paquete.deb es el fichero DEB obtenido):
sudo dpkg -i paquete.deb
Otra opción en cambio, consiste en obtener los fuentes y compilarlos para la plataforma que queramos. Es una opción muy flexible pero más complicada. El código fuente lo podemos obtener tanto de Sourceforge como desde el repositorio de Harbour en GitHub . Obtener el código fuente desde Sourceforge no es problema. Sin embargo, hacer lo mismo desde GitHub es más laborioso. Lo primero es tener instalado Git:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git
//La última línea es sustituída por otros usuarios por:
apt-get install git-core
//Es posible que necesitemos agregar otro repositorio si hay problemas de dependencias.
//Añadimos como primera línea:
sudo add-apt-repository ppa:git-core/ppa
Obtenemos el código fuente desde el repositorio en vivo de GitHub:
Sea como sea, una vez obtenido el código fuente, es hora de compilarlo. Usando el terminal, nos posicionamos en el directorio raíz del código fuente. Veamos por ejemplo:
cd harbour-src
make
sudo make install
Ojo, instalamos el compilador de C++ si no lo estuviera:
sudo apt-get install gcc g++
La ventaja de compilar es que tenemos nuestro Harbour para la plataforma que deseemos. Por supuesto, aquí es donde pueden aparecer los clásicos problemas de dependencias. ¡A programar!
Primeros pasos
Una vez que tenemos instalado Harbour se habrán creado diferentes carpetas y ficheros. En el caso de Windows además, es posible que algunos accesos directos. En cualquier caso, si nos situamos en la carpeta principal de Harbour (desde consola, terminal o el explorador), veremos que hay una carpeta llamada /bin. Aquí es donde se encuentran los ejecutables: Uno de estos comandos es hbide.exe (Windows). Se habrá instalado si marcamos la opción correspondiente. Si hacemos pulsamos doble con el ratón o lo ejecutamos desde el terminal o consola, arrancará el IDE de Harbour. No es imprescindible, pero nos brinda coloreado de sintaxis, etc., y ayuda. Sería buena idea crear un acceso directo a este fichero porque en la instalación no se crea (hasta el momento al menos). Por supuesto, para sacarle provecho, será necesario configurarlo antes, indicando cada ejecutable donde está (compilador, etc.). Por mencionar algo más, comentar que se nos habrá creado un acceso directo a la consola, configurada para que se abra en la carpeta donde está Harbour. Del mismo modo, tenemos otro que apunta a una consola de Harbour donde podemos escribir comandos Clipper para ejecutarlos:
Hola Mundo con Harbour
¿Conoces un lenguaje xBase en general o Clipper en particular? Pues a darle caña. Si no es así, vamos con el famoso Hola Mundo:
PROCEDURE Main()
? "Hola Mundo. He vuelto."
RETURN
PROCEDURE Main(): pues como en otros lenguajes, indica el procedimiento principal.
? «una cadena»: efectivamente, el símbolo ? muestra la cadena a su izquierda en consola.
RETURN: finaliza el programa (el procedimiento).
Poner las palabras clave en mayúsculas no es obligatorio, es más una costumbre. Otro:
FUNCTION Main()
? "Hola Mundo. He vuelto."
RETURN NIL
Usamos FUNCTION en lugar de PROCEDURE. Como es una función devolvemos algo. Puesto que esto es un Hola Mundo que no devuelve nada, RETURN NIL devuelve, tradicionalmente, un «puntero nulo». Más…
PROCEDURE Main()
CLS
? "Hola"
QOut("Estoy hecho en Clipper, o Harbour. Sigo vivo.")
QOut("Adiós.")
RETURN
CLS: limpio la consola.
QOut: una función que muestra una cadena en consola.
Y aún más…
PROCEDURE Main()
CLEAR SCREEN
? "Hola"
QOut("Estoy hecho en Clipper, o Harbour. Sigo vivo.")
@ 20, 20 SAY "Hasta luego."
RETURN
CLEAR SCREEN: como CLS. Mejor por mi parte.
@ x,y SAY valor: es una instrucción que permite visualizar en consola un valor, en la posición indicada por los parámetros x e y.
Ejecutar los programas y crear ejecutables
El comando hbrun permite ejecutar nuestros scripts en Harbour/Clipper. Para ello habremos guardado con anterioridad el código fuente de nuestro programa en un fichero de texto con extensión .prg. Para ejecutarlo:
hbrun miprograma.prg
Nos será de gran utilidad agregar la carpeta /bin al PATH del sistema. Para crear un ejecutable (Windows):
hbmk2 miprograma.prg
Se generará un ejecutable basado en código C. Según el ejemplo: miprograma.exe. ¿Fácil si?
Conclusión
¿Todos los programas son en consola? Ni mucho menos. Harbour trabaja con librerías que permiten dotar de una interfaz gráfica o GUI a las aplicaciones Harbour: https://harbour.github.io/thirdparty . Del mismo modo, si investigamos un poco, encontraremos herramientas que complementan, extienden o hacen más fácil el trabajo con Harbour. Finalmente, mencionar que existen más proyectos open source como XHarbour que son alternativas a Harbour. Personalmente, me quedo con éste. Nada más. Un saludo y hasta otra.
Sigo programando en Clipper 5.1 y me he animado a dar el salto. Um amigo que controla exagerao me ha dicho que está muy bien el Alaska xBase++. ¿Qué será mejor, meterme con harbour o con Alaska?
Hola Julio. Buena pregunta. Dependerá del uso final que quieres:
Si no tengo mucho tiempo y quiero desarrollar profesionalmente, necesito estabilidad y buena documentación. En ese caso Alaska xBase++ sin duda.
Tengo tiempo para probar y de momento no necesito meterme en un proyecto serio: Harbour o xHarbour.
Aunque defiendo el software libre, tanto Harbour como XHarbour sin ser proyectos abandonados (que sepa) si llevan muuucho sin actualizarse y la documentación tampoco abunda. Esto último pretendo, si el tiempo y la salud me lo permite, cambiarlo y ojalá que alguien pueda ponerse y actualizar estos proyectos. ¡Clipper sigue vivo! Gracias por comentar Julio.
Al principio programe en dBASE III Plus, de ahí pase a Clipper summer 87 lo complemente con Funcky, los cambios me hicieron subir de nivel y pase a Clipper 5.3 con FivWin 2.2, pero estoy lenguajes me han dejado atrás, mi equipo es un PC 32bit y quiero seguir programando en Clipper a 32bit y poder colocar los sistemas en la Red Interna con PC 32bit y 64bit que trabajen por igual sin problemas de configuración para los usuarios, no tengo $tiempo$ para emigrar a otro lenguaje. ¿Se puede hacer con Harbour?
En primer lugar: teóricamente Harbour es totalmente compatible con Clipper por lo que no deberías tener problemas. Ojo, como ya sabes, en esto de la programación siempre surge alguna historia que nos puede dar problemas pero del mismo modo, normalmente podemos encontrar una solución. Punto dos: lo que construyas para 32 bits, te funcionará para 64, no así al revés. Punto tres: en realidad Harbour toma código XBase (compatible con Clipper) y lo convierte en C, hasta finalmente crear un ejecutable. Este ejecutable lo habrás podido compilar a 32 ó 64 bits, según necesites.
Resumiendo: salvo excepciones (cada proyecto es un mundo), podrás hacerlo con Harbour. Espero que te sirva. Un cordial saludo.
Buenas noches, me interesa mucho aprender Clipper, y programar en harbour, hice algunos cursos de Javascript y PHP…mi intención siempre fue hacer sistemas de gestión por lo que abandone los cursos que contaba anteriormente, busco cómo comenzar con harbour, me orientas un poco…1 ero aprender Clipper? O comenzar con harbour…poo o Clipper clásico? , Por dónde empiezo?
Ante todo Rube, disculpa por la tardanza con el comentario: he tenido problemas pero ya está todo bien. Personalmente comenzaría con Harbour directamente. En el blog intento crear artículos sobre Harbour aunque no me alcanza mucho el tiempo ni las posibilidades para avanzar en esto. Hay documentación sobre Clipper que puedes usar sin problemas; si acaso, buscar lo mismo en la referencia de Harbour y comprobar si existe una alternativa propia de Harbour. De momento poco más hay sin ser de pago. Un saludo Rube y gracias por comentar.
Buenos dias Agradecería me dieses una orientación sobre lo siguiente: Estoy compilando en Harbour unos programas de Clipper y da un error …undefined reference … a funciones de librerias como Fast, Abraxas, etc ¿que me falta para que reconozca estas librerias? mUCHAS GRACIAS
Hola Benito: Sin más detalles es complicado orientarte mejor pero veamos. Abraxas me suena remotamente a algo de serial y Fivewin. Fast era de Manu Roibal pero tengo entendido que donó su código como libre y que se pretendía agregar al proyecto Harbour. Ignoro si finalmente se llegó a incluir y bajo que nombre se incluyó. Lo que tienen en común estas librerías es que son de terceros.
¿Adaptar un poco el código? Es posible que tengas que realizar algunos cambios en el código fuente Clipper para que Harbour pueda compilar sin problemas.
Finalmente, puedes optar por preguntar en inglés, directamente a (nada menos) Alexander Kresin. Dependerá de él, contestarte o no, aunque te aconsejo que le des todos los detalles que puedas.
Espero que te sea de ayuda. Un saludo y gracias por comentar.
Benito Las librerias que tengas de clipper son de 16 bits y no te funcionan en Harbour, pero busca en la documentacion, porque la mayoria han sido portadas (tal vez con un nombre ligeramente distinto) incluso muchas funciones ya estan implementadas en forma nativa en Harbour . Mira aqui: https://harbour.github.io/doc/ (yo se que paso mucho tiempo, pero a alguien le puede servir)
Hola Jose, te escribo por la presente tengo en mente un proyecto tengo una sistema para calcular nominas de cualquier pais. esta en clipper 5.3 necesito que alguien me lo pueda compilar con harbour y estaria dispuesto a vender el sistema en paralelo. si alguien tiene interes me puede escribir al alatorre42@hotmail.com o llamar al +51 943557316 via WhatsApp
Hola Alberto: Creo que ya hablamos en otra ocasión. Por mi parte no me es posible como te comenté anteriormente, por no poder garantizar un tiempo de entrega debido a mis circunstancias. Tal como indicas en el mensaje, si alguien quisiera colaborar con Alberto pues estupendo.
(Los patrocinadores incluyen enlaces de afiliados, con cuyos servicios llevamos años, sin queja alguna y por tanto contrastados y recomendados por nosotros)
14 comentarios
Sigo programando en Clipper 5.1 y me he animado a dar el salto. Um amigo que controla exagerao me ha dicho que está muy bien el Alaska xBase++. ¿Qué será mejor, meterme con harbour o con Alaska?
Hola Julio. Buena pregunta. Dependerá del uso final que quieres:
Aunque defiendo el software libre, tanto Harbour como XHarbour sin ser proyectos abandonados (que sepa) si llevan muuucho sin actualizarse y la documentación tampoco abunda. Esto último pretendo, si el tiempo y la salud me lo permite, cambiarlo y ojalá que alguien pueda ponerse y actualizar estos proyectos. ¡Clipper sigue vivo! Gracias por comentar Julio.
Julio yo te recomiendo que mires: https://www.xailer.com/ es brutal.
Saludos.
Pepe
Gracias por la aportación José; este mundo de los sucesores de Clipper no abunda en información.
Al principio programe en dBASE III Plus, de ahí pase a Clipper summer 87 lo complemente con Funcky, los cambios me hicieron subir de nivel y pase a Clipper 5.3 con FivWin 2.2, pero estoy lenguajes me han dejado atrás, mi equipo es un PC 32bit y quiero seguir programando en Clipper a 32bit y poder colocar los sistemas en la Red Interna con PC 32bit y 64bit que trabajen por igual sin problemas de configuración para los usuarios, no tengo $tiempo$ para emigrar a otro lenguaje. ¿Se puede hacer con Harbour?
Hola Jorge:
En primer lugar: teóricamente Harbour es totalmente compatible con Clipper por lo que no deberías tener problemas. Ojo, como ya sabes, en esto de la programación siempre surge alguna historia que nos puede dar problemas pero del mismo modo, normalmente podemos encontrar una solución.
Punto dos: lo que construyas para 32 bits, te funcionará para 64, no así al revés.
Punto tres: en realidad Harbour toma código XBase (compatible con Clipper) y lo convierte en C, hasta finalmente crear un ejecutable. Este ejecutable lo habrás podido compilar a 32 ó 64 bits, según necesites.
Resumiendo: salvo excepciones (cada proyecto es un mundo), podrás hacerlo con Harbour. Espero que te sirva. Un cordial saludo.
Buenas noches, me interesa mucho aprender Clipper, y programar en harbour, hice algunos cursos de Javascript y PHP…mi intención siempre fue hacer sistemas de gestión por lo que abandone los cursos que contaba anteriormente, busco cómo comenzar con harbour, me orientas un poco…1 ero aprender Clipper? O comenzar con harbour…poo o Clipper clásico? , Por dónde empiezo?
Ante todo Rube, disculpa por la tardanza con el comentario: he tenido problemas pero ya está todo bien. Personalmente comenzaría con Harbour directamente. En el blog intento crear artículos sobre Harbour aunque no me alcanza mucho el tiempo ni las posibilidades para avanzar en esto. Hay documentación sobre Clipper que puedes usar sin problemas; si acaso, buscar lo mismo en la referencia de Harbour y comprobar si existe una alternativa propia de Harbour. De momento poco más hay sin ser de pago. Un saludo Rube y gracias por comentar.
Buenos dias
Agradecería me dieses una orientación sobre lo siguiente:
Estoy compilando en Harbour unos programas de Clipper y da un error …undefined reference … a funciones de librerias como Fast, Abraxas, etc
¿que me falta para que reconozca estas librerias?
mUCHAS GRACIAS
Hola Benito:
Sin más detalles es complicado orientarte mejor pero veamos. Abraxas me suena remotamente a algo de serial y Fivewin. Fast era de Manu Roibal pero tengo entendido que donó su código como libre y que se pretendía agregar al proyecto Harbour. Ignoro si finalmente se llegó a incluir y bajo que nombre se incluyó. Lo que tienen en común estas librerías es que son de terceros.
¿Estás usan el compilador Harbour con las opciones de compilación adecuadas e indicando las librerías? Quizás te ayude:
https://vivaclipper.wordpress.com/tag/viktor-szakats/
https://www.kresin.ru/en/hrbfaq_4.html
¿Adaptar un poco el código?
Es posible que tengas que realizar algunos cambios en el código fuente Clipper para que Harbour pueda compilar sin problemas.
Aquí puedes encontrar más documentación:
https://github.com/Petewg/harbour-list
Finalmente, puedes optar por preguntar en inglés, directamente a (nada menos) Alexander Kresin. Dependerá de él, contestarte o no, aunque te aconsejo que le des todos los detalles que puedas.
Espero que te sea de ayuda. Un saludo y gracias por comentar.
Hola Josema
Me pondré a ello. Muchas gracias por tu tiempo
Benito
Las librerias que tengas de clipper son de 16 bits y no te funcionan en Harbour,
pero busca en la documentacion, porque la mayoria han sido portadas
(tal vez con un nombre ligeramente distinto) incluso muchas funciones ya
estan implementadas en forma nativa en Harbour . Mira aqui:
https://harbour.github.io/doc/
(yo se que paso mucho tiempo, pero a alguien le puede servir)
Hola Jose, te escribo por la presente tengo en mente un proyecto tengo una sistema para calcular nominas de cualquier pais. esta en clipper 5.3 necesito que alguien me lo pueda compilar con harbour y estaria dispuesto a vender el sistema en paralelo.
si alguien tiene interes me puede escribir al alatorre42@hotmail.com o llamar al +51 943557316 via WhatsApp
Hola Alberto:
Creo que ya hablamos en otra ocasión. Por mi parte no me es posible como te comenté anteriormente, por no poder garantizar un tiempo de entrega debido a mis circunstancias. Tal como indicas en el mensaje, si alguien quisiera colaborar con Alberto pues estupendo.
Como este no es el lugar destinado para este tipo de mensajes pero tampoco tenemos otro que lo supla, dejo el mensaje aquí y además he abierto un foro para este tipo de cosas. He duplicado este mensaje en el foro si te parece correcto: https://aprendeitonline.com/foros/debate/colaboracion-o-trabajo-de-adaptacion-de-codigo-clipper-5-3-a-harbour/. Un saludo Alberto.