Download
Compiler will be released to the public sometime soon. Currently working on an installer for it. The compiler is open source.
For latest information on expected download of compiler see Qompute.
Qompute (pronounced kompute) is a new programming language invented by Z505 Software that aims to be easy to read once learned, compact in notation and syntax, and powerful like C/C++/D. If you are already familiar with Java, PHP, Algol, Delphi, C++/C, D, or C# then you will see many similarities.
It is also called "Qomp" for short.
Qomp in final implementation stages in 2008 (ongoing since about 2006), and the language has been changed over the past few months. The current preview of Qomp is is here:
Qompute.
Qompute can compile native applications on multiple platforms (Windows, Linux, BSD, MacOS, and more). Qompute can create both executables and dynamic shared objects (DLL's).
Work is being done to also release a Qompute scripting language - however the compiler is the first major work and release of the project.
Qompute can link to C language dll's on Linux/Windows and can utilize C object files.
Odd Syntax?
Elegance.
Unlike Perl, PHP or C, Qompute uses fewer {}&&/== style symbols. The beginning of a code block does not start with a curly brace '{' like in C, Java, or PHP. Code blocks start with b and end with an e. The letter "e" is shorter than Ruby or Delphi's "end" keyword, yet still beautiful = especially when one uses syntax highlighting it is fairly easy to see "b" and "e" as cute, short, precise versions of the older verbose "begin" and "end" that were in other languages.
Although C/Java style curly braces are compact ways of enclosing code, they are also hard to distinguish from regular brackets ( ) and also they are inconvenient to type (requiring many shift keys and further to reach than b and e) on our keyboard. Plus, curly braces don't look as poetic and aesthetically appealing (this is a matter of taste), and curly braces are used for other parts of the language anyhow.
Strong, Weak, Static, Dynamic?
Qompute is strongly typed with static type checking, and dynamic features. It of course has ways to escape and disobey the type system if one feels the need.
Platforms And Support
Programs can run on multiple platforms (as many as FPC) with the same set of source code.
Qompute has a built in compiler which can compile ObjectPascal source code compatible with the freepascal and delphi compilers, and can link to C object (.o) files. This was done so that Qompute is not yet another new and incompatible programming language. Rather, Qompute makes use of existing source code modules by offering this optional built in compiler mode.
Unlike Java, Qomp has the ability to compile native applications, dynamic link libraries, or even operating systems (Qomp is not as limited). Qomp syntax, of course, is not baroque and complex too.
All Low Level Features Avail
Although Qompute is strongly typed, one can escape the strong typing system by using dynamic variables (a.k.a. variants or variable types). For lower level needs, one can escape the type system by using untyped pointers, and custom structs (called recs) with a number of types stored in them. Typecasting is of course also available.
Unlike C, Qompute does not require using a lot of explicit pointer declarations by the programmer, or explicit pointers to chars, fake arrays (pointer to pointer). However full pointer and byte twiddling is still available in Qompute for when the programmer really needs it. Therefore, Qompute is a Systems programming language like D and C.. however Qompute is an application and web programming language too, since it offers an exceptional balance between low and high level.
Qompute has a built in boolean type and has sets available.
Qompute unlike C, but like D (digital mars) has a built in variable length string (ansistring) type just like the high level languages which have ansistrings.
Qompute, like C but unlike Java, can get down to the bare metal of the computer when required. Qompute can go low level enough to build an operating system.
Qompute has a macro preprocessor, however using the preprocessor is completely optional and not required to take advantage of the power of Qompute language, nor is it encouraged. The preprocessor in Qompute is not used to utilize major features of the language, as it is sometimes in C++ and C.
Qompute is a hybrid language offering procedural style coding and object orientated style coding. Unlike Smalltalk or Ruby, Qompute is not (or does not claim to be) one hundred percent object oriented nor will it ever try to be a pure language.
Qompute can utilize include files or modules, which are called units. Units offer more structure and have their own namespace, unlike simple include files or c source files.
Qompute, like Java, but unlike PHP, uses dot notation to access structure and class properties.
Qompute, like Java, uses an operator to concatenate strings
Qompute is case insensitive and whitespace insensitive (unlike Python). However, clean and consistent code is encouraged (proper indentation, consistent capitalization and function naming). Qomp encourages 2 space indentation like Ruby and Delphi developers encourage.
To access standard output and input: Qompute offers the standard in and out functions without putting them in a system.console class like C# does. Qompute is a hybrid language and does not force objects upon the developer for system work.
It is possible to rewrite your own custom standard out (STDOUT/STDIN) functions by making a special unit to do so, although this is rarely needed.
Easy On Hand And Eyes
The inventor of Qompute does not have arthritis or repetitive stress injury - however, a sore fourth and pinky finger is starting to kick in even at a young age. Qomp is elegant while remaining extremely easy on the fingers.
Also: inventor does not find big bulky hard on the eyes syntax as useful. During learning a programmer may find big bulky syntax useful, but such languages as COBOL are said to cause "brain damage" further on. Ada is borderline of being ridiculous also. The idea of Qomp is to Let the notation and symbols do the work, without the language becoming an ugly Perl.
See also: the Qompute Page
|