For someone getting into VFX programming (not me!), what do you think the most important languages to know are? And why?
There are some obvious answers, but I'll let them come out in the answers to this question.
For someone getting into VFX programming (not me!), what do you think the most important languages to know are? And why?
There are some obvious answers, but I'll let them come out in the answers to this question.
Add comment viewed 685 times Latest activity 7 months ago
C++: Most software APIs and more complex standalone software are done using C++. And from a shading development point of view, mental ray shaders are C/C++ and RenderMan SL is also very similar to C.
Python: Most VFX software supports Python now as a script language. And its object oriented with loads of existing libraries. MEL will slowly and surely lose its importance within Maya.
Many areas of vfx ( such as image processing, rendering, physics simulation, and increasingly simulation of characters) push the CPU really hard while the TD sits there watching pixels update. For this kind of stuff the speed of C / C++ is indispensable. There are plenty of libraries around, and you can use C to program the GPU too.
For other stuff, where the speed of writing code is more important than CPU cycles, then dynamically-typed scripting languages like python are good, and of course Python is finding its way into every vfx package there is, nuke, realflow, houdini, maya etc. In Maya, as the whole UI is coded in mel, I still find it easier to hack around in mel there.
That's the obvious ones out of the way.
I'd recommend learning on a Unix system - get exposure to the csh/bash shell and stuff like awk, sed, and regular expressions.
I would love to see Ruby integrated into some CG apps -- I guess that'll never happen, but I think learning Ruby makes you a better programmer anyway. I'm sure it has improved my MEL and C++.
Ruby is one that I’ve never really played around with… I’ve always grouped it in with Python and Perl as a scripting language – and of those 3, I’d definitely put Python at the top of the list. What does Ruby give that Python doesn’t?
Python is the top of the list as far as being popular and integrated into many vfx packages. I’ll use Python when I need to and they aren’t so different on the surface. To list what ruby has that python doesn’t would probably start a war. The big ones for me are: Ruby is more fun, everything is an object (more like smalltalk), I like ruby’s meta-programming, I use Rails, and I can’t automatically indent a language with syntactically relevant whitespace. Check out http://bit.ly/c6elW for http://bit.ly/d506wn – but really the best way to find out if you will like it is to try it.
Ruby is much cleaner by design and gives you alot of builtin constructs that Python just doesn’t have. It makes you do OOP the way it has been conceived. However, if we are speaking about VFX-specific things Python and C++ (of the worst variety, with vectors and boost and threads and GPU and whatnot) reign supreme.
I would generally agree about C style languages, with the caveat that most good programmers will be familiar with a wide variety of languages, environments and coding patterns. Good programming is about problem solving and analysis, principles that are largely language agnostic.
MEL maybe on its way out now, but 7-8 years ago this was not the case. Who cans say what role python will be playing in 7-8 years time? Programmers need to be able to adapt accordingly.
Although I completely agree with programming skills and problem solving being language agnostic, I see the growing tendency of using object oriented programming. And while MEL is a nice script language, the lack of OO support is a big limitation compared to Python. And since all MEL commands are just a subset of Python’s (after all you can call any command from both languages), its just a matter of time and taste which language one would use more for a task. I see myself using more and more Python, just because of the ease of higher level datatypes, IO and QT support.
This isn't an answer, I wanted to comment on an existing answer but it won't permit me.
"I would love to see Ruby integrated into some CG apps". This hasn't been updated in a while, but I'm sure it still compiles.