Como usar Harbour minigui...algunos conceptos
(por Ricardo Sassy) 28-agosto-2009

xHarbour y Harbour
son intérpretes que toman un código fuente en formato xBase (prg) y lo transforman a lenguaje "C".
ooHg y Minigui
son librerías que permiten incluir comandos y funciones de manejo de ventanas dentro de programas xBase (prg).
Qac
es un utilitario que automatiza todo el proceso de interpretació n, compilación, linkeo y generación de ejecutable, evitándose el uso por separado de cada uno de los programas necesarios para obtener un ejecutable (exe) desde un fuente (prg).

Para generar programas en formato ventana (gráfico) se necesita lo siguiente:


Todos estos elementos pueden ser combinados libremente, o sea que se puede usar -por ejemplo- xHarbour+Minigui+Mingw u otra combinación podria ser Harbour+ooHg+Bcc55.

La combinación del intérprete (xHarbour o Harbour) más el compilador (Bcc u otros) equivaldria el reemplazo del compilador Clipper, que permitía transformar un prg en obj.

Luego las librerías gráficas (ooHg u otras) funcionan de manera equivalente a todas las librerías de terceros que se podían usar con Clipper (Superlib, Nanforum, etc.), o sea que su uso no es obligatorio salvo que se quiera obtener un programa de "ventanas".

Si bien las características de las librerías son similares entre si, cuando se opta por una librería gráfica y se empiezan a escribir programas se hace dificil pasar a otra librería porque la sintáxis no es del todo compatibe entre si (salvo que se programe de manera muy neutra sin usar las "extensiones" de cada librería).

Algo similar ocurre con xHarbour y Harbour ya que si bien son "parecidos" no son "lo mismo".

Por eso es muy importante hacer de antemano un "estudio de mercado" y luego elegir las herramientas con las que se va a trabajar definitivamente.

Como dato que ayude a tomar una decisión te menciono algunas de las características (es una opinión personal y subjetiva):

xHarbour
tiene más funciones y extensiones pero está virando lentamente a una plataforma comercial. No seria raro que en el futuro las mejoras y agregados sean sólo de pago.
Harbour
estuvo un tiempo bastante quieto pero hace un año recobró nuevos brios y está en un nivel de desarrollo muy estable y completo.
Hmg
es la librería que de alguna forma marca el rumbo. Su creador Roberto Lopez privilegia la estabilidad por sobre la funcionalidad. No permite notación oop pura. Las nuevas versiones se liberan muy espaciadamente pero su uso es altamente confiable.
Minigui Experimental
es la más completa y que más extensiones tiene, pero su núcleo está basado en vectores y matrices por lo que su aprovechamiento de la memoria y velocidad de trabajo no son las ideales (con riesgo de que en determinado momento el núcleo colapse). No permite notación oop pura. Muy frecuentemente aparecen nuevas versiones con correcciones de bugs y nuevas funcionalidades.
ooHg
es una librería que no tiene la totalidad de las extensiones de la experimental pero su funcionamiento es muy estable y velóz. El código ejecutable que genera es muy compacto y eficiente. Permite notación tradicional, semi oop y oop pura. Es ideal para programar mediante el uso de clases y objetos. No aparecen nuevas versiones muy frecuentemente pero los bugs denunciados son corregidos casi instantaneamente.
Bcc55
es uno de los compiladores más utilizados pero no genera ejecutables de 64 bits y hay algunas dudas acerca de la licencia de uso del ejecutable final (royalties).
Mingw
lentamente está comenzando a ser el compilador estándard. Permite generar ejecutables de 64 bits pero en 32 bits el código ejecutable que genera es un poco más grande que el de Bcc. Por tratarse de un compilador GNU no hay problemas de licencias.
PellesC
No es el más utilizado pero al igual que Mingw no tiene problemas de licenciamiento.

A todo esto puede sumarse el empleo de ide's para generar las pantallas en forma asistida (wysiwyg) y las herramientas -como QAC o Brmake- que simplican la tarea de juntar todo el trabajo de obtención del exe en un único procedimiento, evitándose el uso de bat's o scripts de compilación.