Highlevel tasks
Semantic Oriented Programming
This project is an answer on question – what is a right way of developing and running software?
From this small statement you already may make a conclusion, that I know how to write software in a right way, and that I assume that the current way is incorrect… Yes and No.
This project can be compared with OOP (object-oriented programming) technology. Which is a more right way of writing many programs, but it did not discard previous way of writing software. OOP extended modular programming, made it more right. And a small change in philosophy of software development brought by OOP changed the programming completely.
-
Concrete choice for trade-offs for a development and execution environment must be moved from a stage of development platform design to a stage of concrete program design.
-
Development and execution environment must be extendable, to match both requirements – scalability and efficiency.
It’s a holistic vision, to get maximum effect from this philosophy; it must be applied to all stages of software development – design, coding, execution, support of programs. Of cause, adding it to some of these stages will give a noticeable effect, but only complete implementation can give an improvement of 10-100 times for the quality, price, speed and maximum complexity in software industry. This is both a weak and a strong side of the project. The weak because it will require a lot of time and resources, before it will give a profit. The strong because the rate of the profit may be incredible.
High-level tasks of this project
One of cybernetic postulates says that only a more complex system may efficiently manage a controlled. So, from the cybernetic point of view, to make efficient programs, the development and execution environment must be designed as (a), but if fact, we have development and execution environments designed as (b).

These thin gates, clamps between different stages of program development appears, in terms of trade-offs, because of the fixed design, fixed choices that were done at stages of programming language design, runtime or VM (virtual machine) design, standard library design and so on. A design of concrete program must pass a thin gate of a programming language, and during the coding we must, from one side, express a program’s design which cannot be expressed in the language directly, and from the other side, we must use purely extendable set of libraries and fixed runtime/VM. A fixed runtime tries to guess what a programmer meant, to execute the program efficiently on a given hardware.
These clamps between design, programming language, runtime, standard libraries – they have different nature, thus we need to use different techniques, in the proposed project, to overcome them, and made programming environment designed as (a). And, as it’s true for everything made, there are key points, being applied with minimal force allow changing a system completely.
