I'm one of those people who is forever dabbling in tasks but I never see them to completion. I've always wanted to learn to program, especially in C++, the only way I've ever tried is via books but I often get a few chapters in and then forget about it and move to something else. This winter I have a lot of free time and I think it's time I sat myself down and got educated but I don't know how to do it effectively. I know that this forum has many talented coders and I'd love to know how they got started with it and what they would recommend as a beginning point.
Well, I voted a good, thick text book, but really it was a combination of things. I tried some of the samples in the Spectrum manual, but didn't really understand them. Mind you, I must have only been 6 or 7! A year or two later, I got hold of one of those adventure game programming books - it was by someone like Usbourne I think. They're actually pretty thin books, so I guess I learnt from a thin book ;-) I got various other Spectrum books and magazines over the years which taught me BASIC and machine code. Other implementations I came across (RM BASIC, BBC BASIC) I learnt through trial and error, typing HELP or finding the manual. Then I dabbled in other programming languages at school, mostly just for fun, such as Logo and some weird LEGO programming thing! I also bought a book on Pascal and dabbled with that for a bit. When it came to programming for Windows, I learnt Visual Basic on my own, through a mixture of books and online resources. I did the same for web stuff such as HTML, CSS, JavaScript and PHP. I then studied vb.NET in college. There are some good tutorials out there online, and you certainly could learn from them, but to be honest, I prefer a good book. The problem for me is that you go over basic stuff that you know, which gets boring. I tend to want to skim over it. If you do, you can easily miss something and have problems later. My advice... get a good book. Go to a bookstore and take a look at the books - some good titles are the Dummies ones or the SAMS ones, and MS official books are good. Have a quick look and see which one has a style you like. And try to stick to it! It doesn't matter if you cover it little by little, but I'd try to keep some structure... say a chapter a week. You could cram that into an evening, or do it bit by bit and review what you've learnt in that chapter at the weekend - maybe try doing something on your own with that new knowledge. Good luck!!
From a big book "Learn BASIC on the Vic 20", something like that. Taught me all the bad habits I'm still trying to lose today.
Actually, I should add - If you REALLY don't feel you can learn from a book, then online stuff isn't really going to help, either. You should try and find a night course in that case. I found mine pretty helpful - it forces you to go over the basics, but at the same time, you'll probably find that your tutor will let you go at your own speed. For me, I knew a lot and learnt quickly. My tutor was happy to let me get on with it and concentrate more on the slower learners, but when he came to me he'd set me more difficult challenges or go over some more advanced stuff with me. There are also distance learning courses if you feel like that - one example is ICS.
On my own, via textbook and WWW, but most importantly I also took classes which prompted me to actually do the examples. Hobby + classroom = win, but for me also = good years wasted being a nerd.
As someone who has taught programming in several languages, I have to ask the following: - Do you enjoy learning from books? [Yes = grab a book] - Do you enjoy researching problems on the web? [Yes = find an online course] - Do you enjoy tinkering with something until it is just right? [Yes = grab the online documentation and dive in] - Do you give up if something doesn't seem to work right? How soon do you give up (after a few minutes, hours, days)? [Yes = stop and reconsider what you actually want to do] - Do you need to work with others to finish a task, or are you generally self driven? [Yes = grab some friends and come up with a small project to work on] - Are you tech savvy? [No = stop and reconsider]
After reading your post, you sound like me. I don't like to read books (too slow and boring)... just do it. Make mistakes and learn what those mistakes are. Don't trust what other people tell you, learn for yourself. I remember very early on someone told me to use std::vector for any type of lists I have, unbeknown to me it reallocates memory like a beast if not used properly, I found I can make my own linked list which is very fast and takes up very little memory. Not the best example in the world, but you get the point. Jeff.
I only learned programming to tinker and facilitate myself at times, so I m in no way proficient. We also had structured coding classes (mandatory) at school so I got more into algorithms. Other than that, I m pretty bad at maths (mainly because I never do/did examples, I m lazy at doing homework) and in extent I never expect myself to excel in programming. That said, as a lawyer, I approach subjects on algorithmic principles (ie simple trees, or even sometimes just short-words in C syntax)
All excellent advice, thanks everyone. I think I may take the chapter a week approach and then test myself thoroughly at the end of each week. My main reason for wanting to learn is for game development, I'm always playing with various GUI based game creation software but I need programming skills to start some more advanced techniques. e.g I've been making a Sonic the Hedgehog game for many years now in 3dgamestudio, I have a basic movement and camera engine, countless models and levels but no real skill to tie it all together. If I could learn enough just to help me recognise the concepts within the example codes then I'd be all set.
That would be a coup if you made a 3D Sonic game and it was better than the recent Sega efforts... Don't read a chapter and test yourself. Type in some code and mess around with it. In my BASIC programming course back in 1981 or so you'd make a ball travel across the screen, then you'd make it bounce at the edges. Then make a sound when it hit the side, and just keep messing around. Might end up with a breakout game. Best way to learn is by doing.
I learned C++, BASIC, and game design here: http://nccamp.com/ I go to the one in [FONT=Verdana, Arial, sans-serif][FONT=verdana, arial, sans-serif][FONT=Verdana, Arial, Helvetica, sans-serif][SIZE=-1][SIZE=-1]Fairfield University every summer. Its about a 1 hour drive from here in Shelton If anyone goes there, let me know! Mabey we met [/SIZE][/FONT][/SIZE][/FONT][/FONT][FONT=Verdana, Arial, sans-serif][FONT=verdana, arial, sans-serif][FONT=Verdana, Arial, Helvetica, sans-serif][SIZE=-1][SIZE=-1] [/SIZE][/FONT][/SIZE][/FONT][/FONT]
Learned Java and Visual C in high school. Learned Java, C/C++, Assembly at Purdue In Operating systems course now...great course..