Jump to content

Has anyone ever done a script 'Designer' ?


 Share

Recommended Posts

I've been thinking about how a script designer would work... graphically manipulating symbols in order to construct a script, or a program. There are a few halfway decent commercial systems out there, but there is nothing, anywhere, with the scope of AutoIt.

I've abstracted the ideas to the point where I think I have a system which would be functionally equivalent to coding by hand, but would be immediately usable by newbies. There's something compelling about seeing data presented in a logical, visual manner, and I think coding should evolve to incorporate our visual senses more thoroughly.

I was wondering what people's thoughts were on something like this. I've abstracted the ideas into some pretty basic concepts:

  • Nodes - These are basic structures, used to identify discrete points within a program.Their color represent their types... they can be basic functions, variables, or @macros. Nodes encompass datatypes, operators, and functions.
  • Paths - These represent Conditional statements and Loop statements, and control the flow of the program. Branched, Forked, Looped, and Linear paths represent different Types that visually represent their purpose.
  • Anchors - Anchors are utility objects, very much an evolution of comments, that aid in navigating visual code. They allow the user to instantly move to the anchor's location.
  • Constructs - Constructs are complex structures reduced to single graphical representations (icons) in order to facilitate ease of use. Constructs can consist of multiple nodes, paths, and anchors, and can be accessed by 'zooming' inside. All constructs must have at least one link.
  • Links - Parts of a construct that allows interaction with external objects, such as a function requiring parameters, or a snippet of code requiring initialized variables. Links describe scope in a visual manner. Constructs or nodes cannot influence other objects unless linked (representing Dim / Global / Local / Const.)
  • Shell - Shells represent collections of linkable Nodes and exist outside of Constructs. Linkable nodes have accessible scope, and can be used by external functions.

There's definitely room for work here, and I'm considering several additional visual objects.

The basic program would be designed by dragging nodes from your basic object Toolbox, then connecting these nodes via paths. Pathing would be done automatically, unless the user changed the path or link specifically. I see the biggest benefit of this as having the ability to easily recognize and reuse code. Each node and construct would have a label, an identifying color based on type, and constructs would have custom icons.

Visual familiarity is easier to acquire than contextual coding skills. My theory is that, done correctly, a visual programming system would allow large gains in productivity, and significantly lower requirements for actual coding ability. Noobs would be able to grab a formatted UDF and immediately begin using it, without fear of typos and syntax nightmares, because the structural elements would be handled automatically.

Automatic syntax handling and code generation *will* lead to bloat. In some cases, I am certain that it will impinge on performance. I plan on incorporating a simple AutoIt script editor similar to Scite, with a highlight functionality so that you can quickly switch between code and design view. Experienced coders will still be able to optimize and tweak things, and I plan on allowing people to modify the code being generated, so that again, experienced coders can customize the system to their own style.

At any rate, AutoIt is an easy language. I've drawn out both 3Dand 2D mockups of several scripts I've written, using this system, and there are no problems so far.

Any thoughts, suggestions, links?:P

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...