Visual programming is all about throwing away the syntax and the source files and programming by dragging boxes around and using a graphical environment to represent the program. This is a trend that gets some hype every few years. There are some great successes in specific domains. Scratch?from MIT is one of the most popular. It is a game creation environment that allows you to create fairly sophisticated programs and has direct support for graphics, animations and sound. It is also a community with people sharing the games and programs they create.
Scratch is targeted mostly at kids. My son created some nice games when he was 8 or 9 years old. There are other such environments for various domains particularly where the end product is visual???so direct visual manipulation matches the user’s mental model and makes a lot of sense. Some examples are visual web design, Game creation and circuit board design. Check out this blog?for many examples.
The big question is whether or not visual programming can adapt to more abstract domains and on a larger scale. My opinion is that there will have to be some serious breakthroughs and some paradigm shifts before that happens, if at all. The main reason is that the flat screen is not a great medium to represent complex systems.
Something like a visual dependency graph is cool (especially if you make it 3D and rotatable), but it is not very functional. The same goes for call graphs, database diagrams or flow charts. They can all represent complex relationships and processes visually, but most hard-core developers reach for other tools to explore, search and filter. I’m not talking necessarily about low-level textual tools such as grep.
Modern IDEs have language, framework and source control awareness built-in. They provide a lot of information and support, but are not visual. My sense is that visual programming is still far away for being suitable for general-purpose programming.