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

×
avatar
HiPhish: 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.
Don't forget, almost all code is exported to C calling format usually unless it's OO (where there's hidden operators). This means if you make ANYTHING in C, you can run it just about anywhere, and anything exported as C can be run from anywhere.

There's also the lack of overhead like C++ from it's object creation/removal/initialization process, which is why the Linux Kernel was written in C; Linus gave his reasons and one of them was that with hundreds of calls to create objects might seem like a momentary blip for someone with a faster machine, or it could cause the system to pause for 15 seconds while it was working just from that overhead, while C doesn't have that.

But i'd rather not get into the short-comings of the C language...
avatar
HiPhish: I would not recommend Python for making full applications, it's a scripting language, but for getting your feet wet it's good.
It's quite a powerful one though.
http://www.pitivi.org/ - Pitivi, a powerful non-linear video editor, written in Python.
Whatever language you choose to go for I would recommend you get a introductory book for that language.

I am taking a course in C++ right now and would recommend "C++ Primer" by Stanley B. Lippman with others.

But for a complete beginner C++ might be a handful. I started with Python and then moved to Java. But I learned those from courses at my university so I am not sure how difficult it would be on your own.

If you wanna look into java then http://docs.oracle.com/javase/tutorial/java/ is a good source of information.

As HiPhish mentioned it might be a good idea to stay away from IDE's in the beginning. They do a lot of things for you but if you just start with some text editor and a compiler you will learn what actually happens, otherwise things might feel like magic.
I like C++ and Java, and found both pretty easy to teach myself. I'm currently learning Python (because Panda3D uses it) but can't say I like it much, it's a bit too free form and unstructured for me... Probably good to start off with though.

That being said this roguelike development library uses Python or C++, and while I've never used it it seems quite fully featured, and if that's what you're looking to do might be something to aim for once you've mastered the basics.

I thought myself mainly through tutorials online, but I did buy a C++ book years ago when I first got started (Sams Teach Yourself C++ in 21 Days, I believe it was called) which was good for getting a good grounding in the basics.

One resource which I thoroughly recommend is stackoverflow, practically any programming question I've ever had I've found the answer on there.

Good luck!

Edit: Oh, and as for IDE's I'd highly recommend Eclipse if it is available for whatever language/languages you choose to pursue (and it is available for C++, Java and Python as I use it for all of them)
Post edited November 06, 2014 by adaliabooks
Most people have said the best so I'll just add this: Python is a great place to start, firstly because it forces you to learn how to write relatively clean, readable code. Co-workers, if you're working professionally, will appreciate that, as will you if you walk away from your code long enough to forget it. It's a good habit to build.

Second reason isn't so important, since you weren't planning on doing this, but all the same. Python is easy enough to learn and is actually used in the real world as a scripting language and for rapid prototyping, unlike other "learning" languages that are only used for learning. When I was in high school we learned off a language that nearly choked to death when someone tried to make Snake. Making rudimentary games in Python, especially useful for rapid prototyping, is as easy as using PyGame. I love Python for rapid prototyping, if I've got a new idea I want to test, that's what I use.
Post edited November 06, 2014 by Blackdrazon
During my Java course in university we have been using NetBeans (they recommended Eclipse and IntelliJ too, even gave a key for the latter) but some here seem to advise against IDEs. Sublime looked like a good editor. I love the black background, I hate white so that will surely work for me. Are there any drawbacks without a paid evaluation with it?
Post edited November 06, 2014 by Nirth
I would advise against choosing C++ as your first language. C++ is a very big, complex language full of subtleties and unexpected behaviors. What's more, if you don't know C++ well, it appears to be simpler than it really is. It's easy to write code which looks correct and compiles successfully, but contains undefined behavior, subtle bugs or resource leaks. If you want to learn a general-purpose language, Java is probably a better choice. Java is a lot simpler, safer, has automatic memory management and comes with a huge standard library. If you don't need a full general-purpose language, Python is a great starting point too. It's easy to pick up and quite expressive, letting you do practical and useful stuff with very little code.
I'll support the idea of starting with Python. It's the most friendly language for starters and you can have access to lots of libraries, including graphics, sounds and everything you need to create games.
Many games have been created with Python or use Python in some way.

Udacity has a good introductory course to Computer Science using Python but it's not free anymore, so I'll recommend Codecademy too but the quality of their lessons is not consistent, so I'd recommend to follow another book/tutorial.
Go with Python, it is simple enough to learn and more than fast enough for Nethack type games. Some people say that scripting language are slow and they are right. But on modern computer they are faster than even pure machine language on computers lots of us older people started with. Those old computer still managed to run software as complex as flight simulators even if the resolution, number of colors, and frame rate were quite low. I recommend Learning Python from O'Reilly for a basic tutorial.

I do not recommend the site "Learning Python the hard way" even if I like their methodology, they are unfortunately still on version 2.x of the language when the latest is 3.x. There is no need to learn some things to just unlearn them almost immediately.

The most simple editor you have on whatever your OS is is good enough to start with, you do not need to learn to use an advanced text editor at the same time your learn programming. For reference my favorite programming text editor is VIM, its power comes at the cost of being complex to learn and easy to forget, using VIM is not like riding a bicycle, its more like flying a cutting edge advanced fighter jet. In any case, you'll probably graduate to using an IDE (Integrated Developer Environment) eventually and most only have basic editing functions anyway.
avatar
JMich: Ah, a good opportunity to post this.
avatar
Barefoot_Monkey: That is surprisingly accurate.
That was quite great, I was hoping to see a Ruby interpretation though.
While Python may be good for a first step (although as an experienced programmer I've actually found it hard to get into - particularly the OOP features seemed to be needlessly convoluted), I'd recommend C# as a second step. It's fast, powerful, and much simpler compared to C++. Also, say what you will about Microsoft, but Visual Studio C# is a pretty damn great IDE - and has a feature-full free version, too!

As for games, well, there's the Unity engine for which C# is the primary scripting language. I think you've heard of it :)
Python is commonly recommended as a first language due to its easier syntax, but my experience with it has been that everyone teaches it as a second language. Even the ones that pretend it's a first introduction. So either you get something so dumbed down that you will end up knowing as much as you did when you started or it's just going to be over your head from the get go. Python is easy, but the people who teach it make it complicated (or stupefy it). Pyscripter is an awesome IDE for it. https://code.google.com/p/pyscripter/

Java, as useful as it can be for someone with the patience for it, it's still one ugly and drawn out language. They made it with "how long can we keep people on 1 task? how many things can we make someone type just for 1 line of code?" in mind and wanted to keep people from being productive. The only thing I hate worse than Java is Eclipse. That thing is so disgustingly bloated and useless. I wish someone would come up with a real solution instead of tossing everything into that mountain of garbage. I don't mind suffering through the language but I can't stand Eclipse at all, while Netbeans just sucks. - But don't take my word for it. Try it and you'll see what I mean very soon after. :P

C++ is cool, as is C#. It's just that a lot of the people teaching it expect you to have an undergraduate background in mathematics, mathematical/computational logic, and computer science. Because you really need to know the intricacies of lambda expressions, how to calculate <insert your favorite equation series>, and other ramblings of bearded legends in order to just get through an introduction book on the language and make your crappy guess the number game. C languages suck in this regard even though in themselves they're very easy and intuitive. http://www.visualstudio.com/en-us/products/visual-studio-express-vs.aspx works just fine.

There are efforts to make the learning more fun and structured to practicality, but in the end it goes back to learning a syntax from unintuitive people. You'll have an easier time if you see it as you teaching yourself and not as if you're being taught. Because of all of the different people/sites you'll be going through.

I'm sharing this instead of 'resources' because you get the usual "go to this site/Buy this book" from everyone else anyway as if that's the only thing you need to hear. People suck at pedagogy and relating advice between what we think is good with all that we know (e.g., programmer says a book on programming is good) and what a beginner knows and should read (ie, said book covers topics beginners won't understand). Then they blame you for this because it makes perfect sense to them.

Not every book is going to be good, not every course or website will help you, and people aren't going to be interested in answering your questions. Some try leading you on through premises you never understood to begin with and pretend that you learned something new on your own. I had a programming course that did exactly that, and even after I failed one of the assignments they would not help me until eventually one gave me that info that I needed to solve the project on my own. He thought he gave up and was giving me the answer when I still had to figure how to work it out. People like that are the reason I make it clear - assume people are out of touch with you and your level always.

So when you run into that wall this is what's actually happening. The correct/appropriate advancement for you is only slightly above your comfort zone (challenging you to new things), not way above it. And keep track of the topics you learn. Write them down or something. Then you can practice them from memory (to keep it sharp/discovery) and find new ones more easily (not on list? awesome!) and gauge where you're at when searching for information regardless of which site/video/book you're using without having to go through a topic again.

It's not easy advancing from noob status. But use your interest and energy as momentum and you can work your way through it. It is work, but you already know the payoff is worth it. Some words of encouragement from Fort Minor:

This is ten percent luck, twenty percent skill
Fifteen percent concentrated power of will
Five percent pleasure, fifty percent pain
And a hundred percent reason to remember the name
Post edited November 06, 2014 by MaximumBunny
avatar
JMich: There's also The C Programming Language book, which is considered the authoritative reference on C.
<gasp>

Stroustrup is no longer the definitive C? Another reminder of how old I am. Thanks, JMich! =)
RPG Maker.

It doesn't get anymore noob friendly than RPG Maker.
Post edited November 06, 2014 by
avatar
JMich: There's also The C Programming Language book, which is considered the authoritative reference on C.
avatar
OneFiercePuppy: <gasp>

Stroustrup is no longer the definitive C? Another reminder of how old I am. Thanks, JMich! =)
Stroustrup is C++. JMich mentioned Kernighan & Ritchie's book "The C Programming Language", which is about C (not C++) and precedes Stroustrup's book "The C++ Programming Language".