autocad (lisp, .net, experiments on js)
revit (.net, experiments on ruby)
adobe suite (js)
archicad (GDL)
sketchup (ruby)
3Dmax (maxscript)
blender (python)
Is about time to create a lingua franca + a specific DSL that could allow to interact with all of them.
edit: I know that this is not easy to implement, but as a professional user it would pay off to learn a lingua franca and be able to automate minor tasks by myself. Learning several languages doesn't.
* Many Autodesk 3D products now have a .NET API as either their primary or secondary interface for writing plug-ins. Off-the top of my head: AutoCAD, Revit, Inventor, 3ds Max, Maya, to name a few.
In the media-and-entertainment space, there is a strong trend towards Python as the de-facto scripting language. The list of 3D products used in games that support Python is too long to list. I still see a lot of usage of C# in games houses.
Some older languages do have their own custom language (e.g. Maya has MEL, 3ds Max has MAXScript, AutoCAD had AutoLisp).
I'm not sure if MCG will ever be a lingua franca for 3d but I'd love it if I could make that happen. I've tried to keep it relatively decoupled from the implementation technology (even though I map to .NET for now).
It would be relatively easy for someone to reverse engineer the graph format (XML files) and map it to a dynamic language like JavaScript or Python. The only challenge is mapping the core set of operators to the host language.
> Some Programs that support Python: Maya, Modo, Houdini, XSI, Massive, Blender, Photoshop (indirectly),3ds max (indirectly)
http://www.chadvernon.com/blog/resources/python-scripting-fo...
For larger productions you've got an entire department dedicated to this stuff leaving the artists free to create.
[1] http://bi-review.blogspot.ca/2015/06/easymorph-as-visual-fun...
One thing I can say with confidence is that general purpose visual programming languages are extremely difficult to produce due to UX / UI expectations, but for smaller companies significant progress can be made with domain specific visual languages which your product seems to be aiming at. Good job avoiding one of the tar pits of failed programming paradigms of the past century.
Eventually it all came down to inability for automatic, sensible scoping of logical components to be performed in our software due to lack of awareness of what the user is actually looking for because of lack of typing (we didn't have data structures / types - numbers and strings were all the same raw data) - all the analysis that could be done effectively for users was done following program execution, not really static analysis of a dataflow / graph. Everything was a side effect in a block diagram system just like how it can be in OOP, but unlike in OOP I had a heck of a time pointing references to a fragment under test to, say, a mock step easily (we did add them in eventually but scoping the substitution was insane). We have automatic folding in text editors that does pretty well, too, but grouping a bunch of randomly laid out shapes on a canvas together and hiding them while selecting them with a mouse was really painful for the minimal value it'd provide.
What happens is that the structure of the dataflow becomes a concern orthogonal to the basic algorithmic steps like looping, string manipulation, logical operators, arithmetic operators. Because most of the limitations of software production happen due to people's lack of tooling or abilities to reason about their data and behaviors efficiently / effectively, this means that given the failures so far in visual programming systems we probably need to re-think usability first before trying to develop a programming system around it.
The reasons we were able to get much success in our product with a visual programming paradigm was 1. we used users' existing expectations from products like Visio to help with onboarding / training 2. we developed complex logic like web requests in normal code (Java) and packaged them up into block diagram components that are easy to configure, so it was a lot like Automator constructs 3. everything was fairly easy to trace during program runs (required for auditors anyway)
This all came with a large amount of resource costs though which is why it never really would have worked as a consumer product unfortunately.
I think the key insight is that in a functional programming language functions need to be able to be values that flow through the graph and that can be dynamically created. Supporting lazy evaluation and expressing data-flow is insufficient to make a language truly functional.
The challenge I would give a data-flow language to see if it is truly functional is this: can you create a general "compose function" or "partial apply" node in these packages that works based on run-time inputs.