MCG: Visual Functional Programming

  • Looks like a rather solid system. Although, this approach when you have to connect blocks with arrows (which also can be seen in many enterprise ETLs) is not convenient, in my opinion. Text-based programming languages are convenient because you don't have to explicitly indicate which line should be executed after which. Function pipelining is so convenient exactly because it eliminates explicit passing results from one function to another. That's why in our EasyMorph (http://easymorph.com), which is also a some kind of visual programming language[1] used to replace scripted data transformation, we pack data transformations in logical blocks (very much like function pipelining) so that almost no arrows needed. Another point is about project readability. When all blocks look the same it's hard to understand what the function does. So we paid a lot of attention to designing distinct and informative icons.

    [1] http://bi-review.blogspot.ca/2015/06/easymorph-as-visual-fun...

  • A bit off topic, but a big concern in my opinion: the amount of different programming languages that graphic software professional _users_ (not professional devs) must learn if they want to control their workflow with scripting. Usually professional graphic software users use several software packages not just one. As far as I can keep up:

    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.

  • No mention of Maya, Houdini, Shake ?? meh. I was into cgi/compositing before hitting graduate programming, and was always surprised how a lot of lazy dataflow / DAGs brought to 'programming' but nobody really felt the same. There was an hidden vibe from the PLT research guys that DAGs were limiting compared to a usual functional programming language. I never knew why, and now I'm even more curious.

  • Where I'm from, MCG means something quite different. :)