Qu is a powerful full-featured object oriented programming language. It is an Open Source software. The Qu Programming Language is absolutely free (as in free lunch) and distributed under the GNU General Public License (GPL).
Qu is inspired by other languages. Most noticeably Perl, Python, Ruby and C. It mostly resembles Python except that the syntax is more flexible, the internals are simpler, and Qu allows you to use either indentation or non-indentation style.
Qu has a clean syntax designed to promote readability. There is no need for semi-colons and commas to separate items except in rare cases when the end of an expression is not obvious.
Qu is a procedural language. A program consist of statements and expressions evaluated in the order they appear.
Qu is a strong semi-dynamic (optional-static) typing language. Adding a number to a string will throw an exception. A variable can hold anything or you can attach a validator to it. Validators can be as simple as a class, a constant object (Array, Range, Struct, etc.) or even a validator function.
Arrays, dictionaries, and sets can be constrained to hold only a specific "type" of data as well.
Everything in Qu are objects, including numbers, strings, etc. The number 123, for example, is actually an instance of the builtin Int class. Classes are instances of the builtin Class class, etc. But this does not mean that you must write your programs in an object oriented manner. That is entirely up to you.
Documentation can be embedded in the source code. The compiler will skip them. The documentation builder will extract them. The builder is included as part of the standard distribution.
In fact, when you install Qu or Qu modules, the documentations are automatically built for you.
Qu is entirely written in C. Readable documentations are embedded in the C sources directly.
Writing C modules for Qu is as easy as it can get!
Here are some key features of "The Qu Programming Language":
· clean syntax
· strong semi-dynamic typing
· module management
· deadlock detection
· label loops, break, continue, redo
· loop, while, for, atomic, do
· fast exceptions
· try, catch, else, finally
· nested function
· lexical closure
· type validator
· run once function
· full and safe eval
· buffered printing
· auto self
· private, public and static attributes
· read/write & read-only attributes
· class property and methods
· dynamic attribute access
· single inheritance with mixins
· multiple constructors
· super class attribute access
· multiple assignment
· variable and default arguments
· argument flattening
· uniform attribute access
· complex number
· big integer
· mark & sweep garbage collector
· gcc 2.96 + POSIX threads (pthread)
What's New in This Release:
· Qu's internals are now compiled into a shared library.
· The garbage collector has been enhanced.
· The HTML syntax now uses lowercase letters, and there is a more efficient H module alternative that also has built-in HTML-like syntax support.
· The database interface has been enhanced to make class binding easier.
· Many modules have been moved into separate packages so they can be downloaded individually.