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 overloading operators and statements. But SOP assumes much higher level of extensibility.
As a key change to a programming model SOP proposes to change text representation of programmes 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 programmes 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 convenient code display according to personal prefearences (using C-style or Pascal-style syntax, or different formatting and pretty-printing of the code); as a convenient way for interative programming - to fold/unfold some constructs, to use condensed 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, convenient to analyse.