Which programming language to start?

99% of the games in the industry are coded in a mixture of C and C++
Java is barely used at all for games for a simple reason : It's 3d graphical capabilities aren't very developped, you could never make a game like BF3 on Java unless you're running it on a super computer
however
java is the better choice for beginners, it's easier, it has garbage collection and it has less concepts, no pointers
 
C is essentially a macro set for assembler, so it's a very low level language, hard to grasp for those who didn't study how a computer works internally, C++ is higher level, it's a language with syntax easily readable and more suited for big projects than C, C is used in performance critical sections because C can do a better job in some algorithms which could speed up the whole software
 
I know it's not one you listed, but I highly suggest Python if you are just beginning.
It is universal, from web development to game development.
It is a very easy to learn, and if you like I have a pretty good collection of PDF books that I can put up for a download.
 
here in the philippines , i used to study in a school that teaches it students first on the pascal programming before moving on java c++ and many more programming chapters.
 
If I were to recommend first programming language it would have to be Python. PHP is fine for learning basics but it would be better suited for person wanting to become web developer.

As for C++ vs Java, it depends on the person however Java is technically easier to learn.
Learning C++ as the first language is like putting you alone in the cockpit of a Space Shuttle just as you begin the re-entry manuevers and calling it a "trainning mission".

Learning Java as the first language is putting you in the co-pilot chair of a personal plane in control of a seasoned instructor who will slap your hand should you try and do something inordinately stupid.
 
For the love of god and baby jesus, pick a managed language like C# or Java (the 2 major competitors for the title of "most used managed language"). It will be all too confusing if you start with something more complex like c/c++...
 
For the love of god and baby jesus, pick a managed language like C# or Java (the 2 major competitors for the title of "most used managed language"). It will be all too confusing if you start with something more complex like c/c++...

I wouldn't learn a managed language first. The API overload is not useful, and throwing together a 30 line program that just calls very-high-level-API to do a lot of work isn't programming, nor will it teach you how to write software.
 
I wouldn't learn a managed language first. The API overload is not useful, and throwing together a 30 line program that just calls very-high-level-API to do a lot of work isn't programming, nor will it teach you how to write software.

Nor will Assembly or a macro language like C. Manipulating a few pointers and throwing some stream operators at stdout isn't any more useful for comprehending algorithm design than calling Random.Next(). Programming can be learned through any turing complete language; the language specification should be trivial compared to the range of functionality it supports in deciding what is a useful language to learn.
 
Nor will Assembly or a macro language like C. Manipulating a few pointers and throwing some stream operators at stdout isn't any more useful for comprehending algorithm design than calling Random.Next(). Programming can be learned through any turing complete language; the language specification should be trivial compared to the range of functionality it supports in deciding what is a useful language to learn.

IMO, you shouldn't be driving around billion dollar equipment when you can't even operate the playground version.

For almost everyone, reading Knuth's texts will feel like reading some arcane text with magic incantations in it that magically result in success. Everything in those texts is provided for you in .NET and the JSDK, and if you ask someone how to do them, they'll tell you to use the provided implementation because you will *probably* screw up somewhere (the same thing we tell everyone about cryptography). You won't learn anything useful if you're going to jump into a language where Google searches and every person you ask tells you to call SomeHugeNamespace.SomeClass.SomeAlgorithm.

Here, how to sort an array:

Java:
Java: Sorting Arrays

Point: In Java, an array is a collection of things. Arrays can be sorted, just like a spreadsheet! Just call 'sort.' Voila, it's fuckin' magic!

C#:
Sorting Arrays [C#]

See a difference? Me neither.

C, in order of appearance:

Sorting Arrays
C array sort example
Sorting an Array in C from low to high (without using qsort) - Stack Overflow
HowStuffWorks "The Basics of C Programming"
Arrays in C++ - Sorting
Array Sorting Algorithms in C/C++


So we have a few mentions of qsort (obviously anyone who knows much at all of the C library would immediately use this if they needed it), but the trend here is that (and it's even explicit in the SO post): the details of the algorithm are more important than the result.

This is very consistent with what I see from both search engine results and the think of these different worlds. C# and Java -> get **** done, don't care how it works, need to do task A, instant result to do task A. C - lots of learning, even if implementation can be far more tedious.

If the goal is to learn, this is why I suggest C or even lisp, etc. Any language that doesn't ship with an enormously monstrous enterprise-oriented API/SDK that does *everything* for you is good. Managed languages (primarily .NET & Java, depending on just how far we go with "managed") just don't fit that bill.
 
For start? One of easy-to-learn languages: JavaScript, Python, Ruby.
If you must choose from this two, then Java, it easier then C++.
 
IMO, you shouldn't be driving around billion dollar equipment when you can't even operate the playground version. For almost everyone, reading Knuth's texts will feel like reading some arcane text with magic incantations in it that magically result in success. Everything in those texts is provided for you in .NET and the JSDK, and if you ask someone how to do them, they'll tell you to use the provided implementation because you will *probably* screw up somewhere (the same thing we tell everyone about cryptography). You won't learn anything useful if you're going to jump into a language where Google searches and every person you ask tells you to call SomeHugeNamespace.SomeClass.SomeAlgorithm.

Here, how to sort an array:

Java:
Java: Sorting Arrays

Point: In Java, an array is a collection of things. Arrays can be sorted, just like a spreadsheet! Just call 'sort.' Voila, it's fuckin' magic!

C#:
Sorting Arrays [C#]

See a difference? Me neither.

C, in order of appearance:

Sorting Arrays
C array sort example
Sorting an Array in C from low to high (without using qsort) - Stack Overflow
HowStuffWorks "The Basics of C Programming"
Arrays in C++ - Sorting
Array Sorting Algorithms in C/C++


So we have a few mentions of qsort (obviously anyone who knows much at all of the C library would immediately use this if they needed it), but the trend here is that (and it's even explicit in the SO post): the details of the algorithm are more important than the result.

This is very consistent with what I see from both search engine results and the think of these different worlds. C# and Java -> get **** done, don't care how it works, need to do task A, instant result to do task A. C - lots of learning, even if implementation can be far more tedious.

If the goal is to learn, this is why I suggest C or even lisp, etc. Any language that doesn't ship with an enormously monstrous enterprise-oriented API/SDK that does *everything* for you is good. Managed languages (primarily .NET & Java, depending on just how far we go with "managed") just don't fit that bill.


Managed languages allow shitty programmers to be shitty programmers without parking billion dollar equipment in the nearest living room when they inevitably fail to understand how to operate it. This can still be achieved in C++, and to a lesser degree in C++ 11 or when using a compiler like Clang, but with training wheels inherently disabled by the language spec.


.NET provides APIs like Array.Sort() without the implication that they are suitable for a particular purpose, and often, they serve mostly to increase productivity or satiate the incompetent that fancy themselves developers, not unlike the expanses of C and C++ libraries that can be downloaded with relative ease. That isn't a license to offload thinking to the CLR any more than SO is license to copy and paste generic solutions whenever there is a problem in need of an algorithm, and there isn't any effective difference between the two.


Developers can, and never fail to, find ways to express laziness in anything turing complete. Some languages are more conducive to laziness than others, but that doesn't mean that the reverse is true; there are no MSDN standards that require developers to use the provided class library. There is nothing preventing an extension QuickSort method being appended to ICollection -- this is even preferable in some instances. Hell, you don't even have to reference System if you're feeling like a real programmer.
 
Back