New Programming Systems Comparision

From Wikipedia, the free encyclopedia

This page contain comparison of new programming systems, which provide a completely new approach for programs creation, edition and compilation.

Unlike current, text-based programmings languages and developments tools, new programming systems are oriented on direct edition of programmer's intentions, concepts, in terms of task-specific semantic meanings. These new programmings systems allow extension of base languages and/or creation of domain-specific languages.

To allow such extensibility and provide flexible code representation, these new programmings systems are based on direct tree edition and rewriting. But while these new programming tools has common background idea, they use rather different implementation approaches, which are compared on this page.

Contents

[edit] Intentional Programming

[edit] Concept Programming

[edit] Language-oriented Programming

[edit] Harmonia Project

[edit] Whole Platform

[edit] Semantic-oriented Programming

Tree, nodes:

  • linked tree: direct links (referencies) between any nodes in the same compilation unit, links to declaration nodes between compilation units.
  • versioned tree: transactions for nodes rewrites, branches for different editors and compilers (tree rewriters).
  • each node type represent a separate semantic meaning or a group of close semantic meanings
  • nodes have information about their types and standard attributes, can hold external attributes.

Node attributes:

  • raw attributes (primitive types like int or string).
  • children nodes (sub-nodes), belongs to parent nodes (aren't shared).
  • referncies to others nodes.
  • arbitrary data identified by external attributes.

Input:

  • a saved tree dump (in XML or another format).
  • imports from existing languages by compiler plugins (front-end plugins).

Viewer:

  • the internal tree is rendered on canvas (as text or graphics) or as a raw/formatted tree.
  • the internal tree may be rendered using different specifications (provided by special DSL languages).

Editor:

  • direct internal tree edition (on the canvas) based on renderer's description.
  • direct internal tree edition (on the tree).
  • tree flattening, edition and parsing for expressions.

Transformation:

  • automatic transformation for symbols linking and conversion into canonical form of nodes.
  • by compiler plugins as hardcoded tree rewriting
  • by compiler plugins which use external/configurable transformation rules specified in the same source code (meta-programming).

Output:

  • dump of raw tree.
  • dump of transformed tree using text renderers (for instance, into Java source code).
  • rewriting the tree into a subset of nodes directly supported by specified backend and compilation into bytecode or native code (currently only Java backend is supported).

[edit] See also