# Harbour (Compiler)

Harbour ist ein freier, plattformunabhängiger Compiler für die xBase Programmiersprache, die hauptsächlich zum Erstellen von Datenbankanwendungen verwendet wird. Es ist eine modernisierte Version des Clipper aus den 1980er Jahren, welcher mit .dbf (dBase) - Datenbanken arbeitete.
Harbour kann neben diesen Datenbanken, diverse andere relationale Datenbanken über Replaceable-Database-Drivers (RDD) oder native Anbindung verwalten, wie z. B. Microsoft Access, SQLITE, MySQL, PostgeSQL u. a. mittels LetoDB können .dbf Dateien über das World wide Web bearbeitet werden. Die Funktionserweiterungen von Harbour gehen weit über die ursprüngliche Clipper 5.3 und Tools-Bibliothek hinaus. Wie bei Clipper lassen sich über den Makrocompiler sämtliche Funktionen der EXE aufrufen.
Der Harbour-Compiler ist quelloffen und kann, falls keine Binaries für das betreffende Betriebssystem vorhanden sind, selbst kompiliert werden.
Unterstützt werden eine Vielzahl von Betriebssystemen u. a. Microsoft Windows, Linux, Unix-Derivate, BSD, Mac OS X, MINIX 3, Windows CE, Pocket PC und auch MS-DOS. Auch Android-Apps und Konsolenanwendungen lassen sich mit Harbour erstellen.
Harbour erzeugt C-Quellcode. Dieser kann mit verschiedenen C-Compilern wie GCC, MinGW, Clang, ICC, Microsoft Visual C++, Borland C++, Watcom C, Pelles C kompiliert werden.
Im Gegensatz zur Java-Devise „write once, run anywhere“, ist die Devise bei Harbour „write once, compile anywhere“. Konsolenanwendungen können ohne große Modifikationen (Ausnahme Betriebssystem spezifische Besonderheiten) auf andere Systeme portiert werden.
Die Harbour-Programmiersprache ist case-insensitiv, Anwendungen sind schnell und schwer zu dekompilieren. Harbour unterstützt OOP-Programmierung, das Erstellen von Office-Dokumenten mittels OLE und CGI-Webanwendungen. Über die FANN Library lassen sich Neuronale Netze realisieren.

## Historie

Harbour wurde als freier Compiler 1999 von Antonio Linares entwickelt, als Nachfolge des Clipper-Compilers, welche keine 32-Bit-Programme erzeugen konnte (siehe auch Clipper-Programmiersprache). Es ist ein Kommandozeilenprogramm ohne Benutzeroberfläche. Der Name ist eine Anlehnung an Clipper. Harbour stellt den Heimathafen der Clipper dar.
Releases
* 2005-06-20 Release Alpha build 45
* 2007-01-22 Release 0.99.1 Beta 1
* 2008-08-10 Release 1.0.0
* 2009-12-22 Release 2.0.0 (2009 wurde der Compiler grundlegend revidiert hauptsächlich von Viktor Szakáts und Przemyslaw Czerpak).
* 2011-07-17 Release 3.0.0 (Letztes Stable Release)
Ab 2011 gibt es nur noch Entwicklerversionen. Hierbei gibt es die Branches 3.2 und 3.4.
Zum Testen von Code-Schnipseln ohne Kompilierung und ohne Installation eines Programmpakets lassen sich die Formulare der Funktionsreferenz auf der offiziellen Homepage nutzen oder auch andere Seiten.

## Grafische Benutzeroberflächen

Die erste Harbourversion unterstützte genauso wie der Clipper-Compiler keine GUI, sondern nur Konsolenanwendungen.
Aktuell lässt sich die QT-GUI integrieren. Fertige Programmpakete mit QT-Gui gibt es für Windows und Linux.
Für Windows gibt es das Harbour-MiniGUI (HMG) Programmpaket, welches mittels Windows-Api freie Windowsanwendungen ermöglicht. Dieses wurde von Roberto Lopez 2002 auf Basis der Alpha-Version des Harbour-Compilers entwickelt. 2004 entstand MiniGUI 1.0, ab 2005 folgte die HMG 2.0 extended edition. Als Compiler wurde Borland C++ verwendet. HMG-Anwendungen und das Programmpaket sind auch unter Linux mittels Wine lauffähig.
Die aktuellste grafische Benutzeroberfläche ist HMG extended.
Außer den genannten GUIs gibt es Versionen mit GTK und andere wie HWGui, und ooHG.

## IDE

Für die Programmierung reicht oft ein einfacher Editor aus. Notepad++ unterstützt Syntaxhighlighting für xBase (s. HMG-Forum). Formulare und die Gestaltung der Benutzeroberfläche lassen sich jedoch einfacher mit einer IDE erstellen. Für die Gestaltung mit QT gibt es die HBIDE, für Windows verschiedene Versionen der HMG-IDE. Die HMG-extended IDE ist aufgrund der erweiterten Controls nicht abwärtskompatibel.