Visual programming languages

Started by
43 comments, last by Conner McCloud 18 years, 9 months ago
Hi ! I'm interested in taking a look at visual programming 'languages'; by that I mean a language that can be presented graphically (variables and classes as graphical symbols, drag and drop functionality just like in Windows, etc.) as well as in text mode. Does such a language exist? What is the best choice? Thanks. p.s. I do not mean RAD tools or tools like Delphi, the language itself must be presented graphically or in symbol form.
Advertisement
You could look into Max/MSP. I know a few people at my school really like it, although I've never tried it myself. Apparantly you have a set of operators that you can chain together to form programs. Its oriented towards multimedia projects, so it may or may not be useful for you. I doubt that the programs can be represented textually; AFAIK its solely a graphical programming system.
I know Max, it's mainly for music purposes, but would it not be cool to have a graphic C, C++, or Pascal skin. Or maybe a visual tool to compile to all popular languages!
I know i'd love it. I'm just tired to type all things in a text window, it seems so outdated and slow .
There are several advantages to text, not least of which is the many tools available that handle text (code checkers, compilers, versioning systems, diff and merge tools, etc).

Also, it is generally not the speed of typing that slows down programming.


That being said, there are a few places where graphical programming work to at least some extent. Obviously there is Max/MSP that was linked. This is well suited to graphical layout as it is for signal processing.

One place I have seen graphical programming used to write actual (albiet small) programs to fairly-good effect was in simple event-based programming systems. Pre-defined objects are combined by linking event outputs to event inputs in a graphical manner. Unfortunatly the name of at least two programs that did this escape me at the moment.
Some tools can generate UML diagrams from C++ code which may help to visualise relationships and dependancies. I hear such support is slated for integration into the Eclipse CDT Plugin at some point...
If you're on Linux, try out Anjuta 2. It's still in beta, but it's UML facilities are some of the best I've seen on Linux to date (I don't use Eclipse..).
MindRover is a robot-programming game that uses a graphical system like this (which is converted into an intermediate, text language before it's actually used, though). It's cumbersome to do anything really complicated with it, but I'd imagine you could do a lot better. I'd like to see what these guys improve when/if they make a sequel.

I'd kind of like a hybrid graphical/text system: Anything that you want to code in text, you can put in a container object, but there are graphical representations for everything if you want to go that route, too.

I'm thinking of using a system like this for the output of a decompiler project that I'm working on (since the bloody optimizers do some WACKED stuff that's easier to represent in a graph than unroll into C-style flow statements). The flow-control stuff in optimized assembly ranges from trivial to horrifying. Sometimes it's possible to turn it into true C, sometimes you need Divine (user) Intervention. My plan is to put all the blocks of code that the decompiler can figure out itself into graphical nodes, and then take any conditional jumps that can't be figured out automatically and tie all of the other blocks together in a graphical flowchart "for human processing".
I thought aboput designing such a language for level-scripting so that non-coders could easily program simple scripts. I think I got a design that's simple and powerful enough. So far the following is designed: Functions, variables, math-expressions, comments and flow-control.
screen
Unfortuneatly nothing is implemented yet.

Note: Since that image is old(the only computerized image I got) the written code should be translated into:
x = inner(2); // x is declared
var = outer( x ); // var is declared
// in the code x hasen't got any name(and can't be represented in a text-language) but for the sake of explenation I named it x. To make it represent the code a direct line should be drawn instead.
I've heard "good things" about LabVIEW.
*shudder*
___________________________Buggrit, millennium hand and shrimp!
Thanks for the replies! It seems that most of such applications are related to music; I started to get interested in this subject because of the new Reaktor 5 update (this is also a music tool); but why should it be related to music only and not the well known languages. f.e. I could make a graphical module 'classes' and when the user clicks it, the user can define all classes of the program.

This topic is closed to new replies.

Advertisement