The Qu Programming Language
Home  |  Download  |  Modules  |  Documentation  |  Repository  |  Tutorial  |  Mailing List

What is Qu

Qu is a general purpose programming language. It is a full-featured object-oriented language itself but you are not forced to write object-oriented programs. The choice is yours.

Qu's goal is to provide you with the tools to implement your own programming. Its flexibility lets you exercise new programming styles. It can be used as a tool to discover new possibilities. For example, it is possible to define properties in a class and define methods elsewhere. Qu has real closures, generators, accumulators, coroutines, currying, variable arguments, etc.

Qu is a dynamic language but provides you with similar ability found in static-typing languages. You can assign types to variables, functions, etc. You can even mix the two worlds any way you fancy.

In fact, Qu goes even further by extending the meaning of type to validator. You can create types from classes, constants, functions, and even methods. You can even assign types to container items such as Array, Dict, Set, etc. Ensure methods gives you the ability to maintain property integrity easily.

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 also implements the Uniform Access Principle. You don't need the parentheses to call a function or method with no arguments, unless you want to.

Since version 2.10 you can embed HTML code in your Qu programs directly as demonstrated in the examples.

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.

Qu has an extensive documentation with massive examples. When you install Qu, all documentations are built and installed on the fly in a matter of seconds.

Everything in Qu are objects, including numbers, strings, etc. The number 123 is an instance of the builtin Int class. Classes are instances of the builtin Class class, etc.

Qu has builtin rational, complex, integer, decimal, numbers with arbitrary precision. There is no integer overflow nor floating point limit. They are all handled seamlessly by Qu. Explicit conversion between numbers can be done much easier than type casting.

Qu has a wide range of builtin classes:

Array     dynamic sequential object container    
Big     decimal with arbitrary precision    
Boolean     true and false    
Buffer     mutable string    
Complex     complex numbers with arbitrary precision    
Dict     dynamic dictionary    
Dlib     access to shared libraries    
File     file stream    
Float     double precision floating point number    
Int     fast integer    
Inf     infinities    
Iterator     iterators    
Long     integer with arbitrary size    
Null     the nil object    
Proc     allow Qu functions to be called by C functions    
Pointer     memory pointer and allocator    
Queue     fast queues    
Range     integer range    
Rational     rational number    
Record     record of typed structures    
Set     dynamic object set container    
Socket     base socket class    
String     byte string with arbitrary size    
Stream     base class of all streams    
Struct     typed structures    
Thread     for multithreaded application    
Weak     weak references    

Qu comes with a JIT engine, GNU Lightning. It can optimize your code and make it run faster with no effort on your part. All you need to do is run Qu with the -O option.

And finaly, Qu is entirely written in C. Readable documentations are embedded in the C sources directly. Writing C modules for Qu and interacting between the two is as easy as it can get.


Copyright © 2006 by Marc K.
Generated by Doc.qm Thu, 15 Jun 2006 02:13:48 GMT