I'll answer first Prinsessa. I have not had time to read the rest yet.
I've yet to see a visual system that isn't just basically written code with a fancy font, only you drag and drop snippets more than you type them out yourself (but code completion, which is a feature of most modern code editors, is basically the same thing). It may often imply more abstraction, but there's nothing stopping one from writing a written code library with the same level of abstraction.
Thanks for the remarks. Very interesting.
Truth. In javascript, for example, "console.log(" hello world "); or" alert("hello world");.
That would be equivalent to any dragging block.
The main difference is that in the first case, you organize the information in your memory. In the second case, it is the editor who organizes this information.
The write code you need to remember what is "console.log", "alert", and what are the Arguments to the function, etc. And, until you memorize it, you will remain dependent on the documentation and updates of this documentation.
With blocks it is different, because they are organized into categories and the colors also represent categories. And if the function needs two arguments, the block has two spaces for arguments.
And if that is still not enough, clicking on the block has a help that displays the block code, usage details, and so on.
It's pretty much the same as Visual Studio does with Intellisense.
In both cases, it's like having the documentation inside the editor.
However, only one block you can not yet realize the advantage of this.
The advantage becomes clearer when you connect several blocks and create a behavior, which is a set of blocks. Or when you create something even more complex than that.
You can also do something similar with C / C +, C #, Java, etc., creating different classes.
The difference is that you will have a lot of files inside folders and will have to deal with the organization of this to have a project organized and expandable.
In the second case, you continue with everything inside the editor and organized by the editor. And not just the classes you are using in this project. But, all classes of all your previous projects.
Something you could also do in the traditional way, if you have memory an information organization level equivalent to the level of organization and memory of this editor.
I do not know if all this is clear, but it's the most I can explain with text.
I do think a modular multi-editor like this would be really cool, tho, if it could offer both visual and traditional editing tools. Like some of the old website software, like Dreamweaver, where both the code and a visual editor were available, and connected, so that an update in one implied an update in the other? That's actually very neat, especially for a beginner or learner.
This is the idea. Because it does not exist better for all cases. Defending one thing or another is just fanaticism. I do not intend to abolish code writing, because in many cases it is better.
The yellow images show a tab with only code. It's like a traditional editor. The difference is that the comments are used by the program to split the code page into modules.
Thus, blocks turn into code and code turns into blocks.
Write blocks is more faster to create and edit a function.
Visual blocks is more faster to order and sort these functions.
This is like using the left and right brain.
With your system, I suppose there could even be three modes: raw code, "visual" code and an actual visual editor (which doesn't show nor look like code at all). Or you could just treat the "visual" code exactly like what I think it looks like: extra fancy syntax visualisation, and have those blocks appear around written code. Maybe a context-aware editor that limits your keywords.
The idea is to create a Engine 2D multi-language. That I consider superior to cross-platform, because you can choose which framework and language is best to each type of game, not limited to a single framework or language.
How to do this?
The fundamental is to make block building as easy as possible so that developers of all languages can create and translate blocks.
But I'll start with something simple.
I'll use the Google Chrome Engine as the program's own server. Use PHP to create, edit and copy files. Twitter bootstrap for layout. Ace as code editor. The pages of the program will be PHP and HTML. The games are also tested in HTML5 in the program itself. And the program itself will used to build and edit itself. Because it's really Plurality: it's a software, website, editor, server, engine, and everything else it can be. And since it is a server, if necessary, it can also stay in the cloud.
I'm going to use as base a framework like Phaser, because it's very lightweight and Javascript is the script language more universal.
So a project with the "hello world" block can be exported to HTML5 with Phaser, Pixi.js, Cocos2d, or any HTML5 framework that has compatible blocks. Or export the project to EXE, with SDL, SFML, Allegro, XNA, etc. And so for mobile and any platform.
To compile, while we do not have everything built into this program, after having the code, this is possible to do in any other program.
Looking at the moon would be it. But much less than that is already good.