Jump to content

  • Log In with Google      Sign In   
  • Create Account

Best language to start programming in?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
43 replies to this topic

#1 dtg108   Members   -  Reputation: 394

Like
0Likes
Like

Posted 01 December 2012 - 09:08 PM

So, I find myself walking back to the beginners section of the site again. Anyway, hey guys. I'm making a game at the moment, and I'm the team leader/animator/writer. I have a question. I want to learn how to program (for gaming, and eventually, hopefully, I can build an engine.) I know I will have to start small, but I want a language I can stay with so I don't have to keep switching around. What is the best language for me to start? NOTE: I know absolutely NOTHING about programming. NOTHING. What is a good language to learn?
Thanks, guys.

Sponsor:

#2 thedude018   Members   -  Reputation: 100

Like
0Likes
Like

Posted 01 December 2012 - 09:21 PM

I'm not sure if i read that write, but did you say you were a programmer for a game? Anyway, i started with Java, it's simple, and more importantly, it's in everything. 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. Also, if your very ambitious, make a mod for minecraft and release it somewhere and most importantly ACCEPT CRITICISM because it will ultimately make you better, anyway, Good Luck!

#3 j-locke   Members   -  Reputation: 816

Like
5Likes
Like

Posted 01 December 2012 - 09:30 PM

I would say C#, Python and Java are all solid choices to get started with. I see you're using Unity on the game project you're working on. With that in mind, C# and Python (Boo takes a lot of syntax inspiration from Python) might top that list for you.

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 Khaiy   Crossbones+   -  Reputation: 1342

Like
2Likes
Like

Posted 01 December 2012 - 10:20 PM

Honestly, it doesn't really matter if you're starting from no experience. I like C#, very easy to pick up, others like Java and Python. All have a good selection of libraries that you can use to get to game-making (relatively) quickly. I personally recommend C# with SFML, but I hear great things about Python and PyGame.

No matter which language you pick, you won't have to do any switching around. You can make a game in any language.

#5 Álvaro   Crossbones+   -  Reputation: 13326

Like
1Likes
Like

Posted 02 December 2012 - 01:01 AM

You shouldn't be afraid to start with a language and then having to learn another one. Learning languages is easy: Learning programming, on the other hand, is pretty darn hard.

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 Celiasson   Members   -  Reputation: 502

Like
1Likes
Like

Posted 02 December 2012 - 03:49 AM

It depends on what kind of games you are set out to do. I like C++ and started without programming experience. On the other hand I study programming, but still ^^. C++ is one of the widely used programming languages when it comes to triple A games. On the other hand C, C# and C++ are quite similar and once you know one of them transitioning into another isn't hard.

I would recommend C++, good luck!

#7 Aldacron   GDNet+   -  Reputation: 3183

Like
3Likes
Like

Posted 02 December 2012 - 05:25 AM

I second the recommendation for C. I came to programming rather late at the age of 27 and the first language I started learning (on my own) was Java 1.1 back in '98. I thought I had grasped the concepts pretty well, but it wasn't until I started digging into C a few months later that I realized just how little I knew. I have still used Java off and on over the years, professionally and otherwise, but it does mask some fairly important concepts from you. Some of it is because of the way Java is designed, but it's also because of the wealth of classes in the standard library. No need to roll your own list when there's a perfectly good one sitting there in the utility package. In C, there's a great many things that you just have to do yourself (memory management) and others that it's usually just easier to do yourself (making lists). But most of all, I understood Java a helluva lot better after spending a few months with C.

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 Mizu   Members   -  Reputation: 1020

Like
1Likes
Like

Posted 02 December 2012 - 08:39 AM

C#, Java or Python. Do not go any deeper than that in the beginning. Both C and C++ has quirks that's too easy to run into, and both of those languages has a tendency to spit out cryptic error messages that might as well be some evil summoning spell for all a beginner knows.

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++

I want a language I can stay with so I don't have to keep switching around

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....

#9 rip-off   Moderators   -  Reputation: 8223

Like
5Likes
Like

Posted 02 December 2012 - 11:31 AM

There is no best language. Put the words "Python", "C#" and "Java" in a hat and pick one.

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.

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.

#10 Dwarf King   Crossbones+   -  Reputation: 1856

Like
3Likes
Like

Posted 02 December 2012 - 11:54 AM

Python is a great language to start out with. It let you focus on the concept behind programming and not too much on syntax issues(which is great in the beginning) while you learn how to think as a programmer. I always recommend this book: http://www.greenteapress.com/thinkpython/

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 Posted Image

"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 proanim   Members   -  Reputation: 440

Like
0Likes
Like

Posted 02 December 2012 - 01:18 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.

#12 Serapth   Crossbones+   -  Reputation: 5475

Like
4Likes
Like

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 Serapth   Crossbones+   -  Reputation: 5475

Like
2Likes
Like

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 et1337   Members   -  Reputation: 1531

Like
0Likes
Like

Posted 02 December 2012 - 01:53 PM

I recommend Unity! You can get a lot done without any programming at all, but once you learn some programming, it won't hold you back. It's very powerful. It also supports several different languages, so if you don't like one, you can easily switch.

#15 superman3275   Crossbones+   -  Reputation: 2011

Like
2Likes
Like

Posted 02 December 2012 - 02:04 PM

I suggest you start with Python, C#, or Java.

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.

I'm a game programmer and computer science ninja ph34r.png!

Here's my 2D RPG-Ish Platformer Programmed in Python + Pygame, with a Custom Level Editor and Rendering System!

 

Here's my Custom IDE / Debugger Programmed in Pure Python and Designed from the Ground Up for Programming Education!

Want to ask about Python, Flask, wxPython, Pygame, C++, HTML5, CSS3, Javascript, jQuery, C++, Vimscript, SFML 1.6 / 2.0, or anything else? Recruiting for a game development team and need a passionate programmer? Just want to talk about programming? Email me here:

hobohm.business@gmail.com

or Personal-Message me on here smile.png!


#16 TheChubu   Crossbones+   -  Reputation: 4354

Like
1Likes
Like

Posted 02 December 2012 - 03:08 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 AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

 

My journals: dustArtemis ECS framework and Making a Terrain Generator


#17 shadowisadog   Crossbones+   -  Reputation: 2524

Like
2Likes
Like

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 Serapth   Crossbones+   -  Reputation: 5475

Like
2Likes
Like

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 blewisjr   Members   -  Reputation: 622

Like
1Likes
Like

Posted 02 December 2012 - 04:02 PM

In reality it really does not matter what you choose as long as you stick to it. Every language out there has pro's and con's to it no matter what. They are all really great in their own way. For instance I love Python for it simple syntax and elegant readability. There are cases tho where it's whitespaced based syntax can become rather bad and make things harder to read. I love C for it's simplicity. The language itself is really tiney and easy to get grips with but because of this there is so much more you need to do on your own which will really teach you a lot of useful core algorithms. Ruby is awesome because of the strong meta programming facilites that let you pretty much turn any API into it's only little programming language but when abused like it has been there is really no reason to learn Ruby because every API creates it's own little world now adays.

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 TheChubu   Crossbones+   -  Reputation: 4354

Like
1Likes
Like

Posted 02 December 2012 - 06:16 PM

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? )

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.

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.

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

 

My journals: dustArtemis ECS framework and Making a Terrain Generator





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS