Harbour (programming language): Difference between revisions

Content deleted Content added
tidy a bit
No edit summary
Line 1:
'''Harbour''' is a modern, fast, multiplatform computer [[programming language]]. itIt is aan [[open source]] [[cross-platform]] [[Clipper (programming language)|Clipper]]-compatible compiler which is [[cross-platform]], runningruns on many operating systems ([[DOS]], [[Microsoft Windows]], [[Linux]] (32, 64), [[Unix]] (32, 64), [[Mac OS X]], [[Windows CE,]] and [[Pocket PC]]).
{{rewrite}}
 
The [[open source]] Harbour license is similara to themodified [[GNUGPL General Public Licenselicense]], with an exception supporting commercial [[Closed Source|closed-source]] applications, so developers can distribute commercial applications can be producedbuilt with Harbour and distributed.
'''Harbour''' is a modern, fast, multiplatform computer [[programming language]]. it is a [[Clipper (programming language)|Clipper]]-compatible compiler which is [[cross-platform]], running on many operating systems (DOS, Microsoft Windows, Linux (32, 64), Unix (32, 64), Mac OS X, Windows CE, Pocket PC).
 
It is designed to use and compile Clipper source code, with Classy style OOP extensions.
The [[open source]] Harbour license is similar to the [[GNU General Public License]], with an exception supporting commercial applications, so commercial applications can be produced with Harbour and distributed.
 
It is designed to use and compile Clipper source code, with Classy OOP extensions.
 
== Design ==
 
Unlike Java which is intended to be write once, run anywhere, Harbour aims to be '''write once, compile anywhere'''. As the same compiler is available for all of the above operating systems, there is no need for recoding to produce identical products for different platforms, except when operating system dependent features are used. Cross-compiling is supported with MiniGW32[[MinGW|MinGW32]].
Under Microsoft Windows Harbour is more stable but less well-documented than Clipper, but has multi-platform capability and is more transparent, customizable and can run from a USB flash drive.
Under Linux and Windows Mobile, Clipper source code can be compiled with Harbour with very little adaptation.
Line 23 ⟶ 21:
Harbour supports external GUIs, both free (e.g. HWGui, MiniGUI) and commercial (e.g. FiveWin, Xailer ).
Harbour is 100% Clipper-compatible and supports many language syntax extensions, including greatly extended run-time libraries such as OLE, ODBC, MySQL, PostgreSQL, TIpt, TXml, RegEx, HbZip, and xbScript. Harbour has an active development community and extensive third party support.
Harbour extends the Clipper Replaceable Database Drivers (RDD) approach. It offers multiple RDDs such as DBF, DBFNTX, DBFCDX, DBFDBT and DBFFPT. In Harbour multiple RDDs can be used in a single application, and new logical RDDs can be defined from combination of other RDDs. The RDD architecture allows for inheritance, so that a given RDD may extend the functionality of other existing RDD(s). 3rd party RDDs, like RDDSQL, RDDSIX, RMDBFCDX, Advantage Database Server, and Mediator exemplify some of the RDD architecture features.
Line 41 ⟶ 39:
Harbour has OOP extensions with full support for classes including inheritance, based on CLASSy syntax. OOP syntax in Harbour is very similar to that of earlier Clipper class libraries so it should be possible to maintain legacy Clipper code with minimal changes.
 
==Xharbour[[xHarbour]] comparison==
 
xHarbour is a fork of the earlier Harbour project. xHarbour takes a more aggressive approach to implementing new features in the language, while Harbour is more conservative in its approach, aiming first of all for an exact replication of Clipper behaviours and then implementing new features and extensions as a secondary consideration.
Both the projects to set their standards and to choose what implement and how but we could have a "standard" [x]Harbour syntax.
C compilers are often very different but there sth we call C language.
Everyone will choose if writing standard code or use extensions.
Clearly what today an "extension" tomorrow can be standard
Harbour want replicate exact Clipper behavior.
Harbour document all hidden behavior making many tests with Clipper to imagine general rules used in the original code. Then I'm coding and for this I usually need much less time then for tests. The final results should be very simple because I do not believe that in Clipper someone intentionally hard coded exceptions.
The exceptions are results of some design decisions.
If later I have to explicitly hard code some chosen behavior in code I created instead of making some small modification in the algorithm then it means that the testing process was not enough precis and I took wrong decisions so I should repeat the tests. I very seldom decide to fix one special case without trying to understand why it exists in Clipper. Code which have a lot of exceptions is very hard to understand and later update.
 
The Harbour developers have attempted to document all hidden behaviors in the Clipper language and test Harbour-compiled code alongside the same code compiled with Clipper to maintain compatibility.
Harbour project don’t want unusable extension if it break Clipper compatibility.
In xHarbour the Clipper behavior was mixed with some xHarbour extensions and the debug process is much harder then it should be...
Harbour want made a clear separation and keeping the code clean is important
 
The Harbour developers explicitly reject extensions to the language where those extensions would break Clipper compatibility.
Finally Harbour have made most of important modifi decision to rewrite GT and multithread for cover all foundation need.