First Experience with MetaEdit+ Scripting Language

I spend yesterday writing my first “generators” as scripts are called in MetaEdit+ and I must say I have mixed feelings. I was able to do most of what I set out to do, but often I had to bend over backwards to make things happen and that’s in no small part to the stack concept that the scripting language uses. Basically what you do is you start from some point in your diagram, then iterate over all things of a given type and then from there repel to the next thing like a monkey in the jungle and this way you build up a stack that you have to climb back up again. So sidestepping into other objects or iterating over unrelated objects to search any of them that somehow relate to the one on the stack that you are operating on, is difficult.

It’s also missing array features and you can not actually program a loop with an index variable only iterate over all items of a given type from the item that’s at the top of the work stack, so it is not easy.

On the plus side, I was able to write two complete generators in one day as a complete newbie and given the lack of powerful features that speaks to the ease with which the language can be learned, probably because there aren’t that many features. The tutorials are a bit confusing because they refer to a sample graph that I did not really work through (a language to describe displays for digital watches) but when I read the reference manual one by one, it became clear.

So all in all I would say, there is no real alternative to MetaEdit+ currently. Doing the same stuff with yEdit or Visio would be a pain in the ass, so it is certainly a useful tool. However the price is quite high. I was lucky to get an introductory packet which is about 200$ for a 1 year license and you have to renew it every year for the same price. Although I am not one to buy licenses this way usually, in this case I had no choice because there is no competition. However the professional licenses out there start at 4000$ for a package that comes with a 2 day personal training session on site (not sure if on theirs or on yours) and then 300$ per month per workstation. So it is certainly nothing you want to buy for your small software corporation. When you look at the list of customers on their website, it’s mostly academic institutions and big corporations, so I guess they can afford this.

I could really see a market for that sort of software if it were cheaper, but as prices are now, I think most people will stick with simple diagram editors and take their deficiencies over paying these prices.

 

First Impression Of MetaEdit+

After two days or so (OK, I worked through the tutorial 4 weeks ago when I had the trial version), making a relatively simple set of graphs consisting of symbols and relationships seems easy now. I was able to create the metalanguage for the Structure Chart that I have in mind pretty easily.

When you look at Yourdon’s Structured Design approach you notice that it is really made for a conventional one threaded program that does one thing only, and given the fact that he developed his method in the 70’s and 80’s this is state of the art. However today we’re using multithreaded applications and exception handling so the symbols he used aren’t sufficient anymore.

What I’m trying to do is come up with a set of symbols and relations of my own that I can use to plan software in a way that is based on the classic structural approach. I won’t go into philosophical discussions about OO vs Structured development here. I encourage everybody to read the first link I put in the link section. That side is an exhaustive argument against OO design and I mostly agree with all of the points made there.

So for me it is about finding a more conservative approach that nevertheless allows me to use modern programming techniques.

I made a good start today by being able to edit my symbol design in MetaEdit+ pretty quickly. I think this part of the software is really well made. I came across some quirks though, but my main criticism is that the names and identifiers used to describe the concept are a bit overlapping as are the tools. You can do the same things in different ways and personally I don’t like that sort of flexibility because it always makes you wonder whether you got it right or not. In most cases there is one way of doing things that is better than the others and it is the designers job to find it, not the users.

Well I am now starting to read through the manual section that describes “generators”. This is basically the built in programming language that allows the developer to go through the diagrams he created and operate on the objects inside the diagram with his program, so for instance to extract all item names and all relations and test if the relations are valid etc. I want to use this to scan my diagrams and extract a dictionary from it and create a list of all the modules I created and into what Ada packages they go.

Once I have it all worked out, hopefully in a few days, it will become clearer when I can present a complete example here.