Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am 12 years old and have mastered the basics of Python with Learn Python The Hard Way by Zed Shaw (I think) and it has done me well. What should I do next? Do you have any recommended books or good website tutorials? What do you need to know before learning C?

share|improve this question
4  
why do you think you should learn C ? –  Davide Piras Nov 24 '11 at 15:59
    
I'd suggest Ruby. While it's quite different from Python, they both share a lot of similarities (at least on a conceptual level), so migrating should be relatively easy. –  Oliver Weiler Nov 24 '11 at 16:04
5  
have mastered the basics of python. What should I do next?. You should go beyond the basics, to intermediate and then, to go advanced with python (at this point you will need to learn C). Don't rush into things or you will get different concepts confused if you haven't let the concepts settle for a proper understanding. –  JohnDoDo Nov 24 '11 at 16:07
1  
@Mark Booth: Lets give the kid a chance. He'll have plenty of time to get shut down when he grows up, goes professional and encounters "bosses" :-) –  JohnDoDo Nov 24 '11 at 16:13
1  
Yeah, besides that he's more likely to get good suggestions here than in some crappy programming web forum which will probably suggest him to learn a BASIC language or PHP. –  ThiefMaster Nov 24 '11 at 16:15
show 6 more comments

migrated from stackoverflow.com Nov 24 '11 at 15:59

This question came from our site for professional and enthusiast programmers.

closed as off topic by FrustratedWithFormsDesigner, Morons, Jonas, Anna Lear Nov 24 '11 at 16:20

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

2 Answers

up vote 11 down vote accepted

If you want to learn C (which is a good thing IMO - you learn quite much about memory management etc.), have a look at http://c.learncodethehardway.org/ - it's much better than those "hey, you never programmed but i'll teach you $language" tutorials. If you have some knowledge, start a small project you can practice on. For me it was writing an IRC bot from scratch and modifying irc services (srvx). The existing codebase of the latter made it rather easy to get started (IMO the first days/weeks of a project are the hardest and most annoying), in the from-scratch project I then implemented algorithms/data structures known from the other project on my own, improving my knowledge of them.

However, I'd suggest you to improve your Python knowledge - while having knowledge of many languages is useful, mastering a language will allow you to write better and more complex programs and in the future long-term experience with a language will most likely be useful in job applications.

Depending on what you do with Python, you might want to get started with web development - obviously with a python backend. That means learning HTML5 (stay away from w3schools.com and WYSIWYG editors!) and modern JavaScript (If a tutorial still handles netscape, it is not "modern". If a tutorial passes a string to setTimeout, it is simply bad. Having a look at jQuery is also a good thing - jQuery-based code has good chances to use modern techniques).

While very common I really suggest you to stay away from PHP! The majority of examples and tutorials about it is extremely low-quality and with PHP you risk getting used to really bad coding practices!

In case you consider learning Java (you did not mention it in the question but in the tags): If you plan studying computer science in the future chances are good that you'll have to use it at university. However, with good programming skills - which you are likely to get if you started programming at such a young age and continue with it - it will be easy to get into so I would certainly stay away from it right now. If you want to work with a high-level compiled language, better learn C#. It is similar but has lots of syntactic sugar, i.e. language elements that make the developer's life easier, and with Visual C# Express Edition Microsoft has a very good, yet free, IDE available. If you feed google with "C# for kids" you even find some books about it targeted at a young audience - depending on your knowledge they might be way too basic for you though.

Most important, however, is that you shouldn't become a pure geek/nerd at this age. Don't forget there's a real life, too. Computers and especially programming are awesome, but hanging out with friends is nice, too.

share|improve this answer
6  
+1 for "I really suggest you to stay away from PHP" :-) –  JohnDoDo Nov 24 '11 at 16:09
    
Haha yeah, I worked with PHP long enough - after discovering python I hate using it.. unfortunately I have still a rather big legacy project written in PHP. But for a new project? Certainly not PHP if I can use python. –  ThiefMaster Nov 24 '11 at 16:10
    
Hi, I have gone through LPTHW and on the website (learncodethehardway.org) it shows Python then Ruby then C. I am off for thanksgiving break and want to do something productive. Should I learn Ruby or C? –  Shameer Nov 24 '11 at 16:25
    
@Shameer: Why are in such a hurry to learn C? How much time did you invest in learning Python? –  JohnDoDo Nov 24 '11 at 16:52
    
@Shameer: It's not meant in order, it's just a bunch of languages. For example, while you work with Python you might need regexes and/or SQL but for neither of them it helps much to have python or ruby knowledge. –  ThiefMaster Nov 24 '11 at 21:01
show 1 more comment

The most useful thing to learn is different algorithms and how different languages work. Then you can turn your hand to any language. It is quite likely to by the time you are working full time, you could be programming a language which doesn't exist yet. I have been programming Java for 12 years. It didn't exist until 10 years after I started programming.

share|improve this answer
    
I think it's extremely easy to get bored/annoyed when not programming "stuff that does something" but just "boring" algorithms. –  ThiefMaster Nov 24 '11 at 21:02
    
@ThiefMaster, You are quite right that there is a small set of useful algorithms you actually need to know (which I find more interesting) Most algorithms are interesting to those who like solving mathematical puzzles, but not for everyone. –  Peter Lawrey Nov 25 '11 at 7:59
    
I'd say learning about data structures is more helpful anyway - and at least when learning C at some point you are likely to catch yourself implementing e.g. a linked list, tree, etc. But then you actually use it for something so it probably won't be as boring as just implementing it in the way you'd do it in a university homework assignment. –  ThiefMaster Nov 25 '11 at 8:07
    
I would call how you manage linked lists and trees algorithms, i.e. its the code rather than the data associated with it that is complicated. For me, data structures are interesting in terms of how you turn a requirement in to the fields which are needed. Perhaps my use of terminology is non-standard. ;) –  Peter Lawrey Nov 25 '11 at 8:12
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.