Best language to start programming in?
#1 Members - Reputation: 361
Posted 01 December 2012 - 09:08 PM
Thanks, guys.
I update this more: http://forum.unity3d.com/threads/158344-Not-Dead-Enough-a-zombie-apocalypse-simulator-now-in-production!
#2 Members - Reputation: 102
Posted 01 December 2012 - 09:21 PM
#3 Members - Reputation: 506
Posted 01 December 2012 - 09:30 PM
Also, you can check out http://www.gamefromscratch.com/post/2011/08/04/I-want-to-be-a-game-developer.aspx for some direction.
#4 Members - Reputation: 821
Posted 01 December 2012 - 10:20 PM
No matter which language you pick, you won't have to do any switching around. You can make a game in any language.
#5 Members - Reputation: 5795
Posted 02 December 2012 - 01:01 AM
And now for the part that is totally my personal opinion and nothing else ;) . For people that want to eventually be great programmers, I recommend C, but I know this is not popular advice. If you want to get your feet wet with programming but don't want to learn every little aspect of how things work, perhaps Python is a better choice. I would stay away from Java because I don't like it and because I don't like how people who learned Java first tend to program. C++ is a terrible choice for a first language, because it's just too hard to learn.
Edited by Álvaro, 02 December 2012 - 01:02 AM.
#6 Members - Reputation: 206
Posted 02 December 2012 - 03:49 AM
I would recommend C++, good luck!
#7 Members - Reputation: 1797
Posted 02 December 2012 - 05:25 AM
In a classroom environment, I imagine Java would be fine since the instructor will usually give you certain restraints within which to work. But when studying independently, best to avoid temptation methinks. If I had to to it all again, I would start with C first. It's not that difficult to learn if you have a good book at your side (or, these days, a good web site) to get you through the rough spots. Stephen Prata's C Primer Plus is a good one to go with (and the latest version covers C99). And there really aren't that many rough spots.
I mostly work with D these days and rarely touch Java anymore. But I still love C. It can be extremely tedious to work with on a large scale and isn't really practical for as wide a range of tasks as it used to be, given the number of better-suited alternatives out there. But I really believe it's the best place to start. Some say that learning C first is rather like learning to swim by jumping into the deep end of the pool, whereas learning Java or Python first is more akin to playing around in the shallow end. It's an interesting analogy, but I don't see it that way. My take is that Java and Python have certain constraints imposed by the languages themselves which, while not necessarily a bad thing, can be mistaken by beginners as part of the process rather than understood as being quirks of the language. C has none of that, so you can see as much or as little of the bigger picture as you are comfortably able. After some time with C, moving on to Java, Python, C# or whatever language you want will be rather simple. Not so easy the other way round.
Edited by Aldacron, 02 December 2012 - 05:26 AM.
#8 Members - Reputation: 482
Posted 02 December 2012 - 08:39 AM
Start out with an easy langauge to learn the basic concepts of programming, then if you realize that you'd rather sit and make your own lists and memory managers and what-not instead of making games, then you can try out C or C++
Don't be afraid to switch programming language. It's something most programmers do alot ,and as others already have said: it's easy to make the transition once you have learned the basic concepts of programming. Last week, at my work, I had to switch between C#, C++ and lua....I want a language I can stay with so I don't have to keep switching around
#9 Moderators - Reputation: 5027
Posted 02 December 2012 - 11:31 AM
I think this is fantastically poor advice to start with. Start with a good beginner material for the language you've chosen (books are probably best if you can), and get the basics down first.My only advice is download sample .javas and try to interpret how the game/program will work. If your into it, download Minecraft (http://minecraft.net) and decompile it, then look at the code, it is definitely one of the easiest codes to understand, because once you get it, it just clicks.
#10 Members - Reputation: 898
Posted 02 December 2012 - 11:54 AM
And it is free to use and learn from here and now. That book really got me and my class mates going back then. It did what no other book had done. It really teach you to be a novice programmer and then from there everything can be build upon.
Try it it out
"The only thing that interferes with my learning is my education"
Albert Einstein
"It is a miracle that curiosity survives formal education"
Albert Einstein
#11 Members - Reputation: 392
Posted 02 December 2012 - 01:18 PM
#12 Members - Reputation: 3283
Posted 02 December 2012 - 01:50 PM
This is bad question to be asking (no offence), since everyonce will tell you one of their prefered choices. I personally started with BASIC the very old one from begginning of the early '90. Then i started learning C, and after very long time i started learning C++. There is popular opinion that beginners should start with Java, since it is simple. I would recommend you to learn C and over time adapt to C++. Since there is not much difference between C, C# and C++. C# has slightly different syntax but they all do the same thing same way. There are many many lessons with C and C++ that you can find on the internet at any subject of programming.
Actually, among the more experienced members on the site, the advice is pretty consistent and not just a matter of exposing their favourite programming language.
General consensus is, start with a more programmer friendly language with a good ecosystem ( books, tutorials, etc ), with Java, C# and Python often being recommended, but higher level language like [Java/ECMA/Action]Script and Lua are equally valid. The particular language you choose from that collection isn't really all that important, the skills you learn will be transferable. The vast majority of experienced devs recommend against C++ as a first language, in fact, I can only think of one or two of the more experienced people here that recommend C++ to start.
Edited by Serapth, 02 December 2012 - 01:51 PM.
#13 Members - Reputation: 3283
Posted 02 December 2012 - 01:53 PM
This is bad question to be asking (no offence), since everyonce will tell you one of their prefered choices. I personally started with BASIC the very old one from begginning of the early '90. Then i started learning C, and after very long time i started learning C++. There is popular opinion that beginners should start with Java, since it is simple. I would recommend you to learn C and over time adapt to C++. Since there is not much difference between C, C# and C++. C# has slightly different syntax but they all do the same thing same way. There are many many lessons with C and C++ that you can find on the internet at any subject of programming.
In this day and age, learning C to transition to C++ is an absolutely gonzo choice. They are completely different languages at this point, and for the most part, its the C parts of C++ that make it the ticking timebomb it is today. If you are going to learn C++, learn idiomatic C++ from day one. If you find yourself using a char* or calling new/malloc ( especially malloc! ) in the first month of programming, you are doing it wrong.
#14 Members - Reputation: 664
Posted 02 December 2012 - 01:53 PM
#15 Crossbones+ - Reputation: 1372
Posted 02 December 2012 - 02:04 PM
Python - Great language. You can get so much done so fast. Pygame isn't as good as many other counterparts with other languages, however it's great for beginners. Most people who stick with programming (Especially as a career choice) learn Python eventually, because there's so many things that it can do extremely quickly. However, every language has applications, and none are catch-all, especially Python.
C# - Amazing Standard Libraries. I recommend it, and many engines use it (Unity3D, as an example). Although people are saying XNA is dead, there are many alternatives, and some are better (Monogame, SharpDX, etc.).
Java - I tend to sway towards Java for smaller applications. I don't believe it's that good for learning programming, because after you've learned another language you tend to program better in Java than if you'd learned Java first.
It's not the language that defines you, or that's hard. It's how you learned to program that's important.
Here's Breakout:
Breakout!
If you need some photo editing done, contact me:
superman3275@gmail.com
if you want some programming help, or are recruiting for a game development team, either PM me on here or email me up there
#16 Members - Reputation: 1073
Posted 02 December 2012 - 03:08 PM
So, get a hold of lower level concepts with some language like C++ (pointers, references, pass-by-value, pass-by-reference, procedures, functions, data structures, primitive types, control structures, etc) and then switch to another language that has "automatic" memory management to learn higher level concepts (classes, inheritance, polymorphism, methods, visibility, encapsulation, design patterns, etc). That way you will have all the basics very well covered when you reach higher level concepts.
#17 Crossbones+ - Reputation: 925
Posted 02 December 2012 - 03:22 PM
Probably either C# or Python. C# is better than Python tho... Python is limited more than C#
Sorry but I felt compelled to respond to this. Do you have sources to back up this claim? I see no reason that Python is more "limited" than C#. What metric are you using to establish which is "better"?
To the OP:
The main advice is to pick a language you are most comfortable with and just start writing programs. Like so many have said there are numerous languages and no language is "better" than any other (especially at a beginning level).
I am personally a huge fan of Python. I use it all of the time both at work and in personal projects.
So anyway try them and see which you like best, and don't give up!
Edited by shadowisadog, 02 December 2012 - 03:23 PM.
#18 Members - Reputation: 3283
Posted 02 December 2012 - 03:41 PM
Something with light manual memory management. It makes easier later switch to managed languages.
So, get a hold of lower level concepts with some language like C++ (pointers, references, pass-by-value, pass-by-reference, procedures, functions, data structures, primitive types, control structures, etc) and then switch to another language that has "automatic" memory management to learn higher level concepts (classes, inheritance, polymorphism, methods, visibility, encapsulation, design patterns, etc). That way you will have all the basics very well covered when you reach higher level concepts.
I have to say you have that backwards.
Something without *HEAVY* ( if you consider C/C++ LIGHT memory management, what the hell is heavy? Assembly? ) memory management, will make it easier right away, and you possibly wont bother switching later.
For the record, memory management is not what makes C++ hard, it's what makes C++ fragile. It should take an intelligent person about an afternoon to grasp the basics of managing memory in C++. Hell, C# has manual memory management ( in the form of IDisposable or native code ) and it doesn't particularly make the language any harder. The difference is, the language is less convoluted. That is the problem with C++, it's complex, incredibly complex, often on things that should be extremely simple.
#19 Members - Reputation: 289
Posted 02 December 2012 - 04:02 PM
The overall point is to not fret over the choice just pick something and learn core programming concepts. After that is done you can pick up any other language you want and become fluent enough to use it for a project in very little time. Mastering is another story but you will be able to use it.
As for my recommendations I would say either C or Python but that is because they are my favorite programming languages out of the dozens I have used.
#20 Members - Reputation: 1073
Posted 02 December 2012 - 06:16 PM
lol no no, what I'm saying is that just practice basic things about memory management, Its hard to see what is a reference, pointer or what is a value when the language actively tries to abstract you from those things. For example, its easy to do silly things in Java if you dont know well enough when you're using a reference and when you're using a value. Like writing Object tmpObjectCopy = tmpObject; thinking that you just made a copy of your object.I have to say you have that backwards.
Something without *HEAVY* ( if you consider C/C++ LIGHT memory management, what the hell is heavy? Assembly? )
On un-managed languages, the distinction between all those things is more clear. &tmpObject is a reference to tmpObject. End of story.
If you know about manual memory management, I can tell you "In java, objects are passed by reference, primitive types by value" and you'd get it perfectly. Now, if I tell a guy who just started in Java "In c++, you can pass parameters by value or reference, you can pass pointers too if you want" I dont think they'd get it just as easy.
As you said, basic memory management is not hard to understand. My point is that practicing it a little on an unmanaged language can be very benefical once you start with managed languages. It can make a lot of stuff you might encounter a lot clearer from the get go, regardless of their apparent abstraction.
Now, I consider learning both "worlds" important. If someone doesn't want to know about un-managed code, then learning about it probably wont be a pleasant experience for them.






