you are viewing a single comment's thread.

view the rest of the comments →

[–]zyxzevn 2 insightful - 1 fun2 insightful - 0 fun3 insightful - 1 fun -  (0 children)

I disagree with this statement.

While I agree that most software-tools have been build for specific cases, it is not so difficult to make general case or even system software with a graphical interface. The biggest problem in using it, seems how other solutions deal with state.

My design for such a language is at reddit:
http://www.reddit.com/r/unseen_programming/

The blocks in this case are text. You can put C or Python in them, I don't care. But the basic of a block is that it is a function or micro-service. And the functions are pure/stateless.

The actual low level coding can also be done with function-blocks. Just like hardware-design languages like VHDL. And to make it a lot simpler, the connections between the blocks can be streams as well.

And combined with types, you can create functional programming constructions very easily with them. This is very unlike the C and Python programming that we are used to. But much more like Excel.

The second step is that these blocks can be reused in many different ways. You can change the types. Insert new blocks. Change components inside the function. Or whatever. In OOP this would be inheritance, but I see them more as copies or templates. Copies if the design is not clear yet.

The graphical system has 3 programming layers: Architecture(what?), Timing(when?) and Functions(how?). These are 3 different styles of programming that interact with each other. C/Python only define the functions. What? describes the architecture and data and relationships. In databases we can usually do that, or in Prolog. When? describes the timing, using events and state-machines. Some graphical systems can already do that. How? describes the functions, which can be solved with a data-flow diagram in most cases. Some programs do not need functions(how) or even timing(when), because the compiler can derive a solution from the definitions (architecture) alone.

The system also has other layers: Test, Types, Optimisations. All layers have their own comments.

I encounter very different problems as one building a new compiler. 1) I need a compatible graphical system with a good editor. Only a web-browser seems to work on every computer. 2) I want life coding after a block is completed. And optimised compiling after a fully completed diagram. 3) Internally the streams need to be replaced with loops. This is a bit more difficult in a graph than in a text. 4) The program has many layers (architecture, timing, functions, testing, types, optimisations, etc.)

The complexity is similar to building a modern web-browser. That is why no-one has made one yet. And to prevent failure I first want to make the design perfect / good enough.

Current state: I am satisfied with the functions layer, but not with the rest yet. On paper: I translate the diagrams to C or javascript. Replacing streams with loops can make it as fast as C, but it works only for a few variations, before it becomes too complex.

Feel free to add your own ideas on the subreddit.