Oops my bad guys, thanks for the help, I'll move over there and check it out! Appreciate the help, while im here tho i had a few questions regarding a couple of the articles:
Out of all the languages, which would you guys recommend? Ive heard lots of good and bad things about C++ which is where i was going to start, but I've heard its outdated and takes too long to do simple things, but I've also heard its the best one.
Isnt C# a subsidiary of C/C++?
I wanted to start out using Visual Basic, but read its outdated, would C# or Python be good starting languages?
If I can learn to program one language, are most of them basically the same? (I know theyre all different, but theyre all programming languages so they have similarities right)?
Just some random questions I had, I'll post more in the beginners section but you guys arent beginners lol, but I'll still go to the beginners section just wanted your guys' thoughts.
C++ and C# outdated. ROFL :-) Where did you hear
that from?
I work in business IT and not the game industry. But I hear of lots of jobs for C# programmers.
C++ jobs are a bit rare because very few businesses have use for such a powerful language as C++. After all, if you can program it in a week in C#, why pay someone to take 3 months to program it in C++?
Still, C++ isn't going anywhere. I'm hearing the C++ is "evolving" with Windows 8 and whatnot, but that's not the same thing as "going away".
Machine language is what the computer "speaks". If you want to get
real technical, Machine Language is nothing but switch settings (the transistors in your CPU and memory are electronicly controlled switches that are either on (1) or off (0)). That's usually represented with bytes that have values between 0 and 255 where each byte is 8 electronic switches. Machine language is programming the computer by setting the switches by setting every byte a specific value. Now
that's a dead language. Not because it's not awesome, but because Assembler is the same thing.
Assembler just assigns mnemonics to the numbers. So just for example, you might have 32 46 29 in machine language. 32 might mean add the next number that comes up to whatever number is in the memory address provided in the next number. Or Add 46 to the value at memory location 29. Assembler allows you to write: ADD 46, 29 rather that 32 46 29 and makes it more clear what you're doing. But it's one for one with machine language. Essentially, it
is machine language.
When you get deep into C++, you find out that C++
is Assembly language. Instead of ADD 46, 29 you will have something like X +=46 which says to add 46 to the current value of X. But under the hood X is just a memory address that might be at location 29.
When you dis-assemble Visual C++ you find that it's next to impossible to write better machine language code than Visual C++ does. It's just
really good at it. That means C++ is direct control over the hardware. You just simply can't get any more powerful or efficient than that. So good luck replacing it.
Unless Object Oriented Programming goes out of fashion, I don't see C++ going
anywhere in the next decade. That doesn't mean it won't
evolve. Most modern programming languages are just rehashes of C++. Java is basically C++. C# is basically beginner level C++ that calls the .Net library. It's like new languages can't even manage to do it better than C++; they just abstract it more and take it further away from machine language reducing the performance and power.
Now things like Windows managed code are making things a bit more complicated. So, you have to have managed C++ and CLI and all that, but C++ is still as powerful as it gets. It's so powerful that no one even bothers writing Assembly language code anymore.
Granted, modern machines are so powerful that you can afford to waste a
whole lot of the computer's resources. Visual Basic, for example, is not nearly as efficient as C++ but it's a
whole lot easier to learn. And there's the question of "maybe it's ok to be less efficient if it makes it easier and development time is shorter".
C# is half way between Visual Basic.Net and C++. It reads a whole lot like C++, making it a little more difficult to learn, but it spends 90% of it's time calling .Net just like VB.Net to the point that the two languages look very similar.
Anyway, to the OP, Visual Basic.Net is a good easy way to start learning programming. C# is just a little harder but a really good language to learn and not
that much harder.
I would
not recommend C++ as a beginner language. I've seen people fail to learn easier languages. Yes. You
can start by learning C++, but if it seems overly difficult
definately take a few steps back and learn C# or VB. C# is very similar to C++ but just a whole lot easier because you don't deal with low level stuff. For example, you're going to have to get very familiar with pointers in C++. It's a difficult enough subject it gave me a bit of trouble in college even though I've been programming since I was 12. C# is similar but there are no pointers anywhere in the language. You just simply don't have to learn about pointers in C#. (Granted, eventually you
need to learn about pointers but not at the beginner or intermediate level.)
Oh. And most programming languages are similar. I mean, after all, all of them are used to program the computer. But they were all created with different purposes in mind. Basic was created to be easy for beginners and kids to learn. Visual Basic is just a modern version of that, but maybe not as common in the business world today as it once was. Pascal was created to teach college students to program "correctly" before Object Oriented Programming was popular. Assembler was created because it was easier than machine language and nothing else existed at the time. C was created as a powerful improvement over assembler that could be used across many platforms. (Assembler is specific to the CPU being used. Mac Assembler is nothing like Intel Assembler when you get into the specifics.) Java was created to be used on even MORE platforms without any code changes but ran through a virtual machine which is slower than C. C++ was created to make C object oriented. C# was created to compete against Java and leverage the .Net CLR. So they all have their advantages for certain things related to why they were created in the first place.
Learning
any computer language will make learning the next one a
whole lot easier. And, yes, an array is an array no matter what language it's programmed in. In other words, a lot of what you learn in one language will apply directly to the others.
Generally, the more powerful the language, the harder it is to learn and the more time it takes to get anything done in it. That's why no one does Assembler anymore, since C++ is a
little easier but can do the exact same thing just as efficiently (with some rare exceptions). And that's why businesses don't want to hire C++ programmers (except game design companies who primarily want to hire
only C++ programmers) when they can hire a C# programmer to do the same thing in 1/10th the time and just buy a more expensive and more powerful computer to make up for the performance lost. Businesses can afford to throw more hardware at a problem. But game design companies can't tell their customers "Well, we could have programmed our game in C++ so that you could run it on a $1,000 computer, but we decided to program it in VB.Net. But HEY, it will run JUST as well if you go buy a $5,000 computer to run it on. Oh. And by the way that will be $60 for the privledge of playing our game."
So: easiest language VB.Net
best language to start with if you can handle it: C#
best language to know but one of the most difficult:C++ (C++ is actually a whole lot more than
just C++. Good C++ programmers know Win32, ATL, STL, maybe MFC, and can tell you exactly how Windows works under the hood with things like multi-threading management using mutexes and semephores and large block memory management using page locking. In short, learning C++ is just the beginning of learning C++ for Windows. Learning C++ is actually the "easy" part and only about 1/100th of the journey.)
Post Script: I actually got up out of bed after going to bed to write this because I forgot to tell you: you can download VB.Net Express edition or C#.Net Express edition for free from Microsoft. It's hard to beat that price. So, it won't cost you anything to give them a try. (For that matter, I think you can also download C++ Express edition for free too.)
Edited by XNA-3D-101, 20 June 2012 - 11:37 PM.