Reason - C Library

From Wikipedia, the free encyclopedia

Reason - C++ Library
Image:Reason-C++.jpg
Latest release 2.0 / 07 February 2007
OS Cross-platform
Genre Application framework
License GNU General Public License
Website http://reasoning.info/


Reason is an open source cross platform framework designed to bring the ease of use of Java, .Net, or Python to developers using the C++ programming language.

The philosophy and motivation behind Reason is to address the frustration which many developers feel in trying to use a language like like C++. In particular, C++ it is often described as being too difficult to use as it has a much reduced feature set compared to its more modern counterparts which often come complete with comprehensive frameworks including features like filesystems, strings, garbage collection, collections, networking, encryption, xml, and xpath.

Hence when a lot of developers talk about why one language is better than another, they are really comparing frameworks. The language defines the syntax and the compiler, but it is the frameworks which make a language mainstream and useable. So whilst Python is a programming language, it is also a framework.

Despite its shorcomings, and due primarily to its performance and strength, much of the worlds software is still written in either C or C++, and there are good reasons for this.

But there is a lot of software which isn't, simply because people either assume that it is not possible to write maintainable cross platform code in C++, or because the effort required to learn the language and its libraries has been too high.

Reason was designed to deonstrate that when presented appropriately C++ can be just as easy to use and as productive as Java, .Net, or Python.


[edit] Design

Reason contains many classes that you would see in other frameworks like Java or .Net as well as many that you wouldn't.

It also includes a comprehensive object hierarchy with its own form of run time type inference. Notably absent are inbuilt C++ rtti and exception handling. These features assist in making the framework faster and more portable.

Classes are separated into major namespaces like System, Structure, Network, and Language. In addition each major namespace has several sub namespaces sometimes by classification like Storage and sometimes by the name of a standard like Xml.

[edit] Links

Reason - C++ Library

Boost Libraries

ACE Overview

QT - Trolltech