I'm trying to learn programming, but I'm not sure which order to learn the different languages in, since I'm sure some things are easier to pick up on one language once you learn another one. I doubt there's a real answer to this question, but I want to learn HLSL, Maxscript, Python, Java and Javascript (for now). Anyone got a particular order they'd recommend a noob like me learn this in?
Replies
No actually, I'm finishing my Bachelors in Computer Science right now with a focus on game programming. I also have an Associates in Animation.
I highly suggest learning VB.NET first. It's easy and it gets you familiar with a few important concepts. Don't spend too much time on it though. You can learn the basics and not do anything crazy in it. Then move onto C++ and really grind your nose in it. Once you get fed up with that, move onto C#. C# is a lovely language.
But if your just talking about MaxScript or MEL, just jump right in man. All they are or command versions of everything your doing. It's pretty easy to piece together once you know what each flag means.
As for HLSL, I'd like to learn that too. From my encounters with it so far, it's not very nice. But, like every other langauge, it just takes some getting used to. Once you know what, you pretty much know them all. You just have to adjust to the syntax and the way of thinking.
Screw javascript, maybe learn Java. Maybe. Python is awesome, good beginner language too. I'd say either VB.Net or Python.
EDIT: If you want to PM me sometime to chat, have at it.
We do mainly art support but also small to mid-scale tools coding here. For GUI stuff we use Qt.
C# and C++ we usually just use for stuff we cannot do in another language or where speed is the issue. Re-compiling stuff can be annoying, plus that some team members don't know C/C#, which sucks when we have to maintain stuff.
HLSL is just shaders. While knowing it is important, it doesn't really help you when you need to write anything else.
SQL is neat to know, because it ROCKS when you can network your tools to gather feedback, statistics, share preferences, etc.
I started to learn CG for shaders but quickly realized that to really grasp what was being taught I would need to first brush up on my math skills, which I'm also currently studying.
Also the best advice given to me to learn programming was just jump in and start doing simple scripts.
Once you've hacked together enough projects and grown a bit from it, you'll start to notice new ways you could have gone about the problem, or realize that this code sucks and you could do it infinitely better. Just jump right in, you'll learn how to swim later.
If you are not obsessed or goal driven leaning the language there is not much success doing it at all. Just saying you want to learn programming is as vague as saying I want to learn to be creative. Define you sub interest and pick things up from there, that's a lot easier in the end as it makes decisions easier and asking questions likewise.
Some sample ideas:
Build a simple iphone game: Unity3D with c#
Build a specific tool in 3dxMax to improve your work flow: maxscript
Build a simple online game: Flex SDK with Actionscript or Flash CS3+
Build a dynamic website or Blog / Portfolio: jQuery (JS) & PHP / HTML
Python is nice for a beginner. Very versatile language and used all over the place, but 3ds max doesn't have Python support yet. It might be coming rather soon though.
As far as what I know right now, I've jumped all over the place. 1st, I was taught ActionScript 2.0, then kind of upgraded to 3.0, although I can't remember much to save my life. I tried learning one of those "C" languages, but I forget which one. I couldn't stay awake
Then, we had to make a game for our senior project. We wanted to make the game in UDK, but I hadn't taken the class for Javascript yet, so I just jumped headfirst into UnrealScript. That was painful, and since I was the only "programmer" on the project, it was also exhausting. Afterwards, I did learn some javascript and started liking it, but then heard somewhere else that a lot of position don't even need it. SO I'm back to square when it comes to programming. I'm definitely motivated since just about every job position I'm interested in wants me to be fluent in one or more of these language. HLSL isn't a huge deal for me since I'm pretty good at math and I'm playing around with ShaderFX for the time being. It's probably going to be more of a challenge getting the syntax in order and learning which magical keywords each language likes.
Python, java, unrealscript, maxscript, are all something a tech artist might use but are not as relevant as C++ to actual programming work.
Java is not used for big games as it's too slow to execute. It tends to be something used by smaller iphone or web games that don't need fast execution.
I think one of the things that helped me most was learning C first. I went through C book, watched a lot of tutorials, wrote a lot of random programs in C, etc. and then spent more time in Maxscript and C#.
I love C# the most and C# coupled with .NET is awesome.
Python is awesome too, but I love the structure C#/.NET provides.
I'm certainly not done learning yet, as when I'm not at work or spending time with my wife and son, I'm usually reading a programming book or writing programs.
There are always areas to improve.
I ran into that the other day. it blew my mind.
My goal is to make a small game in Unity.
Then learn maxscript, mel & HLSL. That'd be a good start for a tech artist. You can get into the more hardcore languages later.
You should be able to pick up a new language in a relative short amount of time once you're used to the environment you're working in.
I often have to bounce back and forth between Maxscript, C#, Javascript, Python, and whatever else gets thrown my way, and then sometimes I get to make art to, so it's a rather interesting situation but I enjoy it.
**edit**NVM. After some research, It seems as though Python 2 is the one to know.
Blender is Python 3,
There are some "breaking" differences between Pything 2.x and Python 3, so be sure just to learn the one your apps require, though you'll eventually be using Python 3 in the future.
This so much, logic structures, flowcharts, they're all the same in every language.
I probably would learn MEL, but I was raised on Max and have yet to even make a box in Maya. I'm assuming that order to script anything, you first have to be familiar with the program.
craig.
hlsl is C like but only deals with a very specific set of things. It's simple enough to hack once you can read the words but to use it properly you need a shed load of cunning maths and rendering ninja stuff.
Once the principles are in place you can move onto proper compiled languages and only have your environment to worry about.
Which language you learn doesn't matter at first, because the concept behind a certain language type is more important. Once you have mastered one language, you will adapt others with the same concept quite fast.
So, for now there're two interesting language realms, the object oriented, mostly strongly typed, multithreaded and heavily structured languages and the group of scripting languages. If you want to really learn a programming language concept (=I want to be a coder), I would sugguest to learn one of the first group, that are C++/C#/Java (+others). These languages are used to build hi-performance games/enterprise applications, they are object oriented, strongly typed and are generally really powerful, but might be not so important for a tech-artist.
The second group of languages, the scripting languages, are often by far more flexible, have no or seldomly any kind of type safeness and some really simple mechanism to handle certain concepts (i.e. lists,maps etc.). Most will support some features of the first group (i.e. classses), but are more lax about it. They are often used where performance isn't so important (game design scripting, max scripting), but fast development and easier handling.
your going to have a hard time with the built in scripting in maya or max if you don't understand those things because the languages are not as cleanly structured and have a huge amount of functions for very specific thing. that tends to make it confusing if you don't have a good foundation.
i was really kind of lost with scripting until i dug in and really learned c. once i learned how write programs in c then things started to make sense. and you need to get a good intro to data structures and algorithms book. there are many good books for that with c and python but none for mel or max script.
the good thing about c is that it gives you a foot in the door to c++ which is where all the serious programming is done. once you know some c++ then you can get into api programming for maya and max. the maya api is quite amazing library. i am having quite a lot of fun learning the maya api.