7 ms·
MCG: Visual Functional Programming
- galfarragem 11y agoA 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.
- cdumler 11y agohttps://xkcd.com/927/ https://xkcd.com/927/
- jeremiep 11y agoAnd usually different people will automate different parts of the pipeline and then share scripts. For larger productions you've got an entire department dedicated to this stuff leaving the artists free to create.
- d166e8 11y agoI agree it is a bit of a mess for graphic software professional users, but I have been noticing a convergence towards C# or Python over the last few years. * 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.
- ics 11y agoAdd Rhino/Grasshopper (Python) to that list.
- Keyframe 11y agoIn 3D applications, these days, python is more or less everything you need for daily tasks. Even 3dsmax has relative python support now.
- corysama 11y agoAs does Maya an several other packages > Some Programs that support Python: Maya, Modo, Houdini, XSI, Massive, Blender, Photoshop (indirectly),3ds max (indirectly) http://www.chadvernon.com/blog/resources/python-scripting-for-maya-artists/ http://www.chadvernon.com/blog/resources/python-scripting-fo...
- agumonkey 11y agoNo 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.
- d166e8 11y ago>> here 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. 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.
- agumonkey 11y agoI hear you, but since many FP languages are turned into DAGs before compilation, I always thought CGI software just didn't think about 'first class' graphs and thus no meta level operators. It would be very interesting to try though.
- dgudkov 11y agoLooks 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 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-functional.html http://bi-review.blogspot.ca/2015/06/easymorph-as-visual-fun...
- devonkim 11y agoThe boxes and lines approaches work very well when you're doing coordination programming tasks rather than algorithmic and numerical ones. Instead of forcing people to use rigidly specified academic / formal systems like UML sequence and activity diagrams, Visio has withstood the UX of most business users' needs that have little background in programming. A lot of what your system does seems to be a close analogue to what SRC Computers developed in its compilers to perform dataflow analysis with some auto-vectorization logic. However, a lot of the CPU-FPGA crossover works better with vector-centric languages like Matlab or Fortran than primarily scalar constructs like in C or Java. 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.
- elcritch 11y agoWhat UI/UX expectations make it difficult to make visual programming languages general purpose?
- petecox 11y agoWhere I'm from, MCG means something quite different. :)
- yitchelle 11y agoToo right mate, I was thinking it was AFL footy, a cricketing app or something similar. :-)