Semantic-oriented programming

From Wikipedia, the free encyclopedia

Semantic Oriented Programming (SOP) in which you express your code directly in semantic meanings, most suitable to reflect your task. This means, that for each task you may need to add new semantic meanings, thus you'll need an extendable and configurable programming language and development environment. Actually, any programming language is extendable - by defining new methods, by defining new classes and types, or sometimes by defining or overrloading operators and statements. But SOP assumes much higher level of extensibility.

As a key change to a programming model SOP proposes to change text represetation of programms to a linked tree of nodes, where each node represents a concrete or abstract semantic meaning or action. A linked means that there are cross-referencies between nodes, for instance - a link from an operation load value of the variable X to the node declaration of variable X. Giving up with textual representation of the code and programms we achieve following advantages:

  • A programmer can freely and quickly add new semantic meanings (as new kind of tree nodes) to the language he uses, without breaking compatibility with development tools, as far as he will provide some rules for automatic transformion of new nodes into the base set of semantic meanings.
  • The same code may be rendered in different way, using a text syntax, or graphics, or a mix of both. This can be used for a more convinient code display according to personal prefearences (using C-style or Pascal-style syntax, or different formatting and pretty-printing of the code); as a convinient way for interative programming - to fold/unfold some constructs, to use condenced or detailed code view, to switch between design view (like UML diagrams) and code, to show the program as self-documented code and so on.
  • Much easier writing of different code refactoring and automatic transformation tools, measurement and auditing tools, because they will operate on a standardized internal representation of the code, convinient to analyse.

[edit] See also

[edit] External links