Uhm, the first language you learn isn't going to be what you program in for the rest of your life. It's usually just the best option for learning what someone wants to teach you, and in a lot of cases everything people want to teach can be done in Java. Java is broad enough that you can teach a variety of subjects with it alone; I did my intro class in Java and even programmed an operating system in it. Saying you shouldn't learn it first without a reason isn't very reasonable, if you can give a reason for why learning Java first is a bad idea, your argument might gain some validity. As it stands you're making a very unsound argument.
Also what does being in the industry have to do with it? I'm sure you're a top video game designer, right? Someone aspiring to be a video game designer doesn't necessarily need to be thinking about video games from the get go. Programming is programming.
Say I learn Java first, would C++ require a considerable amount of work to master?
Does knowing C++ render Java useless, or is this only relative to game programming?
Languages each have their uses, otherwise they wouldn't exist separately as they do today. If someone tells you one language renders another completely useless in all cases it's a good idea to take that with a grain of salt before you accept it as fact.
Learning C++ after Java would be extremely easy. While there are significant differences they are few enough so that you can literally sit down and learn the differences and be able to code effectively in a matter of about 2 hours tops. (I had to write my 3rd project in Data Structures in C++ with no previous experience with it and the professor taught us most of the important differences in 2 class periods)
edit: Read aurik's post and realized you said master. Mastering any language is always going to require lots of time, so yeah it will take a lot of time to master but learning how to program in it after learning Java won't be any more difficult.
A good thing to note, because it's been implied, is whether or not learning Java first will impair your ability to learn other languages. I can assure you it will not, Java is one of the better languages to learn because it has a consistent structure and it's actually almost a strongly typed language which is really nice (type casting, damn you!). When you go to other object-oriented languages you will notice lots of similarities and even scripting languages like Python too. They will have their differences but your background in Java will be helpful not an impediment.
Sure, but the converse is true as well.
Most of your knowledge will be language-agnostic. Knowing basic design principles and a solid grasp of algorithms is far more important than expertise in a language.Does knowing C++ render Java useless, or is this only relative to game programming?
Yea, honestly I learned Java first and i've been doing extensive C/C++ work the past 2 years so I've forgotten some of the interworkings of Java. What you'll see after picking up a language is that it's not tough to remember old ones you haven't used, or to pick up newer ones. The first time you learn a object oriented language it'll be different, but after that you should have no problem picking up the basics.
On a side note, Magus whats the worst lab you ever remember doing? I remember the first time I had to do a linked list in C when I was first learning about pointers. >_>;
edit: second what Aurik said pretty much. It's about learning the 'how' and the language is just an extension of knowing how to solve the problem.
Java makes it easy for you, and doesn't allow you to do some nasty things yes. The thing is that while Java saves you from hurting yourself it prevents you from doing a lot of other things. Basically Java is limiting, but if you want to start off with it, it can be good or bad depending on who you ask (as apparent in this thread lol)
If you're going to start with game programming in mind I would just start off with C/C++. Because when it gets down to it, you wont be using Java.
I guess you could use a small example with the fact that Java does mos (if not all) of the 'cleanup' on your program. You don't have to worry all to much about the mechanics under the hood. In C++ you don't necessarily have to either but you're able to. It's almost like Mac vs. PC, PC's you can tinker with and Macs tend to put gloves on you. Just my o0pinion.
edit; Oh Magus, second worst lab I had was writing an assembly language compiler. I ended up doing it in C++ but it was a full quarter project. I swear to god they embedded binary/hex numbers in my brain forever. I still remember some of the encoding for the instructions .... what nachos lab? I think I missed that part.
Oh in C++ you definitely have to pay attention on your cleanup. I can't even begin to tell you how many times I've seen memory leaks in what we're given.
haha i remember nachos
Tell you what. All I know is that I've taken Java classes and none of them approach the complexity of what I'm doing now. Same thing goes for everyone else I've asked here. There's a reason why they say you can shoot yourself in the foot with C++. If you don't know every little thing about it, you most likely will eventually. Java, like was said before, has a good chance of cleaning it up for you.
Heh, I get to write a compiler during my Senior year, I've already heard horror stories so I can definitely feel your pain even without having taken one. Nachos is (Not Another Completely Heuristic Operating System), for the first project you basically had to implement a lot of the kernel thread's functionality and implement thread synchronization and solve various synchronization problems (Oahu/Molokai row boat problem for example).
Sounds incredibly excit...time consuming. >_>; I'm telling ya if you want some lulz go check out RESOLVE on OSU's Website. It was the stupidest thing i've ever had to do, aside from make a IEEE single precision floating point calculator. D:
On topic though, start simple. I'm pretty sure it's been said, but don't laugh at any really simple/stupid thing. We all might bitch & moan about stupid labs, but I think personally i've taken something away from everything i've done. It's all about the mindset. :O