What is Gene
Gene is a common purpose programming language.
It is
inspired by languages such as object pascal, C++, sql and EBNF
languages
such as Coco/R, lex and yacc and is a pure object oriented language.
It is therefor ideally suited for applications that process a lot of
sequential input and output such as scanners, parsers and data generators.
Gene also has build in support for container objects (objects that
manage a list of other objects such as arrays, linked lists, queues,
sql tables,...).
Important:
Gene is currently undergoing a major transformation. It is being
moved to the .net environment which triggered a series of profound
changes. The current documentation is hopelessly outdated and is best
ignored. A new, updated version is being written as we speak and
should be available pretty soon. If you have any questions, you
can always contact me through the tigris account .
For a more detailled overview, please check about gene.
Some key features:
- data management of containers through spaces and
storages. This allows the seperation of the implementation and
usage of a storage principle such as a linked list, stack, array or
ODBC. It also means that all objects can always be used as
containers for other objects, be it owned or as a reference.
- Messaging: this is a principle based on BNF used by compiler
generators. It allows you to write only the expected input or
output tokens without the actual function calls and checks,
significantly reducing
code size for heavy input and/or output routines such as
file reading - writing, network communications,....
- Advanced program flow control through options and
loops. No more if, case, for, while statements. They are
all replaced by the loop and the option. Each loop or
option consists out of 1 or more conditions
which determin when a block of code is executed. Although there
are fewer different statements than in more traditional languages such
as C, the structures are more flexible and have more possibilities.
- Automations: These allow you to declare your own meta types such
as classes and structures. They are actualy code generators.
Patterns
(such as singletons or observers), GUI design, xml mapping and much
more can easely be
implemented with automations which will generate the code at compile
time based on parameters given to the automations.
- Interpreted compilation. During the compilation process,
interprete statements will be executed allowing further generation of
code or conditional compilation.
- Advanced library support. Automatic loading of
libraries through simple variable declarations (static or dynamic
loading)
- Compilation for multiple processes. A single source
code can contain multiple processes for multiple platforms
- Built in compilation for multiple platforms.
Current status
The language definition itself is stable. Some more additions
might be added in the future. The compiler is able to
compile itself. It currently produces C code or Gene
code for debugging automations (code generators). A
generator for
assembly code still needs to be implemted. Error handling could
use some cleanup and there is still a lot of testing to be done.
I am currently in creating the default libraries. These also
need a lot of debugging and documentation.