Good place to learn programming?

If you want to hear a weird story, click on the spoiler. Else, look below the spoiler.


So, if you know a programming language (C++,Java or Python) what is a good source to learn more of the language, beyond a "Beginning C++" book that you find at the library which is from 1999 or goes no farther than telling you how to write basic cin and cout programs?

Try Google. Seriously, they have miniature online courses in a variety of languages that range from an introduction and syntax lesson to fairly complex problems and functions.

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00-introduction-to-computer-science-and-programming-fall-2008/

Start off here, then when you've worked through that, go for a programming language with pointers (e.g. C) so that you know what's going on in memory terms. When it comes to C, there's one resource absolutely worth noting: The C Programming Language by Brian Kernighan and Dennis Ritchie, a book which absolutely does not dumb things down, and which teaches you about useful programs in the very first chapter. Once you've learned a few different programming paradigms properly and extensively, you can pick up other languages with few problems.

If you want to be a good programmer, you should never limit yourself to just one language. But you also need to learn a few languages to a relatively decent proficiency...it's a hard balance to strike.

Whatever you're doing, I'd strongly recommend buying "The C Programming Language", because it's the most beautiful technical manual ever written, and is incredibly easy to understand. Seeing as most things are derived from C these days, it's well worth a read.

Other than that, the best practice is doing. Buy textbooks if you're particularly interested in something (if it's just a passing interest you can afford to buy something out of date by 10 years if it's a general thing, such as algorithms). And always ask for help on friendly internet sites if something has genuinely got you stuck...chances are it's a silly mistake that someone else knows the answer to.

I never really stuck with it, I didn't have the determination but I did try to learn python a couple months back, I used this website:
http://learnpythonthehardway.org/book/

if you read the intro, the writer talks a lot about how there isn't any 'simple' way to learn anything as complex as programming, the lessons deal a lot with repetition which is important if you're going to remember what you're being taught. Python is also fairly easy to learn compared to C++ which is more strict about certain things.

the website takes you from 'Hello World' to starting a web game.

Depends on how you learn. If you can learn from books by all means get books, read them, and try out the things they show you. If you learn best in a structured environment, take classes.

There's really no substitute for doing it though, so no matter how you learn best, you'll need to make sure you take on projects that challenge you. Say to yourself, "I want to build a Word Processor," and then do it and look stuff up whenever you run into something you don't know how to do.

Thanks everyone.

RAKtheUndead:
snip

Esotera:
snip

I'm so happy to see OpenCourseWare and K&R mentioned more than once in just the first few posts. There's some great stuff on that site, and there's some really great stuff in that book. Not everything you learn about C that book will directly apply to using more modern higher level languages, but it's really nice to understand what's going on underneath some of the things that are usually managed for you now and why they work the way they do. When you know what's going on, you can find and fix problems more easily, and in some cases avoid doing stupid things in the first place. And then aside from just the intro course and the K&R book, there's a ton of other stuff on MIT's OpenCourseWare site that's worth checking out later if you're still interested (and on a ton of other subjects too; you could spend a long, long time on there).

http://www.codeproject.com/ is very good.

If you're really interested, take some classes.

If you're interested in programming as a career you need a degree in Computer Science to work as a programmer. It is very difficult to be hired as a programmer without one and the places that might hire someone without one are not exactly the type of place you'd want to work. Plus, you will learn a lot.

Of course your mileage may vary, this is just my experience working as a computer programmer.

nsqared:
Thanks everyone.

Posting again, but I thought that you might find graphics programming slightly more interesting than command-line stuff. If you do, then pygame has a load of tutorials that will get you started, and wxpython has an excellent tutorial for starting GUI programming. I've picked python examples because they're my main language, but these are just wrappers for C/C++ libraries, so you could easily find something similar in another language. And as always, just think of a few small ideas for things you wish your computer could do, roughly plan out how to do it, then do it.

first mathematics you don't need to know stuff lie Pythagoras but rather how mathematics works
second Programming for dummies to get the basic idea of programming down (it teaches BASIC a simple language but gives you the idea on how programming works.) and move up to simple guide books in the language you want to learn.

don't start hard with stuff like C/C# or C++ start easy like BASIC and move up.

also GET THE NEWEST EDITION! check the books for a publication date so you don't end up with a version from the early 2000,s

The internet is no longer just for porn.
It has learning now!
...
And porn.

These books are highly recommended by my lecturers at uni (Computer Systems Engineering)

Thinking in C++, Bruce Eckel.
An Introduction to Object-Oriented Programming, Timothy Budd.

I have certainly found them very helpful.

henritje:

don't start hard with stuff like C/C# or C++ start easy like BASIC and move up.

I'm going to have to disagree with this one. You can write basic programs in languages other than BASIC. It's best to pick a language you think you would actually use and learn that(and then learn other languages too). There are easy to follow tutorials for most languages(Working my way through Land of Lisp right now), so telling someone they should stick to BASIC is archaic advice.

Find a project / application at the edge of your skill level and code it.

I would learn to code for mobile devices (smart phones and tablets) or look at something like XNA for games (avoid BASIC, PASCAL ect they are dead languages).

You can get help at many forums, I think cprogramming.com is one of the best for help in C C++ and C# (and codeproject is a great resource).

http://cboard.cprogramming.com/

Scars Unseen:

henritje:

don't start hard with stuff like C/C# or C++ start easy like BASIC and move up.

I'm going to have to disagree with this one. You can write basic programs in languages other than BASIC. It's best to pick a language you think you would actually use and learn that(and then learn other languages too). There are easy to follow tutorials for most languages(Working my way through Land of Lisp right now), so telling someone they should stick to BASIC is archaic advice.

I,m not saying you should stick to BASIc but use it as a stepping stone to learn more complex languages.

nsqared:
If you want to hear a weird story, click on the spoiler. Else, look below the spoiler.


So, if you know a programming language (C++,Java or Python) what is a good source to learn more of the language, beyond a "Beginning C++" book that you find at the library which is from 1999 or goes no farther than telling you how to write basic cin and cout programs?

Stack Overflow are very good for support. If you want free things, try Google and the internet. If you want a dedicated book to go to then I strongly recommend this one.

It's also available in the UK site too. I have the book, and coming from a beginner, it takes you from the basics up to the more advanced things. It's strictly at your own pace.

henritje:

Scars Unseen:

henritje:

don't start hard with stuff like C/C# or C++ start easy like BASIC and move up.

I'm going to have to disagree with this one. You can write basic programs in languages other than BASIC. It's best to pick a language you think you would actually use and learn that(and then learn other languages too). There are easy to follow tutorials for most languages(Working my way through Land of Lisp right now), so telling someone they should stick to BASIC is archaic advice.

I,m not saying you should stick to BASIc but use it as a stepping stone to learn more complex languages.

I just don't think that is necessary advice these days. Learning BASIC won't teach you anything that you can't learn as easily in another language. What's more, BASIC is not a very good language at all to start with if your goal is to learn object oriented programming. Java would be a better starting point in that case(plus Java programming has the benefit of being a marketable skill). Now one thing that would be good advice for a programming newbie is to learn how to construct a basic algorithm. You don't even have to know a language to do that.

Scars Unseen:

henritje:

don't start hard with stuff like C/C# or C++ start easy like BASIC and move up.

I'm going to have to disagree with this one. You can write basic programs in languages other than BASIC. It's best to pick a language you think you would actually use and learn that(and then learn other languages too). There are easy to follow tutorials for most languages(Working my way through Land of Lisp right now), so telling someone they should stick to BASIC is archaic advice.

I disagree with that too. Better to stay away from BASIC, if you can.

Starting easy and moving up isn't really necessary or beneficial, and BASIC in particular has a lot of problems that can leave you with bad programming habits that you'd be better off without. I started off with C and never found it too challenging, whereas I had a friend who started off with Visual Basic (This was back in the day before C# even existed, and Python hadn't experienced its huge surge in popularity).

Every time he wanted to make the change to a more "serious" language, he never went all the way with it because he was so familiar with the easy way VB did things, and it became like a crutch for him.

Personally, I say C first, and there is a good reason for that. C is a simple, somewhat low-level language. In C, you have to manage memory manually. This will give you a good understanding of how addressing and memory management works behind the scenes, and also give you a greater appreciation for (and understanding of) languages that manage memory for you, via dynamic memory allocation, garbage collection, etc. If you start off with a language that has libraries built in with all the data structures and algorithms you could ever need, then you may never learn how all those things really work, or how they're implemented, or the advantages of one over another. If you pick up a good algorithms or data structures book and implement those things by hand in C, you'll understand them far better than someone who always relied on implementations that had already been supplied for him.

The simplicity of C makes it one of the best languages for learning the fundamentals, the basic principles that you could benefit you in any other language. Learning it early and learning it well will teach you to write tight, efficient code, and not to be lazy. Besides, it's the basis for a zillion other languages and is still probably the most common language used in embedded systems and hardware programming, so you might as well master it.

I'll echo everyone else's recommendation for K&R C, and say that if you're serious about learning programming, you should pick up Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein (sometimes just referred to as CLRS, or the big book of algorithms). It doesn't teach you any one programming language, but will teach you all about algorithms and data structures in a way that can be applied to pretty much any language. All of the code is provided as generic pseudocode. And it is very, very thorough. It's one of the books that EVERY programmer should have on his shelf.

Note that this isn't a casual book. It's relatively mathy.

Esotera:
I thought that you might find graphics programming slightly more interesting than command-line stuff. If you do, then pygame has a load of tutorials that will get you started, and wxpython has an excellent tutorial for starting GUI programming. I've picked python examples because they're my main language, but these are just wrappers for C/C++ libraries, so you could easily find something similar in another language. And as always, just think of a few small ideas for things you wish your computer could do, roughly plan out how to do it, then do it.

And that's where I get stuck. I've tried some different tutorials relating to OpenGL for C++ and Java, and also developed a great amount of stuff for <canvas> with JavaScript. I've always found that because of how I learned the language, especially C++, I cannot understand the tutorials, because I don't get what they are doing.

 

Reply to Thread

Log in or Register to Comment
Have an account? Login below:
With Facebook:Login With Facebook
or
Username:  
Password:  
  
Not registered? To sign up for an account with The Escapist:
Register With Facebook
Register With Facebook
or
Registered for a free account here