I'm learning the basics of programming and I've bounced back and forth between various languages. Is there one truly useful source that you found especially helpful in learning programming (whatever the language)?
If there's one thing I've learned, it's: There's no One, True Resource.
For me the best books that have helped with programming weren't necessarily programming books. Books on Formal Logic and discrete Mathematics have helped as much as books Learning [Insert Your Favorite Programming Language here].
In all honesty, it took 4 years of college with a varying number of courses for me to 'learn' programming.
It then took me falling on my face quite a few times (I still fall on my face daily, if not hourly) to 'get' programming. The more I think I've learned, the more I know I don't know.
There is no one resource that can possibly teach programming. There's just too much to go through to really understand what's happening and why it's happening.
A dictionary can teach you the English Language and Syntax; but you can't learn English with just a dictionary.
A knowledgeable friend. I am about in your shoes, learning the basics of programming. Books and tutorials are great, but invariably you will run into something that you just need to ask someone a question about. Having someone friendly to ask has helped me learn programming, but also all of that background knowledge that so many people assume you automatically know.
.NET, SQL, networking, IDEs, tons of things in addition to actual language help have all been demystified for me by friends. I also second Gortok's comment about English. The best way to learn is to do it, so find a project or an idea that you are passionate about and try to make it reality. You learn more by running into problems during development than by reading.
So I have this same issue. My solution. Is to just sit down and do it.
I have a white board (a sheet of paper and some sticky tack would also work) where I have written on it a list of goals to learn C:
- Read & do exercises of K&R.
- Small Multi-Threaded static web server.
- Simple Chat server.
- IRC Bot
- Game of Life Clone.
- Simple patches offered.
So I have my goals. Now I just need to make sure I work on it each day.
I'm going the Seinfeld Calendar route. Printed out a calendar of the year. Every day I spend a half hour/complete an exercise out of the Book I cross off that day. I'm currently at 3 weeks straight and have completed half of K&R. This isn't the greatest record but compared to where I was previously its great.
My other piece of advice is pick a language. Figure out what you want to do, embedded, low level, web sites, scripting. Pick a relevant language and just go for it. Ignore all the foo is a good language, bar is a bad language and just program.
I would say that I never saw single place where you can learn entire programming language. For myself , the best way to learn language was to pick up a good book, chose project for myself , decide on deadlines, and learn as I go with the project. That's what works for me.
Different people learn differently. While you're learning to program, be sure also to learn some things about yourself. In particular, learn how you learn best (and worst!)
I bought the book Code Complete --> http://www.cc2e.com/ . Its really helpfull regardless of what programming language you choose. It focuses on good programming style and really helps you see how many problems can be solved and how to do good programming.
I would recommend this book if your new to programming, and even intermediate programmer.
Although your question is quite general, I would like to recommend the following book about basic programming skills:
The Practice of programming by the well-known UNIX gurus, Kernighan & Pike.
I have found that the classic Structure and Interpretation of Computer Programs video lectures are a gold mine for learning the basic, yet critical programming skill of thinking in abstractions.
You can download the lectures here.