It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
So I would very much like to learn how to code, and so I'm wondering if anyone here has any experience with coding. My ultimate goal is to make a game like Nethack, it is my inspiration. I am considering between C++, Java, and Python, so what are your personal favorites? I don't know which to use.
Ah, a good opportunity to post this.

Now, be aware that coding software is different from coding language. The two things you need to program are a text editor and a compiler, with some libraries being also helpful. Then you can move to Integrated Development Environments (IDE) like Visual Studio or Eclipse, which do make your life a bit easier, but you will still need to understand the code you are writing.

Either way, Python is easier to start with, especially if you have absolutely no experience with programming, though C++ would be the one I'd advise trying to learn. An ASCII turn based game though should be doable in all of them though.
So, I really don't know how to get any of them. I am a total beginner. Any good starter tutorials, or intros to coding?
I'd go to the library and take out an intro to C++ book.

Easy to follow, right there in front of you as you go and structured like a text that will take you from the start as far as you want to go - plus never underestimate the value of being able to flip to an index. Also, if you rent the thing you have no investment up front if it turns out you don't want to put the time into learning to code.
avatar
advancedhero: So, I really don't know how to get any of them. I am a total beginner. Any good starter tutorials, or intros to coding?
An online tutorial for C++ can be found here, or here. There's also The C Programming Language book, which is considered the authoritative reference on C.

There should probably be quite a few tutorials for the other languages as well, but I can't say I've followed any of those. But do be aware that programming is a task that requires you to spend quite a bit of time learning. Don't hesitate to ask questions though, there do appear to be some quite knowledgeable people in these forums.
I started with QBASIC, currently doing most my work in C++ and C# and I'd recommend these 2 languages. Like JMich said, Python is a good place to start too. I also encourage all my students to learn assembly. Even though "nothing is being written in it anymore" it really does wonders to your skills and it helps a lot if you know how everything actually works behind the scenes.

Keep in mind there is no quick way of doing it. You will spend some time learning basics before you move to more complicated stuff. Depends on how good you're at it.

If you want to go directly to making games, without learning coding, maybe you can try something like Game Salad or Game Maker. It has simple drag and drop interface and supports scripting. However I strongly advice against it. I cry often when I see "codes" done by non-programmers in Game Maker. I strongly suggest you become at least a good programmer before making games.

As to where to learn it. Instead of online, try finding a real class. If I'm not mistaken, you're a student? See if your school offers anything. Any extra-curricular classes maybe? If not, look around where you live.
Udacity offers free introductory courses to both Python & Java.
Coursera has three free introductory courses to Python.
Thanks for all the help guys! :D
ive been told that coding is like magic
If you want to understand OO principles, i'd start with Java, most of the overloading is absent and the essence of the features are taught like inheritance and interfaces.

I hesitate to suggest C++, that's a confusing language that's ugly and highly repetitive.

D could be a good place to go, although the language is slowly evolving, from what it was when the book(s) were written (D1 & D2).

If you want to learn a simpler language without any polymorphism, or just to get your feet wet, C is pretty good. I hesitate to suggest basic (of any type), but it can work.

As for programming, your biggest obstacle isn't going to be understanding the language, rather the libraries you have access to.

Reminds me.... Watch the C1-C3 classes with Richard Buckland, he goes over programming theory, algorithms, some C (i think in C1),

CS1 CS2 CS3
Codecademy is a nice place to start learning Python, directly in your browser (among some other, mainly web related, languages).
Post edited November 06, 2014 by Maighstir
avatar
rtcvb32: As for programming, your biggest obstacle isn't going to be understanding the language, rather the libraries you have access to.
Personally, I would add Rule #2: Practice practice practice.
Don't get too hung up about choosing the right language; It's not a lifelong commitment, and each one you learn is easier than the last.

Something that makes a huge difference to your enjoyment of programming is finding a good text editor.
avatar
JMich: Ah, a good opportunity to post this.
That is surprisingly accurate.
avatar
Dalswyn: Personally, I would add Rule #2: Practice practice practice.
Yes practice is important... But you have to try and not get stuck into a premature-optimization mindset like i got before. And good coding ethics, namely the structure you put in place and good documentation.

I'd also like to add that the STL (Standard Template Library) for C++ is confusing as hell, i had to watch a very very long video as an overview of the STL and go through a book that actually described it's line of thinking as well as how it worked in order to actually use it. I hate it, so i don't use C++ if i can avoid it.

D templates on the other hand are a dream...
Post edited November 06, 2014 by rtcvb32
If you're new to the ideas and concepts of programming check out Learn Python The Hard Way:
http://learnpythonthehardway.org

I would not recommend Python for making full applications, it's a scripting language, but for getting your feet wet it's good.

When you understand the concepts you can move on to a real programming language, like C. You can also learn C the Hard Way:
http://c.learncodethehardway.org/book/

One advice the author is giving and which i fully agree is to stay away from IDEs (integrated development environments). using an IDE will teach you how to use that particular IDE, but not how the language works. A language is much more than just its syntax, i.e. how the code is written, but also how it works under the hood.

With C you will be perfectly equipped to go ahead and start making working applications, or go and learn another programming language. Most of the mainstream languages have their syntax based on C, so you'll feel at home everywhere.

As for software, for starters you'll want an editor, a compiler and Make (for C). You can use any plain-text editor, but there are also editors specifically for programmers, some commercial, some fee. There are also special high-performance editors like Vim or Emacs, which are the ultimate tools, but you should not get too concerned with them, your first priority is getting code out. Just pick an editor that feels good to you.

As for compilers, the cool kids these days use Clang (a front-end for LLVM), but there is also GCC (Gnu Compiler Collection). It doesn't matter for beginners, and as long as you stick to language standards your code will compile on any of them.

Finally, get Make. There are various variants of Make and it doesn't really matter which one you used. I have GNU make because that's what was already on my system. Make allows you to specify which source files to compile, which compiler flags to pass and so on, instead of having to tell the compiler each time.
Post edited November 06, 2014 by HiPhish