Guess what I miss the most when I use it?
diff -c
And all the rest you get with text (versioning, global search&replace, static analysys...)
Guess what I miss the most when I use it?
diff -c
And all the rest you get with text (versioning, global search&replace, static analysys...)
It was never my intention to develop a language that anyone could use. It's for programmers. You still need to write algorithms. It will attract different people, just like different text-based languages.
I am planning to incorporate automated testing into the language, but haven't decided upon the best way to do this yet.
Now that I think about this, it was exactly the same with a large Sharepoint installation (around 2009/2010?).
In my experience there is a world of difference (and a world of pain) between "this is a source file, you can compile or interpret it and if there is a mistake you will get an error message" and "this is the XML serialization of a complex hierarchy of objects and if you mistype a GUID somewhere you will only find out at runtime, usually because something not even remotely connected to your mistake starts behaving erratically".
I am not saying that your project has no merit or that it will fail, I am just commenting on why, in my opinion, visual programming never really became a serious contender for general purpose programming.
I would be more than happy to explore viable alternatives to traditional text-based development but so far I haven't found anything that really impressed me.
Anecdotally, I've also used webMethods, SSIS, and several other visual dataflow programming languages, and they look remarkably similar to FMJ.
> Each single graphical element had 2 or 3 different XML "source" files, distributed in different subdirectories
S-expressions with equivalent content are smaller and just as readable, and don't need an extra parser. XML is OK for text mark-up, but not as good for storing data (including programs).
Typically developers care about this, business buyers don't and they direct budgets and in many ways, product prioritization. To a large extent the proprietary or obscure nature of integration DSLs never helped bootstrap any meaningful tooling for users.
That's changing though with developer-power driving prioritization and investment. In our case, we hope to make good progress with an upcoming project called Flogo. Currently in stealth and soon to be OSS.
Disclaimer: I work at TIBCO on integration
Trying and failing to go with option one is what leads to the XML mess you describe.
- "Find all places where I am using records of type X and replace that with a record of type Y"
- "where did variable RunningTotal gets initialized? when do we reset it"?
- "Can I write a simple script to verify which temporary variables are not removed from the dataflow after being introduced?"
(Debug in the more traditional sense works reasonably well in webMethods - but this was not the problem - the problem was that it is impossible to reason about a "program" as a series of instructions and analyze it as such, even if at the end of the day a webMethods flow service is just that: a series of steps that manipulate data in a tuple space).
So this is not a critique of webMethods (or FMJ) - I am explaining what the problems you encounter are when you try to use the graphical metaphor to work on reasonably complex programs. Most of the successful examples cited so far seems to be mostly about audio manipulation. I suppose this means most of the time you compose smallish "scripts", you work alone and not in a team, logging is not an issue, building large, reusable components is not an issue, extending existing logic is not an issue, and so on and so on.
Having also worked a lot with an ancient 4GL application (where the language was supposedly "more expressive") I can sum it up all my doubts as follows:
Certain paradigms work well as long as the programs are written and maintained by a single developer to automate simple tasks but do not scale very well past that point