Slashdot Mirror


Ask Slashdot: Best Book For 11-Year-Old Who Wants To Teach Himself To Program?

New submitter waferthinmint asks "What is the best book for my son to use to teach himself to program? He wants to study on his own but everything seems to assume an instructor or a working theoretical knowledge. He's a bright kid but the right guide can make all the difference. Also, what language should he start with? When I was in HS, it was Basic or Pascal. Now, I guess, C? He has access to an Ubuntu box and an older MacBook Pro. Help me Slashdot; you're our only hope."

3 of 525 comments (clear)

  1. Normally C but... by danwesnor · · Score: 4, Insightful

    For an 11-year old who's learning, I can't imagine C is a good fit. He'll want to spend his time making working code and not chasing crashes. Something safer.

  2. Re:Python by jellomizer · · Score: 4, Insightful

    As a seasoned adult developer who learned to program as a kid.  There is just one word of advice. Just because you know the language it doesn't make you a writer.  While learning by yourself if actually very useful, don't mistake it from the structured stuff you get in college.  I spent a good part of college de-conditioning myself with my bad habits because they worked, and with the good habits learned there was much less funny acting code, and the code ran more reliability and was easier to change.

    When I entered college I know how to program in about 8 languages (before Google) myself, I was actually codding professionally before I left for college too.  And the skills I taught myself was valuable, and gave me a heads up in College as I wasn't fretting over the technical end, and I could put the rest of my focus on good form.
    I have seen some other kids wash out of the computer science program because they knew how to write code however their egos got in the way and they never wanted to unlearn their old ways.  They will still stick on the superiority of the GOTO statement.

    --
    If something is so important that you feel the need to post it on the internet... It probably isn't that important.
  3. Re:Python by Tassach · · Score: 5, Insightful

    Also being a 'seasoned' developer I'm wondering why not a 'real' language like C as opposed to scripting languages.

    Dynamic (scripting) languages are no less "real" than compiled languages. Both have their place, their strengths, and their weaknesses, which is something a "seasoned developer" should know.

    An instruction language should just get out of your way and let you concentrate on doing stuff and understanding the CONCEPTS, instead of concentrating on making the compiler/interpreter understand you or doing routine housekeeping (eg: memory management). This is true for real-world development, but is especially relevant when teaching someone how to program. For this reason, Python is an excellent choice as a first language -- even MIT uses Python as a teaching language. (I can't think of a better endorsement than that)

    The advantage that Python has over other dynamic languages (Perl, Ruby) is that it is designed for readability and clarity. Even as a die-hard Perl programmer, even I can admit that Python is an easier language to learn and explain, and is probably the first language I'll teach my children. Whether it's (IMHO) dumbed-down syntax is an advantage or a disadvantage for doing serious work is a subject of debate (if not holy wars).

    C is a wonderful language for a specific class of problem, but it has lots of problems that make it suboptimal (if not completely unsuitable) for other tasks. Knowing *when* to use C (and, more importantly, when *not* to use it) is as important as knowing *how* to use it, if not more so. It is not a good teaching language for a beginning programmer, any more than it is a good language for general application development. Someone who doesn't understand this has no business calling themselves a "seasoned developer".

    --
    Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?