Progres: Language

Home Language Environment Release Installation Documentation Applications Publications Mailing List Related Libraries Copyright

The PROGRES Language

  • Are you implementing complex data structures with lots of derived information, complex querying and update operations?
  • Did you ever have problems with dangling references in C(++) programs or with inconsistent pairs of references?
  • Do you prefer "visual programming" instead of writing long and obfuscated programs in state of the art textual programming languages?
  • Do you have to solve backtracking problems on complex data structures?

Then, please have a look onto our specification and rapid prototyping language PROGRES and its integrated
programming environment. The language has a formally defined semantics based on
"PROgrammed Graph REwriting Systems".

It supports the following programming paradigms and may be used for the following purposes:

  • Structurally object-oriented specification of attributed graph structures with multiple inheritance hierarchies and types of types (for parametric polymorphy).
  • Declarative/relational specification of derived attributes, node sets, and binary relationships (directed edges).
  • Rule-oriented/visual specification of parameterized graph queries and graph rewrite rules with complex application conditions.
  • Nondeterministic & imperative programming of composite graph transformations (with built-in backtracking and cancelling arbitrary sequences of failing graph modifications).

Therefore, PROGRES may be used as

  • a very high level programming language for implementing abstract data types with a graph-like internal structure,
  • a visual database programming language for the graph-oriented database system GRAS (which is available as free software under the GNU license conditions), and
  • a rule-oriented language for rapid prototyping nondeterministically specified data/rule base transformations.

Furthermore, PROGRES is an almost statically typed language which additionally offers "down casting" operators for runtime
checked type casting/conversion (in order to avoid severe restrictions concerning the language's expressiveness).

Finally, you should notice that "PROGRES" has nothing in common with the commercial database system (language) PROGRESS
or the vacuum cleaner PROGRESS, or any other product which is called "PROGRESS" instead of "PROGRES" (we use the French
version of the German word "Fortschritt" in order to avoid any copyright problems and as a rememberance of a time, where
Aachen was the capital of Carolus Magnus, the king of a kind of European Community Empire about 1200 years ago).

Created by: system last modification: Friday 05 of November, 2004 [07:57:31 UTC] by ranger