Slashdot Mirror


How To Encourage a Young Teen To Learn Programming?

Anonymous Hacker writes "I'm in a bit of a bind. My young teenage son is starting to get curious about computers, and in particular, programming. Now, I'm a long time kernel hacker (Linux, BSD and UNIX). I have no trouble handling some of the more obscure things in the kernel. But teaching is not something that I'm good at, by any means. Heck, I can't even write useful documentation for non-techies. So my question is: what's the best way to encourage his curiosity and enable him to learn? Now, I know there are folks out there with far better experience in this area than myself. I'd really appreciate any wisdom you can offer. I'd also be especially interested in what younger people think, in particular those who are currently in college or high school. I've shown my son some of the basics of the shell, the filesystem, and even how to do a 'Hello World' program in C. Yet, I have to wonder if this is the really the right approach. This was great when I was first learning things. And it still is for kernel hacking, and other things. But I'm concerned whether this will bore him, now that there's so much more available and much of this world is oriented towards point-n-click. What's the best way to for a young teen to get started in exploring this wonderful world of computers and learning how to program? In a *NIX environment, preferably." Whether or not you have suggestions for generating interest or teaching methods, there was probably something that first piqued your curiosity. It seems like a lot of people get into programming by just wondering how something works or what they can make it do. So, what caught your eye?

1,095 comments

  1. Son? by Swizec · · Score: 0, Redundant

    I thought geeks didn't have sex ...

    1. Re:Son? by __aamdex1616 · · Score: 5, Funny

      I thought geeks didn't have sex ...

      Geeks clone themselves, it provides the same benefits without all the hassle with bodily fluids.

    2. Re:Son? by Anonymous Coward · · Score: 1, Funny

      Just because you're a loser doesn't mean we all are, I hate to tell you.

    3. Re:Son? by Darfeld · · Score: 4, Funny

      I know you're lying : you actually enjoy telling him.

      --
      (\__/) This is Lapinator
      (='.'=) copy it in your sig
      (")_(") so it can take over the world
    4. Re:Son? by pclinger · · Score: 5, Funny

      Geeks clone themselves, it provides the same benefits without all the hassle with women.

      It seems you made a mistake in your post, I've gone ahead and fixed it though.

      --
      /. editors made it impossible to link to file:///c:/con/con in my sig. Please just type it in
    5. Re:Son? by chris_sawtell · · Score: 0, Offtopic

      Geeks clone themselves, it provides the same benefits without all the hassle with women.

      To say nothing of viruses, bacteria, fungi, the odd crab, and menopausal psychosis.

    6. Re:Son? by Anonymous Coward · · Score: 1, Funny

      Yeah, especially if you're aware of this rusky plot to corrupt our precious bodily fluids!
      That's why I only drink rain water, and don't allow women my natural essence...

    7. Re:Son? by Sparky+McGruff · · Score: 1

      Nerdy women need lovin' too... Or so I've heard.

    8. Re:Son? by K.+S.+Kyosuke · · Score: 5, Funny

      More than half of the a woman's body is water. So without loss of generality, he could just have written "without all the hassle with opinionated bodily fluids".

      --
      Ezekiel 23:20
    9. Re:Son? by Savage-Rabbit · · Score: 4, Funny

      ...the hassle with women.

      It seems you made a mistake in your post, I've gone ahead and fixed it though.

      Why don't you two just stop complaining and fix the problem once and for all by writing a proper manpage on women?

      --
      Only to idiots, are orders laws.
      -- Henning von Tresckow
    10. Re:Son? by pyxl · · Score: 1

      Yeah, 'cuz the question is indeed about a budding programmer...

      --


      Given enough hydrogen, just about anything is possible.
    11. Re:Son? by smittyoneeach · · Score: 1

      M-x woman
      (goes after that man page like a pig at the troff)

      --
      Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
    12. Re:Son? by Anonymous Coward · · Score: 0

      Dont know. Some of us like a challenge so much we keep two women.

      Poly is not for the weak. It takes gargantuan effort to keep everyone happy and feeling loved. But as a MicroKernel programmer I enjoy the challenge.

      Posting anon because none of you out there needs to know... Plus RMS would be incredibly jealous.

    13. Re:Son? by spaced-cadet · · Score: 1

      Inferring that all geeks must be male is rather a large assumption.

    14. Re:Son? by maxume · · Score: 1

      Impossible. The documentation will only apply to a single instance and will forever be incomplete.

      --
      Nerd rage is the funniest rage.
    15. Re:Son? by PopeRatzo · · Score: 4, Funny

      Just show your son these comments. It'll convince him to learn to play the violin or become a social worker instead.

      Can he sing? Tell him to get three of his friends and start a boy band. Then you can retire and hack your kernel in style.

      --
      You are welcome on my lawn.
    16. Re:Son? by sjs132 · · Score: 4, Insightful

      There are girl geeks... Few, but some... So you can't assume your % of woman / water, it could have been % of male / water, etc..

      Off topic, but...

      One GG that I know, and is rather pleasant to view, decided the biological ticking was too loud. Having not found a suitable male after being hurt/rejected a few times, she decided to completely forgo the male part of the equation. A few Dr. visits, lots of $$ for fertility drugs, and some frozen sperm = twin babies on the way, no father needed.

      Now, in reality, a male was the initial donor of the frozen sperm, and I told her that she could of saved a lot of money by just going to a bar and drinking a lot of vodka, but she went on spouting about genetic core, family traits, selectability, et al...

      I almost wanted to point out the story of Dr. Jacobs who was convicted of fathering children with his own sperm instead of the donor sperm that was selected, but figured that would only cause too much angst.

      BTW, I guess this is becoming a trend among some women today, so the available men better figure things out soon, or the next generation will all be wearing "popsicle"(tm) T-shirts... (I'm out of the game, married with 2 kids myself, so don't blame me.)

      --
      --- Relax, that mass muderer is just trying to reduce our carbon footprint, one fetus at a time...
    17. Re:Son? by ShieldW0lf · · Score: 5, Informative

      I can't comment to a teenager, but I've been having success getting my 7 year old daughter interested in programming with Scratch. She's been using it to make movies and games. The thing that really captured her attention was that she could publish her work through Scratch and get positive feedback from the community on the Scratch website. The idea of building a fan base really appeals to her. I've also told her that if she develops the skills, when she's ready for her first job, we will give her part time work instead of her having to get a job in some fast food joint or convenience store, and that seems to have made an impression on her.

      Seems to me the best thing you can do to get your teenager involved in *nix programming is to get them involved in an online community that will give them some positive feedback and the possibility of celebrity, then show them some of the success stories out there that started in just that way. And, of course, let them know you're genuinely proud of them when they create something.

      --
      -1 Uncomfortable Truth
    18. Re:Son? by sgbett · · Score: 1

      Oh they dont need men at all if i recall correctly

      http://science.slashdot.org/article.pl?sid=08/02/02/0244213&from=rss

      --
      Invaders must die
    19. Re:Son? by zifferent · · Score: 1

      Like nobody would be able to figure out who the parent AC is. Holy-moley, can you leave any more clues?

      But I can imagine it would be difficult to keep more than one relationship going at once. Which is why I'm monogamous. Why people want to have more than one and spend the extra effort to keep them separate and secret borders on masochistic.

      As to open multi-homed relationships, you are correct sir. Not everyone is up for the challenge.

      --
      cat sig > /dev/null
    20. Re:Son? by K.+S.+Kyosuke · · Score: 1

      There are girl geeks... Few, but some... So you can't assume your % of woman / water, it could have been % of male / water, etc..

      Of course I know, I belong to the ranks of highly opinionated male bodily fluids as well! :-)

      --
      Ezekiel 23:20
    21. Re:Son? by Anonymous Coward · · Score: 0

      I thought geeks didn't have sex ...

      It's not amazing is that a geek had sex, it is amazing that a BSD kernel hacker had sex. I never knew there were chicks with such low self esteem out there.

    22. Re:Son? by The+Great+Pretender · · Score: 4, Funny

      If this thread can even touch on how to encourage a young teen to do anything, I'll be impressed and grateful. My current strategy is to let mine be and hope that when he screws up he doesn't die. If he can make it to the end of the adolescent years, with all limbs and senses, then he may be able to achieve something.

      --
      A positive attitude may not solve all your problems, but it will annoy enough people to make it worth the effort.
    23. Re:Son? by Anonymous Coward · · Score: 0

      I'm his mother, you insensitive clod!!!

    24. Re:Son? by Anonymous Coward · · Score: 0

      That's foolish - in (x) years time, when they perfect cloning humans using only machines, are you going to be telling us that this means we no longer need any humans?

    25. Re:Son? by TheGreatOrangePeel · · Score: 1

      If he can make it to the end of the adolescent years, with all limbs and senses, then he may be able to achieve something.

      ...declines obvious comments as to Stephen Hawking's contributions to science...

    26. Re:Son? by ScrewMaster · · Score: 1

      If this thread can even touch on how to encourage a young teen to do anything, I'll be impressed and grateful.

      Decide what it is you want him to do, then put a gun to the little bastard's head and make him.

      --
      The higher the technology, the sharper that two-edged sword.
    27. Re:Son? by rapierian · · Score: 2, Informative

      Along those lines I would point out that Smalltalk was designed to be easy for children as well, so you might want to take a look at http://www.squeak.org/ It's never too early to pick up good programming habits.

    28. Re:Son? by Bloodoflethe · · Score: 1

      Me - I think I could only handle one relationship - otherwise I don't feel I would do justice to the other person. I don't want to just "keep her happy and feeling loved" I want her to be the most important person in my life. I worked hard on making sure she was the best for me, I'll be damned if I show her that she isn't.

      Yeah, I know, totally OT, just struck a chord with me.

      --
      "Little is much when little you need."
    29. Re:Son? by ShieldW0lf · · Score: 1

      We tried that one too, and LOGO as well. I liked Squeak better actually, but my daughter preferred Scratch. Incidentally, Scratch runs well under WINE.

      --
      -1 Uncomfortable Truth
    30. Re:Son? by mweather · · Score: 2, Funny

      I fail to see how procreation without mean will make bugs squish themselves.

    31. Re:Son? by Deagol · · Score: 2, Interesting

      I have kids around the same age, and got them into the Alice environment for a while. It fell out of favor after a bit, but some of the concepts seemed to help later on when my son got a Lego Mindstorm set. My son is currently digging showing off pics of his lego creations on the lego community kids portal. He keeps bugging me for a "real" digital camera, as he has one of those cheap $15 deals from Wal Mart. I've been toying with getting him a better camera, registering a domain name for him, then teach him the basics of HTML and see what he does with it.

    32. Re:Son? by TheoMurpse · · Score: 2, Funny

      I started programming in BASIC when I was after my dad taught me
      1 CLS
      10 PRINT "My brother smells",
      20 GOTO 10

      I later improved after getting AOL in elementary school and picking apart Pong Kombat, a Pong-Mortal Kombat hybrid. I learned the fatalities by reading the source.

    33. Re:Son? by Turing+Machine · · Score: 1

      +1 on both Scratch and Alice.

      They're both a lot of fun for adults to play with, too, even those of us who already know how to program.

    34. Re:Son? by Rei · · Score: 1

      I like the idea of giving the child the incentive that if they learn well enough, they can work for you instead of at fast food ;)

      As for programming languages, I can see two potential routes for the OP's son to start out.

      1) Javascript. I assume he has a website of some kind or another, no? Basic Javascript could be a neat way to impress his friends -- buttons that run away from the cursor, interactive animation, etc. The payback period would be pretty quick. You could then help transition him to other languages via CGI.

      2) C/C++, but fast track it to OpenGL. Graphics is where a lot of the "fun" is for young programmers, and where they can impress their peers the easiest. Depending on his interests, you could help him out from there -- if he's more interested in how the engines work, help him learn to write his own 3d engine. If he just wants to write games, point him to Ogre or something of the sort. Might want to hook him up with Blender if he's going to be spending a lot of time working in 3D.

      Back in the day, I got my start in QBasic in middle school. I was really driven on by friendly competition with my friends. One would write a program that would make it "snow" one pixel snowflake at the time, my version would make it snow many flakes, and by the time the back and forth was done, there was a veritable blizzard of flakes blowing in the wind and accumulating into drifts at the bottom of the screen. Fractals, simple artificial life simulations, wireframe 3d and crude raycasting (the best we could pull off in QBasic ;) ), and so on -- we tried to outdo each other on it all. Also, using hex editors to tweak video games was kinda fun ;) With modern OSS games, you can do a heck of a lot more than just a hex editor!

      The only thing that could have helped accelerate my learning is if either my parents had gotten me more books or if we had had net access back then. For example, for my first couple 3d engines, I didn't know how to rotate a point in 3d. I did, however, know middle school-level geometry ;). So, I figured out that I could determine the angle to each point with arctangents, then I'd rotate that angle, and then I'd use sines and cosines to convert it back to 3d. Very slow, but it worked ;) Also, my parents were hesitant about letting me mess with hardware, which slowed down my learning of that aspect.

      --
      Why must all aquatic villains play the organ?
    35. Re:Son? by sgbett · · Score: 1

      I won't need to, the machines will do it for me!

      --
      Invaders must die
    36. Re:Son? by Thirdsin · · Score: 1

      when she's ready for her first job, we will give her part time work instead of her having to get a job in some fast food joint or convenience store

      "Back in the day" I started working for a fast food restaurant when i was old enough... If that wasn't sufficient motivation to obtain a quality education, I don't know what else in my life could have been.

      Give the kid the chance to find out what she "doesn't" want to do and programming might appear as a more attractive option ;-) As Oscar Wilde put it, "Experience is simply the name we give our mistakes."

      --
      No words of wisedom here.
    37. Re:Son? by Who235 · · Score: 2, Funny

      My dad always told me, "Women are like martinis for lunch. One is never enough, but two is just too goddamned many."

    38. Re:Son? by vrmlguy · · Score: 1

      Hey! I'm the web designer for the Yearning For Zion ranch, you insensitive clod!

      --
      Nothing for 6-digit uids?
    39. Re:Son? by kabz · · Score: 1

      I'll take your point on books and run with it.

      I remember when I was first interested in computers, I was happy just to have old BASIC programming manuals and such. Magazines, articles in New Scientist. Kids have a lot of energy. Let him harness some of that energy reading.

      If I could have seeded myself with some books, I would have left copies of SICP, K&R, a Turbo Pascal or Turbo C manual... What I did have was a copy of the DEC 2020 BASIC manual, Personal Computer World magazine, and Byte when I could afford it.

      Anyway, don't underestimate books as a vehicle for getting kids going down the right path with computers. I guess this extends to programming blogs too, but that's another post.

      --
      -- "It's not stalking if you're married!" My Wife.
    40. Re:Son? by sjs132 · · Score: 1

      Hmm... First, Easy to say as AC...

      Second, No she's not like that. Little bit of a partier and a happy soul, but still a geek. She had a few long term relationships, and things didn't work out. Decided that the long term goal was a family and decided she didn't need a reason to put it off anymore. So not really f*'d up, just realistic about age, etc... You've gotta realize that after a certain age, things are higher % for defects, etc...

      Anyways, this is more or less a post note so that I feel I've defended her in some sense.

      --
      --- Relax, that mass muderer is just trying to reduce our carbon footprint, one fetus at a time...
  2. No ShortCuts !!! by Axe4ever · · Score: 2

    Problem solving ability grows only by tackling small small challenges at first.Again, u build that ability by slowly advancing your level.Not to mention that, you have to burn out to really learn something. To write great code, you have to go through great code that others have written. In short,there are no shortcuts .

    1. Re:No ShortCuts !!! by h4rm0ny · · Score: 5, Insightful


      Perhaps, but there are many elements to programming some of which are perhaps easier to learn than others. Teaching his son to program may benefit from being able to distinguish these elements. My initial suggestion would be to give him Python because this will let him learn the critical elements of program structure and algorithms without getting bogged down in learning the idiosyncracies of a language like C++ (which I do love). For similar reasons, Python will also offer fast return on investment. He'll be churning out programs that do what he wants them to in half the time he would be in C++ or Java.

      Of course the most important thing is probably to let him drive the learning for the most part. If he's a bright and technically minded lad, he may appreciate the power and intricacies of C++. He'll need the language sooner or later if he gets involved in many of the big open source projects which would also be a great way to get involved. Things are usually more fun when done as part of a group.

      --

      Aide-toi, le Ciel t'aidera - Jeanne D'Arc.
    2. Re:No ShortCuts !!! by Swizec · · Score: 2

      Yep, if he doesn't have the drive to learn programming on his own he never will. I remember back in the day I used to go through Pascal's help index to find interesting new stuff to learn because what the teacher was teaching was simply way too slow and uninteresting for me.

      In the same light, perhaps you should try the observing approach. Give him a problem that will pique his interest and just observe. Don't meddle, don't teach, wait until he gets truly stuck.

    3. Re:No ShortCuts !!! by D'Sphitz · · Score: 5, Insightful

      Nobody starts out with kernel hacking. Kernel hacks are bragging rights for adult geeks, sweet myspace pages and guild websites are bragging rights for teenagers.

      Teach him some PHP and HTML, or if you're an elitist teach him Ruby, or if you're a sadist teach him Perl. Teach him some JavaScript and Flash and Photoshop, and then let him go do the things that will impress his friends and therefore hold his interest, like rickroll pages and guitar hero videos.

      If he's really into it the serious stuff will follow naturally in time, no point in intimidating him right off the bat.

    4. Re:No ShortCuts !!! by montyzooooma · · Score: 4, Insightful

      Yep, if he doesn't have the drive to learn programming on his own he never will.

      Is that really fair? When a lot of us started programming every home computer had a built in version of Basic (or Forth if you had a Jupiter Ace... you lonely lonely soul...) so jumping in wasn't too hard when the first thing you looked at after bootup was the Basic interpreter.

    5. Re:No ShortCuts !!! by Swizec · · Score: 4, Insightful

      For most people programming is a long road of breaking your head against a problem until it gets solved. Long hours spent tapping away at the keyboard and honestly "normal" people think we're all out of our minds.

      So no, if he doesn't have the drive to learn and problem solve he's better off outside playing with a ball ... or girls since he's a teen.

      I didn't mean that he's gonna have to learn programming himself, guidance is awesome to have, but the really good programmers out there are mostly self taught, people who were able to absorb knowledge wherever it came from, be it a peer, a book or an actual teacher. The ones who were "taught" programming are code monkeys with a very limited ability of actual programming, sure they can code, but they can't Code. If you catch my drift.

    6. Re:No ShortCuts !!! by hobbit · · Score: 5, Informative

      I'll feed the troll today.

      So he can learn how important white space is

      Indeed. Unlike most other programming languages, Python mandates readability, which is an excellent discipline for a youngster to learn.

      and write entire apps with a single line of code

      This is possible in most languages, but somewhat less likely in Python owing to the aforementioned discipline.

      and no idea how it happened

      This is impossible in most languages, and Python is no exception.

      and learn to program with no job prospects?

      You just keep telling yourself that; the world will change around you.

      I have nothing against Python

      In that case you need to brush up on your writing skills.

      but as a learning language I put it down there with Perl.

      A lot of people cut their teeth on Perl. I am not one of them, so I can't comment.

      --
      "Wise men talk because they have something to say; fools, because they have to say something" - Plato
    7. Re:No ShortCuts !!! by donaldm · · Score: 2, Insightful

      You are right there are no short-cuts although I would suggest he become familiar with the basics of using a *nix system such as how to use the command line and why this is still preferred for certain tasks. This is not to say that GUI should be disdained but you should be able to point out when a GUI is the best solution to a problem and also when the command line may be the better way to go.

      Now to programming. It is easier to explain the basics and it is very easy to show by example (keep it simple at first and let him get comfortable) if you use the shell (ie. bash, ksh or just sh - there are others but ksh/bash/sh are the most common) as a basic introduction to programming. You can later on get into languages like Perl and eventually C although I would recommend a formal course on the basics of programming before any he tries to learn a language that need to be compiled. As to more advanced languages it is very difficult to recommend one since the choice of a language should depend on what you as the programmer want to achieve, although as you probably know you may not have any choice in the matter.

      --
      There ain't no such thing as proprietary standards only proprietary formats. Standards are by definition open.
    8. Re:No ShortCuts !!! by jimicus · · Score: 3, Funny

      (or Forth if you had a Jupiter Ace... you lonely lonely soul...)

      I had a Jupiter Ace, you insensitive clod!

      (No kidding. I did. And a crappy little machine it was too. Think "ZX spectrum without the software library").

    9. Re:No ShortCuts !!! by Orkie · · Score: 4, Funny

      Nice way to write off everybody between the ages 13 and 19 there.

    10. Re:No ShortCuts !!! by bre_dnd · · Score: 1

      ZX spectrum without colour, either.

    11. Re:No ShortCuts !!! by bhima · · Score: 2, Interesting

      Back when I first learned PERL people were still using it as a Practical Extraction And Report language. A replacement for Sed & Awk. I was taking snippets of Perl from the web, futzing with them, and searching instrument logfiles and pushing the output to comma separated text files and then to excel. I don't remember if they were one line scripts but I do remember frequently using snippets that I wasn't really sure why or how they did what they did but only that I wanted the output they provided. Wow! I remember the first time I really had that going... it was like effing magic.

      --
      Nothing in the world is more dangerous than sincere ignorance and conscientious stupidity.
    12. Re:No ShortCuts !!! by Fred_A · · Score: 3, Funny

      So no, if he doesn't have the drive to learn and problem solve he's better off outside playing with a ball ... or girls since he's a teen.

      In that case just lock him in behind a card locked door with a blank card and a card writer. Leave the ball and girls outside and he'll learn eventually (you might want to prepare some flat food in case he doesn't figure stuff out fast enough).

      --

      May contain traces of nut.
      Made from the freshest electrons.
    13. Re:No ShortCuts !!! by badpazzword · · Score: 1

      What about the twenteens, you insensitive clod!

      --
      When ideas fail, words become very handy.
    14. Re:No ShortCuts !!! by QuantumHobbit · · Score: 4, Interesting

      No job prospects?

      At his son's age I learned to program in Pascal and was grateful for the privilege. I even had to compile in the snow uphill both ways. See if I put that on a resume.

      Python is a great language to learn on, and there are more and more serious projects that use it especially in the scientific community. If he enjoys python, he'll move on to more powerful and commonly used languages lick Java, C++, and how could I not mention Fortran. (Actually Fortran wouldn't be a bad language to learn on if he's a math nerd. I'm not entirely joking with that.)

    15. Re:No ShortCuts !!! by Tim+C · · Score: 5, Interesting

      For most people programming is a long road of breaking your head against a problem until it gets solved. Long hours spent tapping away at the keyboard and honestly "normal" people think we're all out of our minds.

      And then most of them go back to driving a truck, or waiting on tables, or shuffling paper, or laying bricks or whatever "normal" job it is that they do.

      Don't get me wrong, I'm not saying that there's anything wrong with any of those jobs, but let's face it - they're not exactly riveting, and yet we are the mad ones...

    16. Re:No ShortCuts !!! by Deanalator · · Score: 1

      I happen to be into math, so I started (real) programming when the dinky scripts on my ti86 weren't running fast enough.

      I also would chat online a lot, so I had fun writing IRC/AIM bots (most languages should have the appropriate bindings easy enough).

      I then started writing some basic network toys (sniffers/scanners etc) because I was getting interested in networking protocols (I was taking a Cisco networking class at the time).

      It all depends on what the kid is into. Also, programming bots for various online games is always a fun and practical way to start, and every kid loves web design.

    17. Re:No ShortCuts !!! by Lumpy · · Score: 1

      Wrong. when most of us old-farts grew up. you were FORCED to interact with basic. you had no OS, no way to use the pc as a appliance (Except atari and C64 and CoCo as they had cartridge slots and ran like a toaster) so you were forced to learn to type the commands to load the program. Also computer magazines back then had an IQ over 80 and actually had program listings as well as real info on how to program. Today's computer magazine cater to the "ohh shiney" crowd that does not want to learn, but drool on photos of new gear.

      Even the programming rags like Dr. Dobbs fail. They are so far out there that newbies dont have a chance. Hell I have been programming for 15 years and some articles in Dobbs are above my head.

      That's the difference. It's why in the 40's and 50's most everyone knew basic car maintenance. Why in the 60's and 70's most everyone knew something about fixing their radio and TV (replace the dead tubes) and now nobody knows anything and everything is throw away.

      --
      Do not look at laser with remaining good eye.
    18. Re:No ShortCuts !!! by Anonymous Coward · · Score: 1, Interesting

      You could try PHP/HTML and maybe get him to mess about with the Facebook platform a bit. It's not too hard to learn and at least that way he can share his creations with his friends. Being able to show off my programs to my peers was hard to do when I was a nerdy teen writing ugly ugly C on my amiga. Back then it was all about finding other people with amigas and swapping floppy disks like they did on The Flintstones.

    19. Re:No ShortCuts !!! by raddan · · Score: 0

      My thoughts exactly-- make it fun! This is what got me into programming when I was a kid. HTML, being purely declarative, is a nice introduction to the idea of putting together a structured document, and the results are immediate. You can have him work with the W3C validator open, and it will help him find his mistakes. Then, when he's comfortable, add a real programming language. I recommend something like PHP, which is simple and relatively uncomplicated. Javascript is rather unforgiving when it comes to things like infinite loops, and (no offense to hardcore Javascript people out there) the language is pretty weird (my curse-to-code ratio is pretty high here).

      When I was a kid, I learned BASIC and then moved on to C, but it was a HUGE leap to doing GUI programming for me, and I didn't really grasp that part until after college. Web technologies are, for the most part, quite simple, and people who know them well are in high demand. So unlike learning a minilanguage like the kind that comes with RoboWar, which is fun, but not very useful, web languages are a lifelong skill.

      The cool part is that you're a programmer, so if he has questions, he can ask an expert. I did not have access to this resource as a kid-- it made learning the stuff much harder. As a physicist, my father had some exposure to APL and Fortran, but he wasn't very good at translating that experience to C.

      Also-- I don't know if he's had exposure to algebra and geometry yet, but make sure he learns these-- they are essential to understanding the operation of modern applications. I haven't come across any higher math yet that hasn't benefitted my programming skills in some way (set theory probably being the #1 most useful subject to study).

      Most importantly, make sure you are excited. If he sees how cool you think it is, he'll be extra motivated to push through the hard parts, in part because he'll want to please you, but also, because he'll want to see what all the fuss is about. Programming is one of the more fulfilling aspects of my life, so obviously, conjuring up the enthusiasm for me is very easy.

    20. Re:No ShortCuts !!! by Anonymous Coward · · Score: 0

      But jumping in now isn't hard with the dominance of scripting languages. When I started programming in 1992, I started with the Terminate and Telemate scripting syntaxes. It wasn't easy, as a matter of fact I wish I had started out with C (a concept of datatypes would have helped a lot later on)...but eventually, I did move on to C.

      Today, I believe you'd be looking at PHP or Ruby or basic ASP as your equivalents.

    21. Re:No ShortCuts !!! by twistedsymphony · · Score: 4, Insightful

      For most people programming is a long road of breaking your head against a problem until it gets solved. Long hours spent tapping away at the keyboard and honestly "normal" people think we're all out of our minds. So no, if he doesn't have the drive to learn and problem solve he's better off outside playing with a ball ...

      I know at least for me the DRIVE comes from the desired destination... My advice for the fellow in TFA is to have his son pick a project. Start with something simple.. maybe it's just a slideshow or a tick-tak-toe game. Then start building it. Guide him a bit in the basics but encourage him to learn how to search for solutions that are beyond his knowledge. Once you have a basic program built start adding features.

      Maybe it's just because I'm partial to this but consider getting a few microcontrollers and teaching him to program on that platform. Writing something that interacts with a mouse keyboard and monitor on a computer is one thing... making something where you physically assemble the hardware as well is something else altogether. This will also test the waters in other tech areas... maybe he decides that he doesn't like programming but loves electronics, or maybe he like them both and wants to get into computer system or robotics.

      But seriously... just pick a goal, and work towards it... the best way to learn is though experience.

    22. Re:No ShortCuts !!! by eonlabs · · Score: 2, Insightful

      I can't vouch for python because I haven't learned it yet, but the gist of the parent is dead on.
      Show him a prototyping language. Something he can dev in quickly before diving into the deep and mucky bowels of pointers, references, mixed languages, and memory management. These things are not obvious to a novice programmer, and program flow is far more important to pick up early on than that.

      I KNOW I'm going to get flack for this, but many people I know who are excellent programmers cut their teeth on QBasic. This language was simple enough to pick up that you could really get coding some complex stuff in under an hour. I would recommend text parsing stuff as a first thing. "Can you pull the hours out of the time?" or "Can you print in words what the date is from the seconds since...". This can be extended to stuff like "calculate Fibonacci numbers" and then teaching how to clean that code up. This is a good time to teach stuff like "code first, optimize second" and how to time code for optimization.

      It's also a good time to get him into commenting the code. The way I usually get newbies started on that is to have them write pseudo code or explanatory text before coding, using the comments as a guideline to keep them on task.

      If I were to suggest an order of action, try variables & output, input, conditionals, loops, complex conditionals (switch/select statements), objects, collections (sorting searching and maybe memory management here). It's hard to do GUI stuff off the bat because for c/c++ there are so many different flavors available that you can't say "This is how this is done" and be done with it. What might be a good approach is to have him build a game. Start with a MUX and evolve it to a side scrolling platformer, and then to one with 3D graphics (can still be side scrolling, but this way it at least gets flashy).

      It's really important to show how to make a responsive program early on. It's a lot more interesting to work with something that can give you feedback in some way. Even a lexical parser could be fun. Find the verb in the input sentence.

      When you've done all that, try implementing low level c/c++ code like the String class or Vector class.

      Python might be a good way to go, if it really is just print "Hello World" and you're done.

      Don't forget:
      import antigravity

      PLAY

      --
      I wouldn't consider the mad hatter mad. Just reality impaired. He sure can make a mean cup of tea.
    23. Re:No ShortCuts !!! by Anonymous Coward · · Score: 0

      Better yet, give him a football and tell him to get off his lazy fat ass and go outside and enjoy life. Programming is for geeks and you will NEVER get anywhere in life programming. At best you'll get a horrible 8 to 5 job at some shitty software house writing business code for a living and take home your $45k-$75k a year. Be a football star and you will have fucking chicks on your dick every day of the week.

    24. Re:No ShortCuts !!! by Asgerix · · Score: 4, Funny

      I'll feed the troll today.

      Considering your nickname, I would have thought that you had learned to stay away from trolls - or would that be orcs?

      --
      Life is wet, then you dry.
    25. Re:No ShortCuts !!! by Anonymous Coward · · Score: 0

      I agree to this and wanted to tell you the same thing.

      Show him how to make some easy fun stuff with PHP that he can show off to his friends. (Yes, I know, repeating D'Sphitz.)

      One important thing that you'll have to tell him is that programming is going to be lots of reading and looking stuff up. Understanding what somebody else wrote and being able to recreate it. Also tell him that hacking and coding in general is nothing like in the movies. I laugh my ass off whenever I hear some smuck say "Sir! A hacker has breached our outer fire wall! He's going for level 2 security now!"

      The way I learned programming (I'm 21 now and I've been programming in school for a good 4 years now) is with the "Hello World!" thing. Although at the time I didn't understand why we used "Hello World!" and not something diffrent. From there on out, we saw harder stuff each class. First it was working with buttons and afterwards working with comboboxes and checkboxes. Then we moved from all code in one long stream to classes and functions. Etc. Etc.

      So all I can say is, start out small and increase the challenge each time a bit. Give him randon tasks to keep him occupied a bit and let him experiment with what he knows.

    26. Re:No ShortCuts !!! by Anonymous Coward · · Score: 0

      Do it the way my parents taught me, at gun point.

    27. Re:No ShortCuts !!! by SpinyNorman · · Score: 2, Interesting

      jumping in wasn't too hard when the first thing you looked at after bootup was the Basic interpreter.

      Get off my lawn you whippersnapper!

      I started with a NASCOM-1 1MHz 2K RAM (1K for you, 1K for the "monitor" program) Z80 kit in 1978. When I finished soldering it together the only thing I got after bootup was a prompt at which you could enter hex bytes (after you hand assembled your program on paper) to a chosen memory address.

      I'd actually consider this approach for someone learning about computers today. Buy an Apple II off eBay ($20 or so) and start programming in assembler. Write an interrupt driver serial driver or something that interacts directly with the hardware. There are too many kids nowadays who may know how to program in some modern scripting language, or maybe even in C/C++, but still don't really have an intimate knowledge of how computers work at the lowest level.

    28. Re:No ShortCuts !!! by baxissimo · · Score: 4, Interesting

      Agreed! I think graphics are a great way to get young folks interested in programming. They were the thing that captured my interest the most anyway. I can still remember trying to figure out some Apple BASIC code that made a little blip bounce around the screen back when I barely knew what a less than sign meant. But if making things move around on the screen doesn't motivate your kid, then find out what does. Other projects I remember working on early on were tools to make D&D characters, because I liked playing D&D but thought the process of re-rolling the dice a thousand times till I got the stats I wanted for a character was too laborious :-) Also my friends and I tried to create a computer version of the BattleTech board game. We had know idea what we were doing, and never got anything even close to playable, but I still learned a lot from it, and over the subsequent years as I learned knew tricks and techniques I always could recognize them as something useful, as something that would have helped us get over one hurdle or another I faced on those early projects.

      These days I think maybe young folks might be more motivated by web stuff that they can show their friends. Hey check out my web page! (Which would suggest javascript or java as the first language) We didn't have a modem till I was in high school so those things weren't really an option back when I was learning. It looks like a lot of kids are writing silly plugins for Firefox too.

      But still I think graphics is good, because before long you start to see that you need to learn some math to do more interesting things with it.

    29. Re:No ShortCuts !!! by Keeper+Of+Keys · · Score: 2, Insightful

      It was quite a bit faster, though. And you got to learn FORTH rather than bloody BASIC.

    30. Re:No ShortCuts !!! by IamTheRealMike · · Score: 3, Insightful

      That's not "writing them off", that's being realistic.

      When I was a teenager learning to program, I wanted to write video games. And I did. It was my first exposure to open source - a Delphi 3D MMORPG project. It was hopelessly over ambitious for our little team but it was fun, and taught me a hell of a lot about programming. And actually the maintainer/founder of that project went on to work for Ubisoft, so it worked out OK for him.

      Now the problem is that writing video games is actually pretty hard. Writing simple web apps is much easier. It also has the HUGE benefit that you can show your friends. I was very rarely able to show my friends what I'd written but when I did, it was a great feeling, because my friends intuitively understood that making a 3D world was hard.

      So I think writing web apps is not a bad place to start. The main problem is that web apps aren't video games, and all teenagers want to write video games. If our kernel hacker isn't too hung up on Freedom, I'd strongly recommend getting an Xbox360 and setting him up with the XNA framework. It's very much oriented towards hobbyist and beginner programmers.

      There are lots of tutorials, you write software in C# which is straightforward enough for novices but won't limit him, and the result can be uploaded to XBox Live or played when his friends come round. Importantly, it looks a whole lot more cool and professional (imho) if your work is running on a real games console.

      There is also a full, free 3D engine available (TorqueX) which can help him get started with writing simple 3D games without needing to master trigonometry and Direct3D. Back when I was doing this stuff, you had raw OpenGL or Crystal Space if you used C++ and were feeling brave.

    31. Re:No ShortCuts !!! by zappepcs · · Score: 1

      This is not so. The first question I asked about electronics was "How in the hell does a tv make a moving picture?" It took awhile to find out, but it was the first step.

      If your child has curiosity, and likes to solve puzzles, I can think of no better way to explain computers other than big complex puzzles, whose solution involves 100s of rules more complex than video games and yet more satisfying to play by at the end of the day.

      It is problem solving and puzzle solving that you want to teach your kid. It matters not what problems they decide they like to solve. H5N1 or AIDS are some of today's top puzzles. Along with 2nm IC circuit design and GigE bandwidth to the home on existing infrastructure or 100Mbyte wireless. How about desktop UIs that are more like SL than Windows. If you find some kind of puzzle the kid would like to solve, it's much easier to show him the way to do that. Hello world is not exciting unless you are trying not to pee yourself waiting for those first commands to complete successfully for your first time ever. Doing something cool on MySpace template? How about robot competitions? There is lots of coding and puzzle solving there.

      Good luck

    32. Re:No ShortCuts !!! by Anonymous Coward · · Score: 0

      I started with Logo at the age of eleven, hopped to Flash and haven't looked back. Flash is nice because you can program games quite easily that run everywhere, and they're not too difficult to show off to friends who don't program. I know there are a lot of Flash haters out there, but Flash Actionscript 3 is (imho) not a bad starting point for eventually learning C++. It's a strongly typed, OOP language and is far more mature than AS2/AS1. Plus you can program in it for free with Flex.

    33. Re:No ShortCuts !!! by geminidomino · · Score: 4, Funny

      If he enjoys python, he'll move on to more powerful and commonly used languages lick Java, C++, and how could I not mention Fortran.

      Note to submitter: If python leads to licking Java, just imagine what's next! It's a gateway drug, I tell you!

    34. Re:No ShortCuts !!! by dollargonzo · · Score: 1

      I will second the that; tick-tack-toe definitely brings back some good memories. It was the first project that truly got me stuck on a problem that I couldn't solve right away (the recursive minimax search part), but once I got it, I had way more drive and inspiration to program. Also, tick-tack-toe has a lot of simple parts that can get you warmed up to the more difficult crux of the problem and doesn't force you to deal with graphics and lots of other stuff that requires a lot of very specific knowledge about a particular system or API. I guess some people really like graphics programming, but I think there is a rather steep learning curve to the programming part, whereas game and game AI programming are direct implementations of the logic (at least if you keep it to the command line). Plus, if he's interested in graphics, after creating a command line tick-tack-toe program, he can make a GUI for it.

      I'm rather partial to that myself, but after that I dove head first into AI programming and never looked back.

      --
      BSD is for people who love UNIX. Linux is for those who hate Microsoft.
    35. Re:No ShortCuts !!! by hesaigo999ca · · Score: 1

      I think what he means is that what worked yesterday to get you interested , doesn't work on today's kids, they know already how to program a vcr at the age of 5 and my nephew played unreal tournament well enough at the age of 4 to play by himself, pop the disc in and know what buttons to push to get the desired reaction, where as today, he gets easily bored helping someone program their new cellphone.

      I am a developer and have noticed the trend coming from all this technology, is that the ADD laden generation needs to be stimulated in short doses until they develop their own interest or obsession, then it doesn't matter, they will do it all the time.

      So to answer the original post, I believe their are 2 types of computer geeks, hardware and software, find out which he really likes, and if software is really his thing (not yours being imposed on him) then take him to a cool convention (black hat) to see what cool gadgets are being programmed, then show him the ropes of being able to program a small add-on to lets say msn messenger or something that has a value to his friends or his current life.

      After that if he keeps on about doing something REALLY cool, show him the ropes with VS, that usually gets the juices flowin' and easy enough to learn without getting into assembler history lessons. VBS scripting or even dos is cool too....for script kiddies.

    36. Re:No ShortCuts !!! by multipartmixed · · Score: 1

      > when I barely knew what a less than sign meant

      That's funny, you just reminded me of programming a game on the Timex-Sinclair 1000 (Sinclair ZX81 w/ 2K RAM). The thing you moved around the screen was <*>. I thought it was duck-beak, star, backwards-duck-beak.

      --

      Do daemons dream of electric sleep()?
    37. Re:No ShortCuts !!! by Kiaser+Zohsay · · Score: 1

      The original question was:

      What's the best way to for a young teen to get started in exploring this wonderful world of computers and learning how to program?

      He's not looking for shortcuts, he's looking for a starting point. Back in the day, the starting point for me was an Apple ][ BASIC tutorial that animated a simple dot bouncing back and forth across the screen. Simple enough, but once I understood it, I could change it to do other things, move along the edges of the screen in a rectangle. That was the hook for me, being able to think of something original and then make the machine do it. Without that instant gratification early on, I don't know if I would stuck with it.

      The closest thing to Apple BASIC in terms of approachability these is probably Python. Visual BASIC is still a descendant of Apple BASIC, but you have to wade into Visual Studio before you can do anything with it (besides the whole not-UNIX thing).

      --
      I am not your blowing wind, I am the lightning.
    38. Re:No ShortCuts !!! by shock1970 · · Score: 1

      The best way for him to learn, as mentioned by Swizec, is for him to spend long hours behind the keyboard.

      Now... to motivate him to spend those hours behind the keyboard; ask him what interests him and find out what whets his appetite. Use this to present him with a problem in relationship to his interests. Ask him if solving this problem would be a worthwhile effort. And then just be there for him when he needs assistance.

      Now if he asks, how to do X, don't tell him how, but ask him the questions that will lead him to find the answers on his own. (I've learned this from my own mistakes!)

    39. Re:No ShortCuts !!! by Anonymous Coward · · Score: 0

      Yuh huh. Ageist some?

      I don't know about kernel hacking, but modifying hexadecimal 68020 machine language on the fly in the debugger to change the way my system worked... well that's kind of similarly arcane isn't it? Oh yeah and I was a teenager. Now I'm into designing sweet-looking web pages, fashion design and making hot porn in my thirties, as well as Perl etc blah etc. Oh and impressing friends, since I now have some. Sometimes it's only when you're really young that you bother putting in the hours on the brilliant arcane stuff.

    40. Re:No ShortCuts !!! by Hawkeye05 · · Score: 1

      Personally i learned to program in Python, it is like instant gratification. You can see and advance your work very quickly, and it lays a great foundation for the other top-level languages. It is today what BASIC was in the mid 80's.

      --
      Http://Stineomite.org (Yeah Thats Right I'm An Organization)
    41. Re:No ShortCuts !!! by somersault · · Score: 1

      My dad showed me how to do basic text input/output when I was about 8, but while I understood how to use variable to do basic stuff like say "what is your name?", "hello ", I didn't really get going properly until a few years later when I got a BASIC games programming book (Amos BASIC on the Amiga). I'd tried one of those point'n'click programming things before that where you just draw things and plug them into the game, but I didn't do much with it because I wanted to build my own games, not just copy others with different graphics.

      I started off writing lots of little random games, like catching fruit dropping from the ceiling in a basket, snowboarding (kind of the opposite of the fruit thing, stuff flowed up from the bottom and you had to avoid it, and my ultimate achievement was a 2D platformer thing where you controlled 2 'orbs' (saved on character animation :P I had an animation for when they died but not for walking around) who tried to jump on each other's head to kill each other (like Mario and Sonic). I wanted them to be able to react realistically so they accelerated when you held down a key (at first I didn't bother to put a limit on the maximum speed so you could reach some hilarious speeds), experimented with them bouncing off the sides, going through the sides and back onto the screen etc. I think it was my idea to have them bounce off each other, but my dad told me the way to get it physically accurate (basically if 2 balls of equal mass hit each other in a 1D plane they will just swap their velocities, so I swapped their speed on the X axis when they collided, it worked really well :D ). Then I did a high score system, which was a good way to learn about basic sorting algorithms. I just used bubble sort in the end.

      Around that time my dad showed me how to do a 'Moire' screensaver style app to get me familiar with arrays and loops. I think that kind of thing would be a good early project because it gets you familiar with graphics and loops, and has an impressive looking output.

      Another thing I enjoyed a lot and could be a very fun way to get into coding is to start coding up mods for a game he likes - especially if it involves creating doing AI work. AI is a *lot* of fun - it's great to be able to display a 2D image or 3D model on screen, but it's even more fun to see it moving around and reacting to an environment in an intelligent manner :)

      One thing about coding in basic is that it does a lot of the work for you (especially things like Amos BASIC which had built in graphical editors for creating sprites and animations to use in your app). I've still never actually written a Windows GUI based program in C (though I've done a DLL for LabVIEW, some basic command line apps, and some experimentation with OpenGL for 3D and 2D graphics - see NeonHelium for some great resources), though I'm sure I could if I needed to. I used to have the mentality that I'd have to write every program from the ground up, but these days there are so many libraries easily available on the net that you don't have to get down to the basics unless you want to. Things like writing a networked app used to seem really daunting to me, but these days writing something like a simple chat client can be done in a few lines of code.

      You can teach anyone the basics of how to code, but unless you find projects that they are personally interested in, they aren't going to really get into it. That's kind of stating the obvious, but I don't get all these people who are like "start them on language x/y/z so that they get to know control structures!". The language isn't so important as the actual project they are undertaking, though admittedly basic tends to be very basic. Most languages these days seem to use C style sytax though, so it could be best to start off on one of those so that it's easier to switch between different languages. I really wouldn't recommend starting on FORTRAN as someone suggested above!

      --
      which is totally what she said
    42. Re:No ShortCuts !!! by bre_dnd · · Score: 1

      It was fast, yes. And a fabulous FORTH, that was actually usable without disks. When I still had copious amounts of free time the Ace experience got me to port CamelForth to the GameBoy, oh joy. Forth is definitely a good / better start than Basic -- if only for the "down to the bare metal" feel of it.

    43. Re:No ShortCuts !!! by somersault · · Score: 1

      I used to type in code from the Commodore 100 manual to do basic stuff like draw triangles and circles when I was about 4 or 5 :p

      I generally agree with what you are saying, it sucks when people are just being consumers and don't actually know anything about the product that they are using, but the thing is that you can't be an expert on everything (well, unless you are one of those people that spends their whole life learning and none working). People like us are interested in how a computer or the software running on it works, but others just want to use the finished product.

      I was going to make excuses for why people don't need to know how to fix things, or how it's more complex these days to fix a car and requires specialist tools, but in essence you are right. People should have to learn basic car maintenance to get a license, and also pass some kind of test to be able to use a computer ;) We'd have a lot less trouble if any idiot couldn't just go out and connect to the intarwebs.

      --
      which is totally what she said
    44. Re:No ShortCuts !!! by Floritard · · Score: 4, Insightful

      I dunno though, do many teens even like 2D side-scrollers? He probably grew up on Playstation. I was going to say go ahead and get him going on some OpenGL. NeHe's tutorials really make it pretty easy to get into. Of course he's be using C++ so maybe something easier.

      Graphics is what got me interested in programming. I remember my high school Pascal classes. Unfortunately they were pretty boring. We did do some simple EGA graphics at one point but that was really the only interesting thing we did in class, though I did end up learning the fundamentals.

      Thing was, to do anything cool you had to do all this VGA initialization stuff that was forever out of our reach at that level. Not to mention the computers were pretty obsolete even at that point.

      I know there's a lot of (mostly unreasonable) hate around here for Flash, but I'd say get him into Actionscript3. It's really easy to do graphics in without having to setup windows and rendering contexts or getting to know huge APIs. It will introduce him to object oriented programming, but won't involve pointers or memory management or any of the more esoteric aspects of something like C++. Another thing is he can easily share whatever he produces with most anyone else who has a browser. If he is at all into social networking online (all that myspace bullshit) he can make some pretty interesting stuff for his friends' pages. Using Actionscript could also lead him to branching out into other web technologies, something probably more important in today's world than ever. It also has a similar syntax to Java or C++ if he wants to go in that direction. And as far as help and tutorials, there's really one of the richest communities around Flash, being a technology that was practically born in the middle of the blogging phenomenon.

      The best thing about Actionscript is how quickly you can put something visual together and how little setup it requires. Graphics is definitely the way to go, and nothing in programming has a more immediate "wow" factor than throwing something pretty up on the screen.

    45. Re:No ShortCuts !!! by information_retrieva · · Score: 1

      Yep, if he doesn't have the drive to learn programming on his own he never will.

      IF you are suggesting that the best way to teach a youngster to program is to stimulate his drive to learn, then I agree.

      About 15 years ago, I had the opportunity to teach programming at a summer camp. I had students from ages 8-15 in the same room. Playing off of each individual's particular interests was the only way to keep them going. It also helped when they found someone their own age with similar interests.

      My suggestion: consider your primary role as providing learning opportunities by following the students lead as to what they would see as an opportunity.

      Examples: I was having trouble getting one 8-year old girl interested in any of the things the other kids had latched onto. Then she asked if she could use the big kids computers. (she had an Apple II, the big kids were using PCs) I set her up with a word processor on the pc and let her write a letter to her parents, then I showed her how to print it. She was so excited, she went back to her computer and started trying to get it to do things.

      With the older kids, they all just wanted to play games all day. So I wrote a small stock market simulator for them to play, and when they go bored with it (didn't take long), I challenged them to modify it. I offered a few suggestions, and they ran with it.

      In both cases, once they were driving the process, it was easy to sneak some real skills in to their learning process.

      Good luck!

    46. Re:No ShortCuts !!! by D+Ninja · · Score: 1

      So no, if he doesn't have the drive to learn and problem solve he's better off outside playing with a ball ... or girls since he's a teen.

      Hmmm...yes. He is getting into programming, but he's not so far gone yet that this mysterious "girls" is totally out of his reach.

    47. Re:No ShortCuts !!! by SirLurksAlot · · Score: 1

      Don't get me wrong, I'm not saying that there's anything wrong with any of those jobs, but let's face it - they're not exactly riveting, and yet we are the mad ones...

      I understand what you're trying to say, but keep in mind that a lot of people don't do their jobs because they're looking for a challenge or because their jobs are all that interesting. Most folks work so they can provide for their families (or themselves as the case may be), and if they make enough to get by or maybe even get ahead they're mostly happy. Just as you said, there is absolutely nothing wrong with this, it's just the way a lot of people see work.

      I worked in retail for quite a long time before having the opportunity to work as a developer, and a great many of the people I worked with were satisfied with what they were doing. A number of them were very intelligent and had degrees in a variety of fields (I knew a guy who had an engineering degree who pushed carts and chucked mulch all day and wouldn't give it up for the world.) and when I asked them what in the world they were doing there the most common answer I got back was they enjoyed the work and didn't miss the stress.

      I guess the bottom line is to each his own, and for a lot of "us" that means doing something we find challenging.

      --
      God, schmod. I want my monkey man!
    48. Re:No ShortCuts !!! by chaim79 · · Score: 1

      I agree with using the Python language for a different reason.

      Python has a built-in interpreter so you can test out code pretty much as-you-type. It really makes things easy to figure out and learn when I can type something in, test it, type it in with a modification, test it, etc. until I get it the way I want it.

      Once he gets the hang of it, you can steer him towards creating new functionality for Python using C (which much of Python relies on). That will allow him to transition from OO language (Python) to a Non-OO Language (C) and use them together.

      --
      DEMETRIUS: Villain, what hast thou done?
      AARON: Villain, I have done thy mother.
      Shakespeare invents 'your mom'
    49. Re:No ShortCuts !!! by Orkie · · Score: 1

      Well I *am* a teenager, and I have both written video games and done some kernel hacking. As such, I do see it as writing off, and quite insulting to boot.

    50. Re:No ShortCuts !!! by LWATCDR · · Score: 1

      I would suggest Squeak.
      It is a great environment to learn programing in. If you want something a little more main stream then I would suggest the unpopular on Slashdot language of Java.
      To do anything graphical using Python you have to use some odd library that really isn't part of the language. Python is a great scripting language and I have seen some great graphical programs written in it but I question if it is a good choice to get a teen interested.
      Java isn't the terrible pig that everybody on slashdot makes it out to be. some of big advantages of Java for a beginner are.
      Great free tools. NetBeans and Eclipse.org are really nice IDEs.
      Great professionally written tutorials. Just do a Google on jlist tutorial or Swing tutorial and you will find a good comprehensive tutorial online.
      And Great online documentation.

      Add that Java is now well on it's way to being complete GPL and that it is available for many platforms and I think it really is a good choice.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    51. Re:No ShortCuts !!! by GeffDE · · Score: 1

      Something that only the parent has even mentioned about in this thread is "problem solving." Problem solving is the crux of programming, and focusing on giving him interesting challenges to solve (instead of on what language) will really get him hooked.

      I first "programmed" a TI-82 graphing calculator in middle school so that the calculator would basically do all the boring repetitive math assignments doled out like Oliver Twist's dinner. When I got to high school, I took intro computer science classes that were taught in C++. At university, low-level programming classes were taught with Java or Python. The only thing my programming education at various levels had in common was that there was a problem to solve.

      Teaching problem solving (regardless of what language it is in, or if it is even in a code language) is fundamental to teaching programming. The other aspect of programming that might interest a teenager is learning how a computer works and how the different parts fit together and integrate to do a job. Teaching him C would then help him understand how a computer works.

      --
      It has been a nervous year, with people beginning to feel like Christian Scientists with appendicitis.
    52. Re:No ShortCuts !!! by DahGhostfacedFiddlah · · Score: 1

      Absolutely - nothing gets a kid fired up like parsing text, or calculating Fibonacci numbers. </sarcasm>

      Seriously, great post, but my number one suggestion would be to let the kid decide what projects to take on. Show him the low-hanging fruit first, like keyboard input, text output, and drawing simple shapes on the screen, and let him come up with his own projects. For a beginner nowadays, Flash w/Actionscript might actually be the best choice, because of the instant gratification.

      I don't know if my experiences are typical, but at that age, I wanted to be able to do things quickly, and do them "my way".

      I wouldn't hand-hold too much either - let him make his mistakes. I think I appreciated the stately Array far better after writing a game with variables "item1", "item2" ... "item20", than I would have if someone had told me "just use this, it's easier".

    53. Re:No ShortCuts !!! by gfxguy · · Score: 2, Interesting

      I don't know about, but agree with the graphics aspect... I got into computing first because I was into games. I stayed with graphics all the way through and work for a post production company writing tools and utilities... not exactly graphics, but I do get to write plugins and scripts for Maya and other high end apps.

      Anyway, I was pretty much self-taught BASIC on my Atari, but BASIC was just too slow to do any cool graphics, so I started teaching myself assembly language.

      I don't advocate having a young person teach themselves assembly language, but it gave me the kind of knowledge about how computers really work, what's going on at that lowest level, how memory is used, what a stack is, pointers, everything... you don't have to become an ace assembly language programmer, but it's a great introduction to how things work at a really low level.

      By the time I was in college, I was writing graphics libraries in assembly language to use with Turbo-C++; I was writing that VGA setup code, I figured out how to do real memory mapped scrolling (and was even listed in the graphics FAQ for a time, along with my code).

      Now I don't touch assembly language anymore, but I think when someone understands everything that's going on, they can gain a much better grasp of what's going on - they understand memory management better, they understand the limitations of the machine, they can learn about cache... I really think the people I've known that had that low level experience actually learned how to structure high level code better.

      It can even go in parallel... here's the C++ code for "Hello World," and here's how you'd do it in assemble language.

      If they can grasp that, then explaining byte-code languages becomes even easier...

      I know a lot of people would think this is like learning how to build a car before learning how to drive one, but I don't think it's a good analogy; but it is true that in many places in the world, some basic maintenance skills and understanding of how the car works are crucial to getting a license to drive.

      When using the high level language and a library like OpenGL, it becomes important (IMO) for them to know what OpenGL is doing; it's important to know what different types of shading are, the difference between indexed and RGB (or other colorspaces), the basic algorithm for drawing a line (again, I implemented things like this in assembly because, at the time, computers were just too slow... not necessary now, but a grasp of the algorithm is beneficial, IMO), matrices and how to calculate rotations... if you understand what OpenGL is doing, it becomes a lot easier in the long run.

      --
      Stupid sexy Flanders.
    54. Re:No ShortCuts !!! by mikael · · Score: 1

      For most people programming is a long road of breaking your head against a problem until it gets solved. Long hours spent tapping away at the keyboard and honestly "normal" people think we're all out of our minds.

      I started learning BASIC programming at the same time as learning high-school mathematics and physics. It was fun being able to take the algorithm used to solve a particular problem (polynomials, combinations/permutations, projectiles/acceleration/velocity) and write a little program that would take in the parameters,calculate then display the results or draw a graph. Then the process was repeated using C and C++.

      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
    55. Re:No ShortCuts !!! by Nigel+Stepp · · Score: 1

      Careful now. If that's the hobbit it might be, and given the low uid it's quite possible, you should show some respect! :)

      --
      4096R/EF7BAFA6 79E1 DF98 D09D 898F 9A11 F6F0 DDDC 23FA EF7B AFA6
    56. Re:No ShortCuts !!! by FishWithAHammer · · Score: 1

      I like PHP and I think you're crazy. Start with relatively clean languages--these days I lean toward C# as a starting-language-of-choice due to its astonishingly clean design, but for those who have knee-jerk fears of Microsoft, Python's fine too--and then move to horrible Frankensteins like PHP later.

      --
      "You can either have software quality or you can have pointer arithmetic, but you cannot have both at the same time."
    57. Re:No ShortCuts !!! by snilloc · · Score: 1

      Could you suggest a good resource for learning Python? I tried some to teach myself with limited success. Most of the online resources start very very slow and then make some quantum leap that loses me. Necessity being the mother of invention, I've only managed to make a few quick scripts to generate some basic html that I needed for personal use. Which gui kit would you recommend?

    58. Re:No ShortCuts !!! by Culture20 · · Score: 3, Insightful

      driving a truck, or waiting on tables, or shuffling paper, or laying bricks [...] they're not exactly riveting

      Laying bricks is close (both construction), but nothing is as riveting as... riveting.

    59. Re:No ShortCuts !!! by h4rm0ny · · Score: 5, Insightful


      There's a lot of very good advice here, but the most important of all is to listen to your son closely to see what interests him. For me, prodding away, I had a fascination with memory storage. Arrays in particular stunned me with their beauty and the first programs that I really applied myself to writing were strategy games that were at heart nothing more than 2D arrays that stored types of units, resources etc. Of course the units themselves were arrays. I might have been an odd child, but the thought of all those numbers lined up and structured absolutely thrilled me. Who knows what will really grab your son's attention? Well, actually, only your son does, which is why he most of all, is the one you should listen to.

      You don't have to be a great teacher when the pupil is interested. Just try to learn to answer questions at the right sort of level of detail. That's 90% of it when you think about it, it really is.

      --

      Aide-toi, le Ciel t'aidera - Jeanne D'Arc.
    60. Re:No ShortCuts !!! by ottothecow · · Score: 1
      For me it was TI basic on a TI-83+ graphing calculator. It has a nice, functional language and can be used anywhere--like when bored in class (better he learns to program in a too-easy math class than absolutely nothing). It may help that I got the calculator before I got a link cable (so no easy loading of games from a computer) and I was on vacation for christmas. This made me go through the manual and I still remember following the instructions in the book to enter in the sierpinsky triangle program (as an aside, remembering the mess of a program this became was what made me admire the beauty of scheme the first time I saw a recursive object style implementation). There were probably some other good programs in the book along with great programming reference (and nowdays they have an App I think that gives you help/syntax for every function).

      The language is somewhat limited but there are some fun things you can do...here are some I tried:
      -Simple menu/input interaction: "Enter your name" "[name] SUCKS!" to simple menu driven adventures/stories (or you may remeber the DrugWars trading game...subject matter might not be appealing but it is a good example")
      -Input gathering: This is where you start to need to learn loops and conditionals. Once you can loop a getkey and respond to the arrow keys, it is trivial to make an X move around the screen with output(). From there you could make a tunnel sort of game (slow of course in basic and ugly compared to the ASM games but still fun to make). Due to the volatility of non-archive memory on these calculators, I reprogrammed little snippets like this quite often for different uses.
      -Display manipulation: My personal favorite program I ever wrote on the calculator (and rewrote as with above) was a text-enlarger. It would take two inputs, a string of up to 4 chars and then a single char (to be used as the "pixel" for the large word). The graph display would then have to be initialized and cleared (save the state of the functions but turn them off, turn off axis, etc) and then I would use the text function to write the word onto the screen (the text on the graph screen is smaller than the calculator screen). The pixel test function would then loop throug the rectangle containing those four letters and store the result (on/off) into a matrix. Upon completion, I would clear home and then use output to map the matrix to the text-grid of the home screen--printing the chosen character for every pixel that was on and a space for every pixel that was off, giving a word that takes up the whole screen. The idea wasn't mine but the implementation was all self-taught during some sort of class. Also on the topic of display manipulation, I always made a lot of little programs that made random writes to the graph screen sort of like a screen saver (random dots appearing, random lines being drawn, etc).

      It's not a perfect platform but it can be easily carried around and allow for quick programming (I even wrote programs in math class when it would be faster than doing repetetive work).

      --
      Bottles.
    61. Re:No ShortCuts !!! by Hawkeye05 · · Score: 1

      Well, i actually learned through school, i'm going to school for an A.A.S in Network Administration and one of the requirements was a fundamentals of programming class. I don't plan on becoming a programmer but its good to have a general skill set just in case you need to streamline something. I had experience with HTML from years before, and Bash scripting experience so the next logical step was python. I just use the IDLE interface and its quite simple and helpful, but for me at least the most help was in class with the theory behind it, the practice came quite easily.

      --
      Http://Stineomite.org (Yeah Thats Right I'm An Organization)
    62. Re:No ShortCuts !!! by bigstrat2003 · · Score: 1

      ...but in essence you are right. People should have to learn basic car maintenance to get a license, and also pass some kind of test to be able to use a computer ;).

      No, he isn't right. People shouldn't have to learn basic car maintenance to operate a car. You don't actually need to know how to change your oil to operate your car safely. With a computer, yes, people should be more educated about it (considering the stuff the average Joe does to their computer is a bit like me putting diesel in my gasoline car and wondering why it breaks), but again, should not be required to know how to fix it.

      It's just stupid to expect everyone to learn about everything that interacts with their life. I don't know the first thing about building a bridge, should I be expected to learn that before I drive over any more bridges?

      --
      "16MB (fuck off, MiB fascists)" - The Mighty Buzzard
    63. Re:No ShortCuts !!! by Anonymous Coward · · Score: 0

      As much as you might want it to be true, having a low UID on /. does NOT demand respect. But you might be referring to something else I am missing.

    64. Re:No ShortCuts !!! by warhammerkid · · Score: 1

      I agree with the parent. I started programming in Perl, solving little 30 minute problems from a local programming competition. Things like processing an input file for interesting data, writing algorithms for interesting math rules, and even implementing a game or two. The best thing a budding programmer can do is learn how to program. Whatever language they end up doing their programming in shouldn't matter, because once you know how to program, switching languages is easy. Personally, I would recommend Python as the best starting language because it's highly object-oriented, but if you know C/C++ teaching Perl might be easier.

    65. Re:No ShortCuts !!! by Anonymous Coward · · Score: 0

      And then most of them go back to driving a truck, or waiting on tables, or shuffling paper, or laying bricks or whatever "normal" job it is that they do.

      Managing a team of programmers?

    66. Re:No ShortCuts !!! by bigstrat2003 · · Score: 1

      You're taking it just a bit too personally. No one is saying teenagers can't program well. What we are saying is that complex projects like games or OS kernels are terrible for beginners. This dude needs to get into something more manageable first, and then into more complex things if he wants to. The only reason his dad should point him at really complex projects is if that's all he's interested in programming.

      --
      "16MB (fuck off, MiB fascists)" - The Mighty Buzzard
    67. Re:No ShortCuts !!! by MarkScott65 · · Score: 1

      Agreed, Python is the way to go for teenagers. The book Python for the Absolute Beginner is a great text to begin with.

    68. Re:No ShortCuts !!! by billcopc · · Score: 1

      That sounds a lot like my evolution, only I did a bit of sound processing/synthesis in parallel with game development. I was never much good at 3D math, so I did a crapload of 2D games with exotic sound engines and real-time music (MOD/S3M on steroids, basically).

      Assembly language was probably the most "fun" I've ever had programming, to this day! Just like some geeks like micromanagement sims like Civ and MOO, I like to micromanage technology. There's something selfishly gratifying about writing a Tetris clone in 256 bytes, or a tight graphics/sound rendering loop... I remember writing (once) code that executed forwards AND backwards, i.e. the instruction pointer would decrement, which required insane planning of the bytecode, choosing and ordering data values to coincide with valid opcodes, but for some reason I can't find or remember the opcode to reverse execution - maybe it was on a different architecture.

      Perhaps the worst thing about assembly language, is it shows you just how sloppy today's software has become. Even a quad-core beast spends most of its time revving up the code equivalent of "umm... well... y'know... umm... sort of... like...", and we have modern programmers to thank for that.

      --
      -Billco, Fnarg.com
    69. Re:No ShortCuts !!! by Hasmanean · · Score: 1

      Freeman Dyson wrote something similar about the school system in the 19th century. Back they taught all kinds of Greek and Latin, but they never produced any G or L poets. Predictably, most students hated the subjects and studied math and science as a form of rebellion. So the Brits produced many 1st class scientists during that time.

      In the latter half of this century, schools started emphasizing math and science in their curriculum. But all most young people seem to want do is play music.

      Following that thinking, you could force your kid to do some integrals and computations by hand, then let him obliquely "discover" how much easier a computer makes it. That's how I got into programming, in the early 1990s...through my interest in scientific computation and simulations. The way to do it today would be to get him interested in something like photography or audio/video processing, get him some hackable hardware, teach him about signal processing and filters, and wait until he finds some application which the standard tool won't let him build. Then get him to program it for himself. The rest will come by itself.

      My prediction for the school system is, that once they start emphasizing music in their curricula, and the mainstream gets involved with it, all the other kids will rebel by becoming serious bloggers.

      --
      Hasan
    70. Re:No ShortCuts !!! by somersault · · Score: 1

      Sure you can 'operate' a car without a license. But if you don't know how to fill up the washer fluid or check the oil then you're either going to have to clean the screen by hand, or your engine will get damaged and cause more scrap or increased emissions, etc. When I did my CBT (compulsory basic training) for riding a motorbike in the UK we were taught how to check our oil and oil our chains, etc, because it's pretty important. I'd rather I was taught the same with cars rather than just driving around not realising that I was eating up oil that needed replacing. I once bought a car and the day after I got it the 'check engine' light came on because the oil was so low. Obviously I was a moron for trusting the guy that sold me the car in the first place (he'd done some work on the engine, I thought he'd have looked after it), but I should have probably checked the oil myself as well as Honda engines tend to eat oil pretty quickly when in VTEC. Regular servicing does take care of refilling fluids I think, but if you discover your car is leaking oil and you're stuck out in the middle of nowhere then you may need to top it up to get back to civilisation (or you could just call a rescue service of course, but that costs a lot of money).

      I wasn't talking about people fixing their computers at all actually, I was thinking more along the lines of the idiots that fall for spam and trojans and make the whole computer idiot-proof-security and malware industries viable in the first place.

      I agree that everyone doesn't need to know everything, and it was actually going to be part of my point in the GP, but a certain level of basic education for things like cars and computers would make the world a better place. Preventative maintenance and sensible usage is generally better than having to fix stuff (says the guy that went through something like 6 tyres in a month :p )

      --
      which is totally what she said
    71. Re:No ShortCuts !!! by dwiget001 · · Score: 1

      I taught myself on this route: Learned HTML and then taught myself JavaScript (you code, load up the page, see the result almost instantly). Taught myself the C programming language. Starting some Java now. JavaScript got my mind wrapped around variables, functions and the like. For C, had to dig a bit deeper into how a computer works, great learning experience, used C Primer Plus book. I actually tried to code some Java after JavaScript. That was a bit steep, needed some more programming basics, which learning C provided. Java is going much easier now with C under my belt. I have also, since starting Java, dabbled a bit with C++ and will be learning it next.

    72. Re:No ShortCuts !!! by masdog · · Score: 1

      Why? Because you're the exception to the rule or further along than most people in your age bracket?

    73. Re:No ShortCuts !!! by AmaDaden · · Score: 2, Interesting

      Java is a great language to get started in. Just about anything that you want to do you can do in Java. It might not be best when written in Java but it can be done. I started programing in QBasic moved on to VB and then C/C++ but I only got sucked in to it once I started with Java. It's also the top language out right now so it's very practical.

      More important then the language is that you figure out what he likes about programing. Keep his interest alive. I started coding when I was 10 but around the age of 14 I almost entirely stopped. I lost my drive. I was using mostly VB at the time and it was just too much of a pain in the ass and I had nothing to really show for it. Additionally I got to the point where I could not learn anything else about the computer when using Windows. Yet I was not able to jump in to Linux because 1)I knew too little about it 2) I had no one to show me the way. I basically got stuck until I got to college.

      So basically keep his drive alive by...
      1)Let him pick the projects and just grease the wheels. "Oh you want to do X? learn language Y." "Let me see if I can help you with that bug." He might not be at all interested in the same things you are and there is nothing wrong with that.
      2)Give him the guidance he needs but don't force him in to anything.
      3)Don't be afraid to learn something new so you can help him with it. It is far easier for you to learn something new then for him, you already know programmer speak.
      4) On the topic of programmer speak show him Slashdot or Digg or something like that. Programmers have started there own culture in these places that he might be interested in seeing. Digg might be best for him for now but once he learns more Slashdot is likely to be more his speed.
      5) Be a mentor not a coach. Just make sure he is not going to any dead ends like Visual Studio or Windows. You can only learn so much about them before you are not allowed to learn any more.
      6)It sounds cheesy but be proud of him. Getting started in this is a lot of time that he could be using to hang out with his friends or play games. It's hard to keep going when your not getting anywhere yet AND no one is impressed with how hard you are trying. Just don't embarrass the kid by telling EVERYONE you meet "Little johnny just started programming!"

    74. Re:No ShortCuts !!! by Firehed · · Score: 1

      That's not "writing them off", that's being realistic.

      It damn well is not. I was doing plenty of fairly low-level C code around age 14. Of course I'm probably the exception to the rule, but age is FAR less important than simply being interested enough to try.

      --
      How are sites slashdotted when nobody reads TFAs?
    75. Re:No ShortCuts !!! by Firehed · · Score: 1

      I've got to agree there, as a long-time PHP programmer. It's easy as hell to learn, and as such it's also easy as hell to pick up on the bad practices that so many PHP programmers follow (mysql_query("SELECT * FROM {$_GET['tablename']}"); you say? Oh why not, it couldn't hurt...), not to mention the typical insane and inconsistent function names and parameters. I love it as a language for its ease of use and flexibility when creating web apps, but the sheer number of inconsistencies make it a terrible first language.

      I first started with HTML (around age 11 or 12?) and within a year was doing all sorts of custom work for my C-based MUD. I do almost all of my work in OO PHP/MySQL/HTML/CSS/JS these days (despite working for a .NET company, so I at least have some vague VB/C# familiarity). Of course HTML when I was learning it was a much simpler, much uglier thing, and probably gave me as many bad practices as customizing phpBB installs, but now we have these magical validators to make sure you're not screwing things up too badly on the web front. For a starter, it's not too bad of a set to get working with, though ignoring PHP and JS at first might be best to start. And of course once you're past that, there's the whole procedural/OO thing in PHP (there are enough JS libraries available these days that it barely matters).

      --
      How are sites slashdotted when nobody reads TFAs?
    76. Re:No ShortCuts !!! by CrazedSanity · · Score: 1

      First, let me give the disclaimer: I'm a PHP programmer.

      If you let the kid program in PHP, or some other web-related language, be sure to teach him that mixing HTML in with the code is bad. It's okay to start out with, for cutting his teeth or whatever, but make sure he knows not to keep doing it. Otherwise, we'll have another code monkey that writes nigh-unreadable code... and might think it's actually good.

      Object-oriented code is very important. Structure is more important. If you're going the way of PHP and building dynamic webpages or whatever use (here comes the shameless plug) a templating system/framework.

      --
      Sanity is like a condom: rather have it and not need it, than need it and not have it.
    77. Re:No ShortCuts !!! by Bloodoflethe · · Score: 1

      Come on, this was funnier that that +2.

      --
      "Little is much when little you need."
    78. Re:No ShortCuts !!! by Achoi77 · · Score: 1

      hear hear! I remember doing the same exact thing with my TI-81 back in highschool. I also remember that sucker having very little memory, so I had to really think of ways to really keep my code tiny while getting the functionality I wanted - up untill I get a TI-82 (which had a lot more memory).

      I remember writing all kinds of random games - games like space invaders, to racing games to arkanoid type games. And I remember writing them over and over every time I replaced the battery since my backup battery was dead. That actually helped me get into the habit of thinking ahead, trying to remember what the hell I did, and see if I can code it 'just a little better.' Or use a different approach and see the outcome.

      Wow, I had a lot of time on my hands when I was younger. Ahh those were the days!

    79. Re:No ShortCuts !!! by SocioDude · · Score: 1

      It's also the case that what is "riveting" is in the eye of the beholder. My brother thinks I have the most boring job in the world "sitting at a desk all day, typing away". He's a chef, and he absolutely loves it.

      I can see how people would shuffle paper, lay bricks, or drive a truck and still call us mad for enjoying programming.

    80. Re:No ShortCuts !!! by http · · Score: 1
      Look, I'm all for mandating readability (some scripts i've had to debug at work seem to be commented in Pure Acronymic Goo), but can we settle this once and for all? Forcing the indentation to (1) a fixed value of (2) two spaces was a dumb move.

      (1) A possible way around this would have been to have an internal variable indicating the preferred number of spaces or tabs (think PERL's assignable record and word separators, $/ and $: ), but then you have to get everyone's editor and the python interpreter communicating with each other in some standardized way.
      (2)It's been a while since I was in college, but I recall that the issue of indent spacing has been studied with values from one to eight: all other things being equal, four space indent results in the least errors per LOC.

      OK, now I get to spend the day dodging flames. brb, got an asbestos tie in my closet.

      --
      If opportunity came disguised as temptation, one knock would be enough.
      3^2 * 67^1 * 977^1
    81. Re:No ShortCuts !!! by kesuki · · Score: 1

      my parents did try to get me interested in technology, and programming.

      they got one of the few coleco vision adam systems, with logo, i played around with logo, but mostly i just played the video games...

      then they got a 286 computer, and my dad brought home a disc full of basic games, i spent about 12 hours debugging a 'buggy' basic game, using the 10lbs manual that came with a 286, and the dot-matrix printer to print out the code, to look for bugs... but again, i lost interest. the point?

      if you focus solely on coding, and the kid doesn't keep a high level of interest, perhaps it's time to try other hobbies, so they don't waste all their free time in front of a tv or playing games.

      in my case, from my perspective, i realize that the reason i had so many problems as a child, was due to early symptoms of mental illness... I have never genuinely gotten interest in programming, although for a while i coded IRC bots of my own design...

      if you've tried to get your child interested in things, and you keep on epic fail, it might be time to consider if they might have developed a mental illness of some type.

    82. Re:No ShortCuts !!! by dreemernj · · Score: 1

      QBasic was the first language I used to actually make things that seemed complete. I used some other versions of Basic before it but I basically just did short math problems and maybe a loop or two. QBasic is when I triumphantly created pong and breakout clones. I was so proud. They were crap, don't get me wrong, but the fact that I made them myself was the sort of accomplishment that led me to continue programming.

      QBasic was an easy language to get into but I think one of the things that helped me out with it was I could easily figure out what command I wanted to use and how I wanted to use it with it's built in help file. The thing that kept me away from a couple other languages at the time was this was before I had internet access, before anyone I knew had internet access actually, and my library didn't have programming books. So without that helpfile I would have quite literally had nothing.

      That leads me to believe a solid, easily accessible method to learn about the language is definately key. If it is a support structure that a young teen can be taught to navigate on his or her own, it will be that much better and that future programmer will have a much better time trying to get things done.

      --
      1 (short ton / firkin) = 89.1432354 slugs / keg
    83. Re:No ShortCuts !!! by nuttycom · · Score: 1

      Starting on OpenGL? That sounds painful.

      The key to getting kids interested in programming is for them to realize how much fun it can be. For me, creating simple games and then brainstorming and implementing tons of interesting rules variants and playtesting the games with friends was key to this enjoyment. The most fun thing about programming is that it's fundamentally a creative activity. Whatever language is chosen should make it easy to be creative, without having to get bogged down in issues of design, language internals, and deployment packaging at first. I think that the grandparent's suggestion of ActionScript is pretty good in this regard, with the exception of the deployment packaging issue.

      The thing with complicated graphics is that the amount of effort required to do something eye-pleasing is pretty high. The amount of effort required to hack together a game with a simple GUI in Python is pretty minimal - even an outright beginner to programming can get something interesting working in a few days.

      C++ would probably be the WORST language that one could possibly use to introduce someone to programming. Kids should learn to cut wood with a hand saw before being handed the power tools, you know?

    84. Re:No ShortCuts !!! by p0tat03 · · Score: 1

      And then most of them go back to driving a truck, or waiting on tables, or shuffling paper, or laying bricks or

      ... business majors with fast-track MBAs who end up managing coders? Marketing folk who make more in a year that I can hope for in 5? Financial analysts who shnoz with the best and charge romantic dinners to their company?

      None of those seem really THAT bad...

    85. Re:No ShortCuts !!! by Nigel+Stepp · · Score: 1

      There's a famous person named hobbit.

      --
      4096R/EF7BAFA6 79E1 DF98 D09D 898F 9A11 F6F0 DDDC 23FA EF7B AFA6
    86. Re:No ShortCuts !!! by nuttycom · · Score: 1

      I love Java. I use it every day. But I would never recommend it as a good beginner language.

      Object Oriented programming is powerful, elegant, and introduces a huge amount of learning overhead for somebody who's just starting out. The main component of this overhead is that for a beginner, figuring out what the boundaries of objects should be and what responsibilities each class should have is a real headache. While there may be lots of tutorials out there, I'd hardly consider Swing to be a beginner-friendly toolkit - it's rife with inconsistent naming and figuring out when all the callbacks are executed can be a serious hassle even if you know what you're doing.

    87. Re:No ShortCuts !!! by default+luser · · Score: 1

      Yeah, I did the same thing. I made programs to solve all sorts of problems from class on my TI-82, usually while sitting there in class.

      Further, some of my games made use of stuff from said classes. The Scorched Earth clone I made used randomized trig curves to build maps, and of course I used the ballstic parabola equation to plot the trajectory of the shots. I did this all with TIBASIC, and although it was slow, it was playable.

      If I were to make a recommendation, I'd say get him a TI-89. It has much more horsepower than my TI-82, so you can do more in real-time than my old TI-82. It will also last him through college if he takes a technical road. BUT: you will need to help him get started, show him some of the more interesting aspects, and help him write a few of his first programs.

      --

      Man is the animal that laughs.
      And occasionally whores for Karma.

    88. Re:No ShortCuts !!! by Doctor+Faustus · · Score: 1

      Best bumper sticker I ever saw:
      "Tired of screwing? Try riveting!"

    89. Re:No ShortCuts !!! by OwnedByTwoCats · · Score: 1

      I won a scholarship, partly by defending the BASIC programming language. It was the only one I knew, so I had to defend it.

      Anyway, I started with BASIC on a DEC-10 at age 14, and then Applesoft BASIC on an Apple II. With graphics.

    90. Re:No ShortCuts !!! by Macman408 · · Score: 1

      I agree - find something that is particularly interesting for your son. In my case, I really learned programming in 9th grade. I had a TI-85 calculator, so I wrote several programs in TI-BASIC related to what I was learning in my math class at the time. I found it enjoyable because writing the program meant that I didn't have to do all the repetitive work in the homework assignments - I could plug the numbers into my program, and it would give me an answer. The teachers didn't mind, since they figured that if could write a program, I easily could do the same thing by hand.

      The biggest benefit was several years later, when I wrote a program to calculate Riemann Sums (a way to approximate an integral). It would let the user input a function, an interval to calculate over, and the number of subdivisions to use. The user could choose left, right, middle, or trapezoidal approximation. It would even graph the function and show the areas used for the calculation. It was a fairly useful little program for one particular chapter of my math book - but even better, my teacher loved it. In exchange for giving her the code for the program, she gave me a perfect score on that chapter's test. There's no better reward for a kid than getting to skip out of a test!

    91. Re:No ShortCuts !!! by TheoMurpse · · Score: 1

      Anecdotal evidence doesn't prove anything. I was programming when I was 4. That doesn't change the fact that, "4 year olds are interested in Spongebob and mud, not writing BASIC code," is a non-offensive and correct statement.

      If you required every statement made to have all stereotypes stripped away from it, there would be almost nothing we could say about the real world. It would strip us of almost all of physics, chemistry, and biology, seeing as how they are all incomplete models of their particular targets of study.

    92. Re:No ShortCuts !!! by Machtyn · · Score: 1

      I really should look into PERL and Python at some point. My favorite scripting type language is Tcl/Tk. Great language for proto-typing and doing a lot of cool stuff. Not only that, but the wish shell they provide allows you to make modifications on-the-fly. Then, when he finds there is something he'd like to extend or add in to Tcl or Tk, he can compile some C or C++ code as a dll, or whatever, and add it to the tcl language.

      As an example, without much formal training at the time, I took a PCI I/O board and started writing the C routines to allow Tcl to interface with it. It was fun, I learned a lot.

    93. Re:No ShortCuts !!! by TheoMurpse · · Score: 1

      Agreed. Here's PHP in a nutshell (and I use it for all web-based stuff I do):

      here_i_use_underscores(hereIUseCamelCase(hereiusenothing($string)));

      ARGH! The developers never seem to have decided upon a library function naming scheme.

    94. Re:No ShortCuts !!! by ottothecow · · Score: 1
      No offence as I know there are people who love it but getting some kid into programming in this day should probably not involve too much assembly.

      x86 isn't the prettiest architechture to write for and it certainly doesn't have the easily available resources that a higher level language has available (or even 68k/z80). My experiance with assembly comes after C (so I already had an understanding of pointers) and I can say with a reasonable ammount of certainty that if somebody had tried to make me start off with machine instructions, I would not have been interested. It was much more engaging to see how code is translated into assembly once you already know about the mechanics of programming...gives you a better reference to what the jump instructions or the comparisons are actually accomplishing in the greater scheme of the program.

      --
      Bottles.
    95. Re:No ShortCuts !!! by hobbit · · Score: 1

      Python does not mandate a particular number of spaces. You can even use a different number of spaces for different blocks in the same file, which I'm not convinced is a good idea. The worst idea of all, in my opinion, was allowing tabs to be used as syntactic whitespace. Every text editor with a fixed-width font renders spaces equivalently, but tabs are a can of worms.

      --
      "Wise men talk because they have something to say; fools, because they have to say something" - Plato
    96. Re:No ShortCuts !!! by ottothecow · · Score: 1
      Ooh I forgot to mention that in my post above (where I talked about learning basic on TI-graphing calculators)...

      mIRC scripting was a very early attempt at coding for me. The code is interpreted so no worries about compiling and it is very easy to pick up. I had gathered some collection of mirc scripts and at some point I didnt like how one behaved so I started to change it. Testing thigns like triggered responses is very easy but still develops a way to code things. My scripts/bots never got too complex..probably the most complex thing I got use of was a bot that listened in its channels for the password to a private channel (for a planetarion alliance). If someone said the password (such as a typoed /join), the bot would immediately change to a randomly generated password, log the occurance and who was at fault, and FTP a text file containing that password to a server so that our internal website would always display the current password... Of course that was all useless as soon as the chan/nickserv type bot on the network started supporting a viable user-level management system to autoinvite members.

      --
      Bottles.
    97. Re:No ShortCuts !!! by hobbit · · Score: 1

      I am not that person. He stole my nick ;)

      Besides, it was a gentle pun, not a disrespectful sleight!

      --
      "Wise men talk because they have something to say; fools, because they have to say something" - Plato
    98. Re:No ShortCuts !!! by kriyasurfer · · Score: 1

      I've been training in martial arts for about four years now, all of which as an adult. I've always been interested in how to structure learning. The martial arts training I've learned was always layered, starting from the very basics, and working your way up. This was explicitly pointed out to me after reading Josh Waitzkin's Art of Learning -- though it doesn't talk about teaching programming, it talks about the learning process in general.

      Many of the programming conventions were developed for good reasons to solve a particularly painful problem. If you just teach the conventions, it will not make sense without putting it in context. The student has to feel the pain and frustration first before you show how the convention will solve his problems.

      This is a rant I wrote a while back on my blog:

      If some eager kid wanted to learn programming from me, this would be the sequence I would teach him in:

      1. Input/Output. The most basic function of a computer is to take an input, transform it in some way, and then spit out an output. Therefore, the basics for learning computer programming is playing with inputs and outputs. We'd start off simple by using a command line, and then printing out stuff. We'd work on all the major ways people receive inputs -- keyboard, flat-text files, CSV files, binary files, mouse, network sockets, HTTP, microphone, etc. Next, all the different outputs: text prompt, text files, lots more files, network sockets, HTTP, audio device, graphics (taste some bit of SDL, OpenGL, etc).

      Just like in martial arts, the next step is combination. Keyboard + files. Mouse + graphics. Network sockets + audio. There's enough instant gratification to keep a newbie happy. There's lots of toys you can create just playing with this stuff. You can visualize datasets. You can crunch some numbers. Now, at some point, the newbie will realize that he wants to make his toys more sophisticated, more interactive. That leads to the next stage.

      2. Flow control. The next basic building block is IF-THEN-ELSE, and all of its variations such as GOTO and loop statements. At this stage, it is more than OK to let the newbie play with GOTO statements and write speghetti code. Telling him to write structured code is like telling a kid not to touch the stove. He won't learn until he gets burned. The trick is to encourage him to make more and more sophisticated toys, challenging him until the flow logic gets so complex and tricky that he comes to you begging for help. This is key. If the newbie is incredibly intelligent, you had better find something convoluted enough to confuse him. The easiest way to do this is to give him something that would be very easy if he moduralized things as procedural calls, but difficult because he has to copy-and-paste things together. This is usually when you turn a toy into a game (a toy is just an interaction; a game has a goal). When he begs you for an easier way to do this, introduce the next stage.

      3. Structured Programming. Here, the newbie learns all about procedure and function calls. Introduce the idea of writing libraries that works across applications. (Now, see here all your toys and games have similar functionalities? Try this ... ). Show how all the Input/Output stuff he learned in Stage 1 were actually library calls. Introduce the idea of recursion. Introduce the idea of Unit Testing (the idea of writing and testing things in small chunks).

      Now, he is mastering the idea of calling things and passing by value. He'll start using less and less global variables, but he should start getting frustrated with his data being unstructured. At some point, introduce a problem that requires the use of pointers and dynamic allocation. For example, loading and saving game maps. This leads to the next stage.

      4. Data structures. Introduce pointers. Then memory alloc

    99. Re:No ShortCuts !!! by kriyasurfer · · Score: 1

      Addendum: I wrote this in a rant as a response to someone who said he didn't think it matters whether a newbie learns OOP first or Data structures/Algorithms first. I thought the sequence matter. That's why I suggested Ruby/Smalltalk, more for the OOP. Obviously, if you are teaching *general* programming practices, it would be better to use a language *you* can teach, even switch up the language from stage to stage. The point is to teach a solid foundation of skills that is applicable to any programming language, so that the student knows what is under the hood.

    100. Re:No ShortCuts !!! by Anonymous Coward · · Score: 0

      A big part of getting into programming for me was emotional. Mainly it had to do with making more money. But I was impressed as to how much power programmers had over computers compared to the rest of use computer "users".

      An example of this is when a programmer friend of mine broke up with this girl who was really obsessive. This was before cell phones were prevalent and my friend carried around a pager. Well she kept paging him all the time and it really pissed him off. After asking her to stop several times, he wrote a VB program to dial out on his modem over and over again to her pager. It paged her every 7 seconds. Each time it added an incremental number to the end of the pager number so the number would not get caught in the cache.

      Well, we went out to dinner and when we came back his program paged her more than 700 times. She was freaking out and never paged him again. I was so impressed I began to learn programming.

    101. Re:No ShortCuts !!! by martinw89 · · Score: 1

      Crap, I'm a little late in the game but a lot of the things you mentioned are in the Python Challenge. For example, on challenge has you going through a zip file, parsing filenames and using these to follow a chain. It starts easy and moves on up. Plus, there is a forum on that site with hints.

    102. Re:No ShortCuts !!! by Draek · · Score: 1

      So no, if he doesn't have the drive to learn and problem solve he's better off outside playing with a ball ... or girls since he's a teen.

      And if he does, he's better off becoming a mathematician instead of a programmer. At least we don't look down upon those that decided to take a class instead of bashing their heads against a compiler until the thing worked.

      --
      No problem is insoluble in all conceivable circumstances.
    103. Re:No ShortCuts !!! by Krishnoid · · Score: 1

      So no, if he doesn't have the drive to learn and problem solve he's better off playing ... or [with] girls since he's a teen.

      Why not both?

    104. Re:No ShortCuts !!! by MilenCent · · Score: 1

      All this IMHO of course....

      I was just about to suggest Python myself. Not because of the whitespace thing (which is helpful), but because it's a language in which a lot can be done with just a little coding, there are modules for just about everything, and it can take one surprisingly far. Even simple fast-action games can now be written in Python, using the PyCap library interface to the PopCap game framework. PyGame's great for more complex, non-real-time graphics stuff.

      The real problem with Python, from a learner's perspective, is that it doesn't have a good multi-dimensional array construct. The most obvious solutions are using built-in arrays (which are inflexible compared to lists), Numeric's arrays (which are good but external), lists-of-lists (which get confusing fast), or create an two-dimensional array class to wrap around a list, using math to map the second dimension into it.

      Also, when Python 2.6 hits it'll change some syntax about the language, which may confuse the kid if he stays current. But then, the version change could also be a learning experience for him.

    105. Re:No ShortCuts !!! by eonlabs · · Score: 1

      There are other architectures available. If someone wanted a fresh start at programming and was interested in an introduction to assembly language, it might make sense to pick up a PIC or ATMEL programming board, a half dozen chips for 20 bucks, some crystals, and have the kid play with some embedded apps.

      I do agree, however, that assembly is a rough first language, and I get the sense that starting with a highly structured language like c, c++ or java can actually hurt a programmer's ability to comprehend what's going on in an assembly environment. Picking up a curly-brace language as a second language is probably advantageous in this regard. Object oriented thinking can simplify programming, but doesn't stretch a person's ability to interpret new paradigms very much.

      It's amazing to see how many people responding to my earlier post opened up with "I started with basic on the..." That's some quality nostalgia baby.

      --
      I wouldn't consider the mad hatter mad. Just reality impaired. He sure can make a mean cup of tea.
    106. Re:No ShortCuts !!! by thetoadwarrior · · Score: 1

      Being a brick layer can mean people will admire your work for ages.

      Being a programmer means that the few years your program is relevant will be filled with numerous complaints about how shit it is and how bad you do your job.

    107. Re:No ShortCuts !!! by IamTheRealMike · · Score: 2, Insightful

      Dudes, don't bite my head off. Nobody ever said teenagers couldn't do kernel hacking, they said that shouldn't be how they are introduced to it. And that's totally right!

      Here are some aspects of kernel hacking from a beginners perspective (and really this is what it's about - being a beginner, not being a teenager):

      • Abstract: concepts like scheduling algorithms are way too removed from achieving useful results
      • Unforgiving of mistakes: Messed up? Time to reboot. This is amazingly frustrating for professionals, let alone novices.
      • Way too limited: kernels are written in C. C does not teach you modern software design, in particular, object orientation. Knowing this stuff inside out is crucial if you ever want to get a non-shitty job writing non-shitty software.

      Here are some attributes of video game programming:

      • Immediate: you can see the results of what you do.
      • Forgiving of mistakes: if you make a mistake, you get a backtrace showing where. You fix the problem and continue. Fast turnaround time on mistakes is crucial to learning.
      • Many possibilities for learning: even a basic video game will involve complex data structures, maths, non-trivial algorithms, file and network IO, designing data formats, user interfaces .... you name it, video games need it.

      Nobody is trying to insult you by saying teenagers should start with video game programming instead of kernel programming. Believe me, I'm 24 so it wasn't that long ago I was a teenager. After I finished with that video game I moved on and by 18 I was debugging race conditions in Wine. But doing that video game was some of the best experience I ever had - it let me practice object oriented design, high performance coding, memory management on a large scale, user interface design, OpenGL, and implementing complex algorithms like A* pathfinding.

    108. Re:No ShortCuts !!! by Anonymous Coward · · Score: 0

      I tried Visual Python with my kid when he was about 8. He loved to play with the examples the website provides (rolling ball, swinging lamp).
      I showed him where he could change speed, direction, colors, sizes.
      http://vpython.org/VisualOverview.html

    109. Re:No ShortCuts !!! by Dexx · · Score: 1

      One thing I'd recommend to avoid this problem (of losing interest) is to have him write something *useful*. It should be some tool or script he'll be using on a daily basis and one he'll want to improve on and rework as time passes.

      Suggest starting with some script that deletes his porn surfing from the proxy server logs.

      --
      Feel the fear and do it anyway.
    110. Re:No ShortCuts !!! by Tim+C · · Score: 1

      Maybe it's the glass of wine, but I actually laughed out loud on reading that - thank you :)

    111. Re:No ShortCuts !!! by gfxguy · · Score: 1

      Yeah.. well.. the way I was "self taught" was looking at other people's code.

      Get a simple wireframe cube spinning around on the screen (or better, spinning to mouse movements) may not be the greatest accomplishment ever, but when I first did it I would play with it for hours.

      My first complete games were text adventures, though.

      Still, the problem today is that everything is abstracted so much that new programmers don't really learn what's going on behind the scenes, and games now are so complicated it's impossible to imagine being able to write your own without having a team of programmers and people doing graphics and music and so forth.

      My son, though... started with the BASIC "guess the number" game.

      --
      Stupid sexy Flanders.
    112. Re:No ShortCuts !!! by tguyton · · Score: 1

      I'm glad someone else brought up QBasic. When I was about 7 years old, my dad helped me learn how to write a program in QBasic that converted inches to centimeters and vice versa. It's not much, but it's what first got me interested in computers. I'm not much of a programmer now, but I know enough to get around in Java and VB. I even took a class in Delphi. Delphi's not bad either. It may not be terribly useful these days, but it's simple and straightforward and easy enough to manipulate. Our teacher had us recreating games like pong and breakout in just a couple weeks.
      I think another thing that really helps keep interest peaked is having a specific project in mind no matter what language you're learning. You're much more motivated to learn if you have an end goal of what exactly you want your program to do, even if it's as simple as converting inches to centimeters.

    113. Re:No ShortCuts !!! by Swizec · · Score: 1

      It's not that we bash those who learnt everything they know from a class ... it's just that they're actually not as good.

      Similar as with artists, those who learnt everything they know from a professor aren't half as good as those who went out and ... created stuff and didn't stop trying until it was good enough unlike some who just care to pass the class so their money doesn't go to waste.

    114. Re:No ShortCuts !!! by linuxpyro · · Score: 1

      ...or if you're a sadist teach him Perl.

      Perl was my first programming language, back when I was in high school. No one forced it upon me. I suppose that makes me a masochist.

      --
      Saying "I'll probably get modded down for this" in a post is the best way to get it modded up.
    115. Re:No ShortCuts !!! by nuttycom · · Score: 1

      It sounds like you didn't need any encouragement to get interested in programming! The question we've been asked, though, is how to get a kid interested in the first place, and I think that to do something like what you've described you have to already have a self-sustaining level of interest.

      In order to do that with a child who's totally new to programming, I think that you have to really focus on the fun parts of the process itself instead of the product, and manage the child's expectations with respect to the final outcome accordingly. The process of getting something working should be as painless as possible so that the kid can focus on the pleasure of playing with the logic itself and practice thinking in terms of abstractions. They can deal with optimization when it becomes necessary, and in doing so learn the lessons of efficiency in a more personal manner. I remember well writing my first 3D game using a totally naive line-drawing based algorithm of my own creation, and realizing that I needed to learn a bit more about 3D rendering when it took minutes to change the perspective of a scene. The exploration that experience resulted in taught me a whole lot more about efficiency than I would have learned otherwise.

      I think that learning what goes on behind the scenes is something that comes later, if and when they're interested. I don't disagree that fundamentals are important for people to learn, but they're only really important when you get to the point of writing software that others might want to use. When you're doing it just for your own pleasure, it's nice to be able to just play with code without worrying too much about what's going on at the lower levels.

    116. Re:No ShortCuts !!! by riceboy50 · · Score: 1

      When I was learning about programming on my TI-83, I wrote programs to simplify my class work like estimating the area under the curve and working with matrices for pre-calc and converting number bases for networking class.

      I think I would have benefited from starting from assembler since there is not much "magic" happening lower down the stack. Once I learned it in college I was like "why didn't I learn this first?!"

      --
      ~ I am logged on, therefore I am.
    117. Re:No ShortCuts !!! by Tatarize · · Score: 1

      I'd go the other way. You can always learn languages with fewer abilities, but I'd say teach him Java straight off. First it gets him set directly into the OO paradigm and secondly it has a lot of really good structures to save him a lot of time before producing some nice code. You can always learn to code poorly later.

      --

      It is no longer uncommon to be uncommon.
    118. Re:No ShortCuts !!! by Anonymous Coward · · Score: 0

      How exactly is Java more powerful than Python?

    119. Re:No ShortCuts !!! by ottothecow · · Score: 1
      When I needed to find the area under a curve...I got a TI-89 and let it do all of the hard work ;)

      Was a lovely machine...always thought it was a shame I didnt do more coding on it. Once I got the 89 I had already moved to where I had better uses of my time in math class and access to more useful programming outside of it (also the 89 would probably be easier to write for on a 92 with qwerty)

      --
      Bottles.
    120. Re:No ShortCuts !!! by JensenDied · · Score: 1

      Come on, this was funnier that that +2.

      Yup, looks like its a +3.

      --

      09:F9:11:02 - 9D:74:E3:5B - D8:41:56:C5 - 63:56:88:C0

    121. Re:No ShortCuts !!! by h4rm0ny · · Score: 1


      Wow! That's fun! Thanks for sharing!

      --

      Aide-toi, le Ciel t'aidera - Jeanne D'Arc.
    122. Re:No ShortCuts !!! by http · · Score: 1
      Boy do I feel stupid and misinformed. I must have, at some point in the past, taken a tutorial's reccommendation as gospel truth.
      From http://docs.python.org/ref/indentation.html we have

      At the beginning of each logical line, the line's indentation level is compared to the top of the stack. If it is equal, nothing happens. If it is larger, it is pushed on the stack, and one INDENT token is generated. If it is smaller, it must be one of the numbers occurring on the stack; all numbers on the stack that are larger are popped off, and for each number popped off a DEDENT token is generated.

      I sit corrected, and now have to look at learning python next year instead of Tcl.

      --
      If opportunity came disguised as temptation, one knock would be enough.
      3^2 * 67^1 * 977^1
    123. Re:No ShortCuts !!! by ElizabethGreene · · Score: 1

      If my son or daughter asked me this today, I would point him to AutoIt. It is a basic-like open source language that is simple enough to work from the command line(print, input, etc) but complete enough that it can grow into complex applications (windows guis, database access, interacting with other applications using COM). It is an interpreted language, but also includes a compiler. It is written for windows, but could be ported by someone enterprising enough.

      One of the really cool things about AutoIt is that it was born as a scripting language to automate simple tasks. It is one thing to be "interested" in programming. As your young programmer gets more comfortable, s/he could use it to write simple bots for WoW, Runescape, etc. Having a program run around and farm gold for you brings programming to a whole new level of coolness. If they aren't into the whole gaming thing, how about using it to control some x-10 stuff?

      From one nerd-parent to another,
      Good Luck,

    124. Re:No ShortCuts !!! by cyb3rdemon · · Score: 1

      I think perl is a great learning language. It is very flexible, powerful and straightforward, and bugs are rare. For a beginner, perl would be great because you can learn the basics and advance to more advanced features later on without having to work with things like classes, functions and typecasting when you're still getting started.

    125. Re:No ShortCuts !!! by Anonymous Coward · · Score: 0

      "A lot of people cut their teeth on Perl."

      They were just making sure it was real.

    126. Re:No ShortCuts !!! by UberMongoose · · Score: 1

      I started coding on a Commodore 64. Getting basic sprites up and running on one of those required a lot of peekf's and pokef's in BASIC. It wasn't easy, but heck, I had so few games I was desperate to write my own. Then one of my friends game me a bunch of old cassettes with games like "Paper Boy" and "The Last Ninja" on it, and for a while the need to program was satiated, but not for long. There was always something cool I could write when I got board with games. My point is that most kids have the attention span of a goldfish, and tend to want to context switch what their doing all the time. For me it was games and coding. A good way to start a kid off on coding might be to show him something fun on a machine, and then get him curious about how to do it himself (and i'm not talking about pr0n). Provide enough alternatives and they'll live in your basement all their life ;).

    127. Re:No ShortCuts !!! by rootooftheworld · · Score: 1

      I hear zsh has plenty of bells and whistles. Just get him to run some off-the-wall *nix system, like Plan 9, or a hardcore distro like gentoo or slackware, but best begin with something lighter like Fedora. Or if he is really enthused even debian or *BSD will do. Just keep him fidling, and he'll learn programing and more specificaly kernel hacking out of what he, by then, will consider necesity.

      --
      I know full well that tobacco is bad for you, so I smoke weed with crack
    128. Re:No ShortCuts !!! by himself · · Score: 1

      Rivets. *huge grin* Here, read this: http://www.michaelmoore.com/hamper/excerpt5.html "Punching rivets is..."

      That links it to an excerpt from Ben Hamper's book, "Rivethead: Tales from the Assembly Line." Great, great stuff about working for GM in the 70s and 80s. Blew my mind when my English teacher handed us the excerpt from "Harper's" magazine in, oh, 1987 or so. All those typical books chosen to appeal to teens -- "Catcher in the Rye," et al. -- went out the window. Yay, Mr. Peick & Mr. Syman!

      - Will

    129. Re:No ShortCuts !!! by ReptilianSamurai · · Score: 1

      Before I got my graph-link (an absolute must-have for the budding calculator programmer) I was known to forego the use of a calculator on math tests that they made you clear your memory for! I didn't want to lose my precious programs that I had toiled long and hard on.

      Although I too have completely re-done older programs from scratch for the sake of making them more efficient. Plus there was the point where I learned how to avoid memory leaks and never get Error: Memory when my programs were running.

      --
      I installed Linux on a car, but it crashed due to bad drivers...
    130. Re:No ShortCuts !!! by WithLove · · Score: 1

      I'm 17, and a few years ago when I was learning my first languages (Python, then VB (Thank you, high school!), then Java, and now C++) parsing text really did excite me, and still does.

      Maybe I'm weird, but I've always thought things like that were pretty cool. I liked making a prime number generator. Learning regular expressions was fun.

      And, yes, I'm a lot of fun at parties.

  3. python by utnapistim · · Score: 5, Interesting

    Teach him python (or ruby, or whatever else that is high-level and easy).

    It's the same as basic was twenty years ago, just much more powerful, easyer to learn and more fun.

    --
    Tie two birds together: although they have four wings, they cannot fly. (The blind man)
    1. Re:python by Fingerbob · · Score: 3, Interesting

      I second this. most folks I know who love programming learned a nice easy language as a kid (BASIC in my case, a long while back). Python is easy enough to learn how to program in, but flexible enough to draw stuff on the screen, play sounds, talk to remote machines - mess with what the machine is capable of. I'd definately pick a friendly language to begin with (and I'm not sure C or C++ fit that bill, I'm still learning good C++ practice after a decade of commercial use).

    2. Re:python by jabjoe · · Score: 1

      I third that. BBC BASIC was my first language, powerful and easy. Acorn users often used BASIC as a shell, and many Acorn apps where mostly written in BASIC with just the part needing speed written in ARM or C. Python is the modern day version of this. I'm so pleased to have a language for these uses again. (But relatively, python is isn't as quick as the super quick BASIC was on the Acorn (on the StrongARM it all fit in the instruction cache.))

    3. Re:python by Anonymous Coward · · Score: 1, Interesting

      Yeah, this is the thing to do. Be sure to install Pygame, the Python wrapper for SDL.

      It's amazing what you can do without ever leaving the Python language. Certainly this is a good way to learn, because you get all of the powerful high-level Python features and you don't have to detail with nasty low-level details like memory allocation.

    4. Re:python by ethorad · · Score: 1

      As has been said, you need to get him to want to learn. For me, the thing in particular which did that was fractals. Being mathematically inclined I used to build programs to solve problems, but the thing which spurred me on was drawing fractals. Of course, doing this in BASIC on a spectrum meant leaving it on overnight to run but then that just taught me about O(n) etc programs and optimisation. Secondly, you need him to be able to produce fun things easily. For BASIC on the spectrum it was pretty easy to draw on screen and make things move. With directx and C++ it's a whole lot harder and less fun. It's all very well outputting text results but I reckon graphics will be essential in keeping him interested. Python sounds good, or maybe something like DarkBASIC? Basically ou want him to learn the ethos of programming but unless he's driven and finds what he's doing fun it'll be an uphill struggle.

    5. Re:python by Eudial · · Score: 2, Insightful

      I second this. most folks I know who love programming learned a nice easy language as a kid (BASIC in my case, a long while back). Python is easy enough to learn how to program in, but flexible enough to draw stuff on the screen, play sounds, talk to remote machines - mess with what the machine is capable of.

      I'd definately pick a friendly language to begin with (and I'm not sure C or C++ fit that bill, I'm still learning good C++ practice after a decade of commercial use).

      What you choose as a first language matters. It should be easy, and teach basic flow control in a very direct matter that allows for an intuitive understanding of those subjects (BASIC was the name of the game when I was young, python is where you'll want to go today). But I'd definitely leave the door open for C or C++ as well (hell, I learned C when I was 15). Buy a good book on python, and K&R to teach him C, and tell him to start out with python, and get into C if and when he feels like it.

      It's also good not to micromanage too much.

      --
      GAAH! MY PRINTER IS ON FIRE!!! PUT IT OUT! PUT IT OUT!
    6. Re:python by Olix · · Score: 2, Interesting

      Don't teach him anything, its better if he sits down and learns it himself.

      I know that learning in lectures in college is a very different ballgame to learning from instruction by one person, but I found that I only really improved my coding ability when I sat down and got myself a project I wanted to work towards. If the kid is interested in learning to code and wants to do interesting things with the computer, then he'll learn it himself - just give him some easy IDE and supply him with ideas for something interesting to write. He should be able to learn the rest himself with online tutorials and the like.

      Some people bitch about it a lot, but Java is nice and simple to learn and there is something like 2000 published books on it.

    7. Re:python by KlaymenDK · · Score: 1

      Fourthed (Forth'ed?).

      I started out with a Mac, Ansi Pascal v1.0, two reference manuals, and basically no other help. Today, I would hand out Python, and have regular talks -- not about programming, but about things that you could do with (simple) programs. Let the kid figure out his (oops, presume it's a he) own level, his own assignments. Stick in a challange or two along the way.

    8. Re:python by Malekin · · Score: 5, Funny

      Forbid him to learn python. Then he'll do it himself to spite you.

    9. Re:python by xalorous · · Score: 4, Insightful

      Dude, this guy's kid looks up to him, as a role model. The number one reason he wants to program is because his dad does it. By all means, give the kid the tools he needs to learn to program. Pick a language with lots of tutorials and books and wide acceptance (C or Java perhaps?). Get him to draw flowcharts or write pseudocode (people still do that?). Give him some fun problems to work out. Go over code with him. Show him ways to improve his code and explain the reasoning behind them. His interest in spending time with you will keep him at it until he's hooked on programming itself.

      --
      TANSTAAFL GIGO Acronyms to live by!
    10. Re:python by Anonymous Coward · · Score: 0

      I have been taught a couple languages through the course of my college degree and I have found python the easiest to pick up so far. Perhaps try pygame, i haven't used it myself but I have been told it is really simple and easy to learn with fun results. If he really gets into it then he can start helping out with the project etc. http://www.pygame.org/news.html

    11. Re:python by xalorous · · Score: 1

      Ok, so that comment didn't say what I wanted to say. My comment was directed at the father in the quote within the original submission. Please excuse my slipping into second person.

      --
      TANSTAAFL GIGO Acronyms to live by!
    12. Re:python by patro · · Score: 1

      I second this. Python is a very accessible language. I wouldn't confront newbies with C right at the beginning.

      Python is easy to learn and it's very powerful at the same time, so he can go a long way using only this language.

      If he catches the programming bug then he can move on to any of the closer-to-the-metal languages later if necessary.

      The important thing is do not alienate him by forcng him to deal with C strings and stuff right at the start.

    13. Re:python by silentcoder · · Score: 5, Insightful

      >I'm still learning good C++ practice after a decade of commercial use
      Don't worry, so is Bjarn Stroustrop

      --
      Unicode killed the ASCII-art *
    14. Re:python by Anonymous Coward · · Score: 2, Funny

      From the summary: 'My young teenage son is starting to ...'

      > Let the kid figure out his (oops, presume it's a he)

      There are mighty few female sons, so it's a fairly safe presumption.

    15. Re:python by donaldm · · Score: 1

      Teach him python (or ruby, or whatever else that is high-level and easy).

      It's the same as basic was twenty years ago, just much more powerful, easyer to learn and more fun.

      I beg to differ here, higher level languages are fine for someone who has some experience in programming, you can very quickly turn off the beginner. For someone to start programming a simple shell language such as Bash or Ksh is much more suitable since you can easily write simple and even powerful scripts that you can test very easily and quickly and gain confidence as you go. I always recommend courses in formal programming to learn the fundamentals and best practices of using simpler and even more advanced languages.

      --
      There ain't no such thing as proprietary standards only proprietary formats. Standards are by definition open.
    16. Re:python by Anonymous Coward · · Score: 0

      I have to agree. I'm in university and we started to learn with Java. I can probably see you jumping out of your chair right now, but I think teaching a high-level, rather easy language like Perl or Python or even Java is a great way to give him the taste to program and learn other languages by himself.

      With C and kernel hacking, you might make him believe that programming is too abstract, or bore him with too complicated stuff (like array management is C).

      Once he'll know what he can and can't do with his high-level language, he'll learn something else.
      I learned Perl by myself, for pleasure. I could have just gone on with Java.

      Oh, one last thing, even worse than Java: I actually really learned programming with my dad, when I was like 12, in Visual Basic. So that's kind of crazy I know, but my point is if my dad had shown me some C code, I probably wouldn't be studying computer science right now...

    17. Re:python by peterb · · Score: 1

      I would have trouble thinking of a worse book to teach someone C than K&R.

      It's a useful reference, and a lousy teaching tool.

    18. Re:python by TheRaven64 · · Score: 1

      Definitely not. Python is a terrible teaching language. It is often easier to do the wrong thing than the right thing in Python (which makes it okay as a prototyping language). For a first language, you want something where the good solution is also the easiest. Then, when you have learned good practices, you will apply them in any language you learn. I'd still recommend Smalltalk as a good first language. There really is no better environment for learning to code than Squeak at the moment.

      --
      I am TheRaven on Soylent News
    19. Re:python by croftj · · Score: 2, Informative

      You know what they say about presumptions...

      --
      -- Many men would appreciate a woman's mind more if they could fondle it
    20. Re:python by getuid() · · Score: 1

      If he's older then 12 (say 14, 15...), then teach him C. It's not so difficult, and that way, he gets to learn a lot about how computers work on the inside. Doesn't need to be anything fancy... like kernel hacking or so. Some basic stuff.

      In fact, on second thought, forget about the language... It's mostly not about the language, but about what's the problem at hand that needs to be solved. If the problem is interesting, he'll feel well having solved it. Then he'll automatically stick to it (or, if he won't, than chances are that he's not bound to be a programmer... try not to be to disappointed, in that case :-)

      Examples: for the beginning: suggest him to make a program to compute the average of his scool marks. More advanced: or make a program that can ask him words in a foreign language and have him type the english word for it... Or suggest him to make a program that allows him to keep track of what objects (books / CDs / PC games) he borrowed to whom.
      When I was a child, I always forgot what I borrowed to whom. And writing such a program isn't all that difficult...

    21. Re:python by Anonymous Coward · · Score: 1, Interesting

      Forbid him to learn python. Then he'll do it himself to spite you.

      Hi there. I'm an Australian student who has just started a comp sci degree. I have to say that Python is by far the most fun, easy and elegant language I've learnt so far (Haskell would be second). It's worth trying to expose him to it.

      The up side? Python has a neat game creation module called PyGame which you can get at pygame.org. You can teach him about maths, physics and programming all at once while having fun with him if you want!

      But the guy I quoted actually makes an interesting point - I always learn the most when somebody challenges my intellect or authority on a matter - I have an urge to prove them wrong. Not sure how you'd do this without undermining his self-esteem, but it's worth a thought; don't spoon-feed him.

    22. Re:python by fictionpuss · · Score: 1

      Seconded. Learning basic was fun because you could get results quickly, even though it was a slow language. PyGame removes the latter obstacle.

      C is a foundational language if you want to progress as a programmer, but if you want to create interest in the first place - the ability to get interesting (graphical not command line) results is important.

    23. Re:python by wmguy · · Score: 1

      Everyone always is scared to have people learn on C, but I initially learned to program with a copy of Turbo C and its help function. Since I didn't know any "easy" languages like BASIC or Pascal, it seemed perfectly natural to have to learn about pointers and C-strings.

      Ultimately this kid should just be taught the proper tools for whatever end he wants to achieve. If he wants to do web programming, teach PHP and HTML, if he wants to do text processing, teach him a scripting language that suits the task. If he wants to program embedded controllers, teach him C. Sure, you might be able to do something with BASIC, but that just means he's going to have to re-learn to program later when he does something "real." I have yet to see BASIC used anywhere in my career.

      You will also have to use whatever teaching method works for him. I learn well by having example programs and an API reference available. Other people prefer to read a whole book before they start, and others want someone standing over them telling them what to do. Only you know your kid, so you will have to let him decide how he wants to learn.

      If your kid really wants to program you won't have to dumb things down for him, just help him do what he wants, and let him go.

    24. Re:python by Cal+Paterson · · Score: 2, Informative

      Hmmm...as someone learning Smalltalk at the moment, I cannot agree with this post. Smalltalk itself is actually relatively straightforward, but actually learning OOP is very difficult indeed. There are tough, abstract concepts here, and OOP has a higher barrier to entry than functional languages (which I learned first) or proceedural languages.

      Additionally, there is only one book currently suitable for learning Smalltalk (Squeak by Example), and while it's a good book and not exceedingly hard, it would assume to much of someone who doesn't already know how to program. There might be a text I don't know of, though.

    25. Re:python by Anonymous Coward · · Score: 0

      http://hacketyhack.net/

      Ruby aimed at kids.

      Useful for getting kids into programming, depending on which end of the teens he is it may be aimed at a group a bit younger than him.

      I agree with the high-level stuff. Web programming is a good way to get them into it because the results are easy to see and you can show your friends.

    26. Re:python by Chatterton · · Score: 1

      Before taking courses in formal programming, you need to hook your subject in programming. For this High level languages are easy to pick-up, with good library to do nearly everything (calculus, graphism, constrain programming, ...). Once the kid is hooked to programming, then you can send him to courses in formal programming where he will have the opportunity to understand why all he have done worked and how it work, fine tune his programming skills, correct his bad behaviors and so on.

      This is what I have done with basic and a book with a lot of sources code of games for my ZX-81. And with 1k memory I got to ASM to put more in my little ram. After that my dad bougth me a book explaining how the Z80 worked and with my uncle (who is electronician) added nearly myself 16k of RAM and a lot of other extensions (beeper, voice synthesizer, logical and analogical IO card and other fun projects). It is true that this last part is nearly impossible on new hardware, but at this time it was 'very' easy with a cutter to cut some wire on the PCB and rewire completely the machine :)

      Then after that I have taken informatics courses whenever I possibly can, learned a lot of other way of programming and languages. And I thank my ZX-81 from which I learned to program and how program worked going to the metal. Unfortunately for my ZX-81, the last extension I tried to add to it signed it's death due to some missing resistors and capacitors says the post-mortem analysis done by my uncle :)

    27. Re:python by tb()ne · · Score: 3, Interesting

      Definitely not. Python is a terrible teaching language. It is often easier to do the wrong thing than the right thing in Python (which makes it okay as a prototyping language). For a first language, you want something where the good solution is also the easiest. Then, when you have learned good practices, you will apply them in any language you learn. I'd still recommend Smalltalk as a good first language. There really is no better environment for learning to code than Squeak at the moment.

      Python is absolutely fine as a first language. It easy to learn, easy to read, and has an interactive interpreter, which makes it easy for a student to quickly test code. It supports most programming styles (OO, functional, etc.), is well documented, and comes with a large standard library of packages with which a newcomer can quickly become productive.

      I don't follow your statement about python making it easier to do the wrong thing. Perhaps you could provide some examples. Also, if you're going to push Smalltalk/Squeak as a first language, what makes it a good candidate as language to learn general programming concepts?

    28. Re:python by Anonymous Coward · · Score: 0

      Whatever you do, don't push him too hard. You just need to be happy and enthusiastic about what *you* do. If you can give him the impression that you have a genuinely enjoyable and interesting profession, he'll naturally be interested in learning more about it.

      The thing is, you can't just "give him Python" and tell him that "it's fun". There will be no incentive for him to learn. He needs to be able to make something that he likes.

      Actually, he's probably best off learning how to program through the web. There's really no better application for him than that. Every teen's on the web somehow, and I'm sure he'd actually LIKE to be able to make some interesting things through PHP or JavaScript. I personally would just give him some simple PHP examples. He can always learn a better language (Python) later on.

    29. Re:python by Kiaser+Zohsay · · Score: 1

      Sure, you might be able to do something with BASIC, but that just means he's going to have to re-learn to program later when he does something "real."

      I disagree. Learning the elements of programming (loops, conditionals, calls, etc.) it what is important. When you move from a simple language to a more robust language, you don't relearn programming, you simply learn new keywords for the concepts you already know. Then you start to learn about what the new language offers (structured types, inheritance, etc.). Starting with a simple language is not "dumbing down", it is the start of a logical progression. The son can then decide for himself when he's ready to move up to a new language.

      --
      I am not your blowing wind, I am the lightning.
    30. Re:python by CastrTroy · · Score: 1

      I don't think I've ever encountered a book that was good at teaching programming. Learning how to program comes from practice. Books don't teach practice. Perhaps a book with a bunch of programming exercises, but it's easy enough to find examples on the web, or come up with problems of your own that you want to solve.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    31. Re:python by Anonymous Coward · · Score: 0

      Seriously, your post shows little knowledge of a teenager. Don't start him on any C based or Java. Start him on a web programing language. Something that he can see results with and share with his friends. I would suggest something like php. Then in a year so him other languages like Java, C#, ASP... The kid will get much farther with it, if he can share it with his friends and not his parents.

    32. Re:python by Anonymous Coward · · Score: 0

      and for the love of god teach him to code securely.. the last thing we need it yet another "coder" who thinks input validation means making sure you have input.

    33. Re:python by woot+account · · Score: 1

      That's no presumpt ion, that's my wife!

    34. Re:python by Eli_Courtwright · · Score: 1

      Specifically, the book "How to Think Like a Computer Scientist: Learning With Python" is freely available online (although it seems to have recently been renamed "Think Python: An Introduction to Software Design". It's an excellent resource for first-time programmers; it starts with "The Way of the Program" and shows how to use the command line interpreter, then gradually moves on to control flow, data structures, building GUIs, etc.

      You can find it at http://www.greenteapress.com/thinkpython/html/

    35. Re:python by Anonymous Coward · · Score: 0

      Ugh. I hate python. My girlfriend's school teaches almost all their programming classes in python, and I can't figure out why. Rather confusing language.

      Personally, I started programming with NQC (A C based language for the Lego Mindstorms RCX), then taught myself a bit of C++ before moving to Java (Because that's what they teach at school).

      But honestly, if he's as lazy as me, just get him into some programming classes at school. I managed to skip the basic ones because of my C++ experience and go straight to two AP classes, after which I took another Java class and a class on Assembly at the local college...both of which I got into rather cheap because the school had a dual-enrollment program with the college. I also only had to take half a day at the high school. Might be something to look into as well.

    36. Re:python by Daniel+Dvorkin · · Score: 1

      Don't teach him anything, its better if he sits down and learns it himself.

      There are so many beginner pitfalls out there that online tutorials and such will fail to mention, he may well learn to program, but he won't learn to program well. I've worked with a fair number of self-taught programmers over the years, and while many of them produce good work in a number of ways, they always have huge gaps on their knowledge. Learning from a good teacher -- whether in a classroom or one-to-one -- helps avoid many of the pitfalls and teaches the student how to "know what they don't know," i.e. see the gaps in knowledge and fill them in. This kid has a great opportunity, and the "do it yourself, kid" approach would be a terrible waste.

      --
      The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
    37. Re:python by garett_spencley · · Score: 1

      Absolutely. I was entirely self-taught but I spent much of teens looking for an experienced adult programmer who could mentor me. Learning on your own is something you do either way when studying most things. You can't be with your mentor 24/7, after all. And if your mentor does everything for you then you're not learning anything anyway. Point being that learning anything is a always personal endeavour, but it still never hurts to have someone give you suggestions, point you in new directions and tell you what you're doing right and what you're doing wrong etc.

    38. Re:python by Anonymous Coward · · Score: 2, Insightful

      By all means, what the previous poster said. Spending time with your son is the most valuable gift you can give him, regardless of the language you think he should learn. Pick a language, buy a For Dummies book, and spend quality time with your progeny. Even if he decides that he hates programming after a year, he will still take away the time spent you as well-spent.

    39. Re:python by anaesthetica · · Score: 1

      ALL THESE [languages] ARE YOURS EXCEPT [python]. ATTEMPT NO [hello world] THERE.

    40. Re:python by TheoMurpse · · Score: 1

      I found Deitel and Deitel's C++ book to be good when I was in high school. I took a college C++ class while a sophomore in high school, and that's the book we used. A programmatically-oriented high school kid found the book instructive, at least.

      Although we didn't make it much past operator overloading...

    41. Re:python by Olix · · Score: 1

      Depends on the type of Teenager. The geekier ones do not necessarily subscribe to the "Myspace Generation" thing.

    42. Re:python by Anonymous Coward · · Score: 0

      If your kid has a cell phone, show him how to write programs for it. If it does Java, have him learn Java. Having a program you've written running on something you use every day would be cool. It's also something you could give to your friends. Java can also be translated into a web page applet. This approach shows the utility of a language.

    43. Re:python by Anonymous Coward · · Score: 0

      The correct answer would be Processing then. Easy to get started and get something visible onscreen. Or hell, even Blitz Basic.

    44. Re:python by Anonymous Coward · · Score: 0

      i think wht you have suggested is a good idea

    45. Re:python by bargainsale · · Score: 1

      I think it depends on where you're starting from.

      I've always had a soft spot for K&R, and found it very useful when first learning C after having played a lot with Basic.

      But I very much agree it would be a bad first programming book: it presupposes you know how to program, but don't know C yet.
      But then, I agree with practically everybody above that C is not a good place to start with programming, anyway.
      Best to start with something that does a lot more hand-holding, and then come to C/C++ when you want enough rope to shoot yourself in the foot, i.e. when you're ready for a language in which you can do anything the hardware can do.

      At some point every programmer needs to learn C at least a bit, even if they never write a non-trivial program in it, because it's the best way to get to grips with what's really going on at ground level. Even if you never use an explicit pointer, you need to understand the concept, for example, and C is good for that.

      --
      Aberrations have appeared in my destiny prognostication engine!
    46. Re:python by Anonymous Coward · · Score: 0

      I think you can dig up old AP tests or at least the texts to learn the AP tests. Older ones were in C++, newer in Java. It covers everything from "Hello World" to how to manage a class that simulates fish (in my year. circa 2001). Not a bad resource to start with, and free from your local library!

    47. Re:python by Terrasque · · Score: 1

      Yes, Python (or a similar high level language - ruby, or even lua (which is used in many games, giving instant appeal) ) is perfect. Personally, I'm familiar with python, so that's what resources I will use in this post.

      First of all : Think Python (http://www.greenteapress.com/thinkpython/) - An intro to computer programming, focusing on python.
      Then PyGame (http://www.pygame.org/) - a good framework for making small games in python.
      If web is more his deal rather than gaming, check out the Django framework (http://www.djangoproject.com/).

      For gui you have wxWindows (or what its called now), and Boa Constructor, a cross platform RAD GUI python thingy (was quite buggy on non-windows when I tried it a few years ago, but could be pretty good now).

      These links are my favorite python'ishies, and I think they would be a good start.

      The thing with python is that its cross platform, so if he write a small game or something, he can easily show it to his friends, no matter what he made the game on, and what they're running :)

      --
      It's The Golden Rule: "He who has the gold makes the rules."
    48. Re:python by Anonymous Coward · · Score: 0

      best advise I've heard in a dog's age.. if we could only mod higher than a 5; you'd deserve it.

    49. Re:python by h4ck7h3p14n37 · · Score: 1

      IMHO the father screwed up by waiting until the kid was a teenager. I started programming computers when I was five; I would have killed to have a parent that could have mentored me instead of having to teach myself from books and magazines (no Internet back then, but there was RAINBOW and some Apple(?) rag that I can't recall the name to, I just remember they had an issue about computer graphics that talked about the Don Bluth games and Tron).

      I got my start with computers in my school district's gifted program (Illinois district #66 FTW); this was back in 1982 and Apple had donated a bunch of equipment (thank you!!!). My Mom was a teacher so she was able to bring a computer home for the summer. I spent a lot of my early years working on the computers at the local library during the school year and then working at home over the summer. I got some pirated games from the high schoolers that also used the library's lab and I spent a lot of time going through some BASIC programming texts (up through peek/poke IIRC). I also played with LOGO quite a bit. At about the same time, my Dad picked up a TRS-80 from Radio Shack and I learned how to operate that system as well (gotta love the cassette tapes).

      At the time I was really into video games since my Mom had bought me an Atari 2600 for Christmas (and later, the 5200); don't ask me how a five year-old knows to ask for an Atari. I was also into those choose your own adventure books and started writing my own (admittedly primitive) text adventure games.

      I attended high school at the Illinois Math and Science Academy. Once again fortune smiled upon me and the school had a UNIX lab (SunOS) and access to the Internet(!). I got turned on to news groups and discovered Phrack Magazine; that taught me some cool things, but also got me in some trouble. I eventually moved on to the University where I studied CS in the department of Engineering with a focus on computer architecture and operating systems. I had pretty much known from an early age that I wanted to program computers for a living and it was more than a little strange to realize that not everyone at college knew absolutely what they wanted to do.

      Now that you know how I got excited about computers, I suppose my advice would be to focus on encouraging your son to keep at it and not focus on the fact that they might not yet have the background/ability to take on some of the projects that they want to do. Also, try to find some non-computer interest that can be expanded to include computers.

    50. Re:python by Anonymous Coward · · Score: 0

      Web design is a good place to start if you're concerned about boring him. It's something for which me might be able to find immediate applications, a domain in which he could easily use his skills to get jobs at a point in his life where few other legitimate jobs are avilable (working at the local grocery store or fast food joint doesn't qualify as legitimate), and if you get him into javascript, could easily teach him the basics of programming.

      Alternatively, but perhaps not that great of an idea, you could just use hacking as a vehicle to teach him things. Most people find hacking interesting at some level, and in the process of learning how to hack you could teach him c, various scripting languages, networking, etc. Show him how buffer overflows work, teach him how to do cool stuff with wireshark etc. The only concern is he might end up in trouble with the law if he starts hacking other people when you're not watching. On the flip side it could very easily get him into using linux. If you push him towards linux from scratch or gentoo when this happens it'll just be a slippery slope until he's become a self taught wiz in everything computer related, programming included.

    51. Re:python by brian.stinar · · Score: 1

      I agree with your comment regarding his motivation. If I were in your situation, I would try and keep that motivation by making it fun through showing interest in his progress and giving him a lot of positive feedback. I don't think the details of the language, method or any of the other aspects are as important as making sure it is fun for both of you. You might be able to pick up some books on being an effective teacher, but it sounds like with your skills you will not have an issue as long as you keep the fun part in focus.

      When my father taught me about different things (wood working, tile, electrical work) that is the approach he took. My dad is a busy physician, but always enjoyed taking the time to teach me about different projects like that. I'm glad he did.

            -Brian J. Stinar-

    52. Re:python by socalsteve · · Score: 1

      Forbid him to learn python. Then he'll do it himself to spite you.

      Great suggestion but that only works with alcoholics!

    53. Re:python by Anonymous Coward · · Score: 0

      Dawson, M. "Python Programming for the absolute beginner" ISBN 1-59863-112-8

      Nice book with games. Ideal for kids and adults.

    54. Re:python by Anonymous Coward · · Score: 0

      Or give him an 8051 dev board and an instruction set, and have him develeop progressively more complex projects in assembly. It's small enough that no manuals or tutorials are needed, and it really gets you into the habit of writing bug free code, because debugging is a pain.
      Then give him python and his mind will just blow. (This is my story, I learned python with "How to think like a computer scientist" and the python challenge. After these two, everything else is just in the middle. Except LISP, but python's functional aspects help getting started, and the python challenge has several good examples of functional code)

    55. Re:python by xalorous · · Score: 1

      I had similar experiences with gifted class (1 hour a week while everyone else did something else...forget what). We had the Commodore CBM and PET machines in our school's library in the early 80s. We had an Atari then I got a TRS-80 (wanted a C64). So I learned programming in BASIC using goto's. There's a lot to be said for something like BASIC. Extremely simple language and syntax, so you have to write subroutines to do almost everything beyond basic math. Of course in college I studied FORTRAN then used C in a couple of math classes (though we only modified the instructor's code).

      Problem is that during my teen years, I did no programming (more interested in other activities, especially the social kind involving girls.) I did just a bit during high school with Apple IIg's. BUt for 5 years or so I did nothing.

      FORTRAN in college was a matter of logical thinking and organizing the process. If you can diagram it, you can code it. I learned diagramming and pseudocode.

      And then I stopped.

      Until years later when I decided I wanted to write programs again. Now it's all complicated. I've tried multiple times to get back into it. Primarily using C++, (visual c++ 6.0 then again with the newer express modules.)

      Bottom line, I was not involved in programming during my teens, even though it is something that I am good at and get enjoyment from doing. If my dad had been skilled at it and shown interest in working on it with me, I might be a professional programmer right now. Instead of a lowly IT guy.

      --
      TANSTAAFL GIGO Acronyms to live by!
  4. No, it is still correct. by Corporate+Troll · · Score: 2, Insightful

    Your approach is still correct. The point and click gives results fast, but doesn't actually teach you anything. If he find the basics, boring, don't even bother anymore. Programming isn't for him.

    Heck, I can say that programming for me became boring the day I started doing it professionally. I would rather direct my son in a completely orthogonal direction.

    1. Re:No, it is still correct. by jank1887 · · Score: 2, Insightful

      heh, he said orthogonal

      I would recommend you pick up some sort of embedded logic kit. Something, anything, that translates code into real world manipulation. Even if it just winds up being a fancy digital clock kit, the fact that he can write some code and see something physical happen can completely enamor a kid.

      I'm saying this from the perspective of an engineer. Circuit theory class was one thing. But when we could controllably vary the intensity of a lightbulb, and then in digital logic class pattern an LED array, and then in electronics move a robotic arm... etc. Things like that made the theory 'real'. Simple algorithms in a microcontroller producing sensible output can help make programming more than just words on a screen.

      I'm a bit out of touch with what's available, however. I know there are a number of LEGO kits (mindstorm or something?) that let you do things like this. Get a starter kit, give the kid a challenge, and tell him if he accomplishes 'X', you'll buy him a bigger set.

    2. Re:No, it is still correct. by Corporate+Troll · · Score: 1

      What's wrong with orthogonal? English isn't exactly my first language, so I might have misspelled/misused it...

    3. Re:No, it is still correct. by Zerth · · Score: 1

      You used it correctly, although someone with a smaller vocabulary would have said "completely different".

    4. Re:No, it is still correct. by SimBuddha · · Score: 1

      As a programmer and parent of three kids and step parent to two others, I recommend a few things that I have exposed kids to with positive effect.

      The Torque Game Builder is a fun system.
      Scratch is also very cool.
      Of course the Lego system is great fun and a good starting point for programming and robotics.
      Blitz Basic is also a fun system to learn on.

      The problem with todays state of technology is that kids see massively complex video games made by huge teams at great cost and their efforts seem trivial and boring, so working the robotic real world angle helps differentiate their efforts.

      The real trick to getting a young person to become a competent programmer is persistence of ongoing projects. Like speaking a foreign language, progreamming is something you use or loose...

  5. More info by Hognoxious · · Score: 1

    I don't know what your family situation is (indeed, I don't know if your his mother or father) but is the other parent any good at teaching?

    I'd say let him try out a few high level languages where he can build simple programs that at least do something quickly - he could get bored with the details of C - and see which suits him. Help him out if and only if he gets stuck. If he reaches the limits of that language then maybe it's time to indtroduce C or assembler.

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    1. Re:More info by Mayhem178 · · Score: 1

      It's distressing how, after the article asks for help on how to teach his son, all of the posters jump into the fray lauding their language of choice, which doesn't answer the posed question in any way, shape, or form.

      It sounds to me like you are missing some of the basic fundamentals of software development as well, if you are, as you said, incapable of writing even halfway passable documentation. So my suggestion to you is to learn with your son. There is no faster way to teach someone than to share in their learning experience.

      Ignore all of these people blindly suggesting one language or another. Language, platform....these things are NOT good starting points for learning to program; rather, they are a means to an end. The first thing you should do is find out what your son is interested in doing with programming. Does he want to make video games? Does he want to make web pages? Is he interested in any particular kind of application of software (medical devices, automobiles, lab work, etc.)?

      If his learning doesn't allow him to do something he's interested in, you'll find yourself meeting resistance, and he'll probably not want to continue. Start by finding out what he's interested in, then allow his development as a programmer evolve from there. And learn a few things along the way for yourself!

      --

      "You will pay for your lack of vision..." - Emperor Palpatine to Ray Charles

    2. Re:More info by Hognoxious · · Score: 1

      It sounds to me like you are missing some of the basic fundamentals of software development as well

      I'd like to know on what grounds you make that assumption.

      if you are, as you said, incapable of writing even halfway passable documentation.

      Why would I say that when it's not true?

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    3. Re:More info by Mayhem178 · · Score: 1

      I'm replying to the article, not you.

      --

      "You will pay for your lack of vision..." - Emperor Palpatine to Ray Charles

    4. Re:More info by Hognoxious · · Score: 1

      Well the evidence of my own eyes when I backtrack using the 'parent' button, plus the slashdot messaging system, seem to indicate to the contrary.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  6. Write a game by gsslay · · Score: 4, Insightful

    Write a game, perhaps based on a favourite book. Or something that involves a subject he's already interested. Doesn't matter if it's a simple text game. Let him write it on his own. Then when he's finished suggest a few improvements. Repeat. Once he's bored with that, start a new project.

    That's how I learnt.

    And for pity sake, do not ask him to kernel hack. It's way too abstract. You need something user-level with immediate and very visible results.

    1. Re:Write a game by Anonymous Coward · · Score: 5, Interesting

      I'll second that. Many of us learned on 8-bit home computers, where you could understand everything that was going on, and we made games. Brilliant self education.

      The best way of doing that now is with the Hydra console. The hardware is completely documented and described at the beginner level in the book. And there is no OS or APIs to deal with, disguising what's really going on. You code straight to the bare metal.

    2. Re:Write a game by Anonymous Coward · · Score: 0

      or just let him have a look at

      http://infon.dividuum.de/

      its a program-your-creature thingy... if he's grown up, tell him he's into multi-agent-simulation and ai
      worked great for a couple of budies of mine
      greeets
      kazamatzuri
      ----------
      http://blog.submerged-intelligence.de

    3. Re:Write a game by dreamchaser · · Score: 1

      Great suggestion. I wrote my first game in BASIC on a Trash 80 way back when. All text of course.

      I would also suggest not forcing any particular platform/OS on the kid. Expose him to several if possible and explain the pros and cons as you see them. Then let him make his own choices.

    4. Re:Write a game by dkf · · Score: 2, Interesting

      Doesn't matter if it's a simple text game.

      It's better if it is. Fewer moving parts, much easier to see what's going on.

      A pretty good one to start with is a number guessing game. Teaches about control structures, IO, state and validation of input. Go from there on to something like the Animal Game. You can use that to teach about decision trees and persistence. And that covers a very large fraction of the foundation of computing.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    5. Re:Write a game by Stormmind · · Score: 1

      Indeed, this is how my dad encouraged me. We wrote Game of Life in Basic together. Visual stuff is very rewarding when programming - I wrote a lot of animations in Basic which was a lot of fun. In python or C there are probably good libraries that you could make a wrapper around and make it easy to draw and animate things.

    6. Re:Write a game by thegrassyknowl · · Score: 3, Interesting

      My first (memorable) program was written with my dad on the C64. He's not a programmer, but we got a C64 when I was about 4 or 5 and I was keen to know all there was to know about it.

      He started reading magazines and got some books that taught him the basics then we'd spend time together building basic (pun intended) things. The first one that did anything memorable was a christmas tree on the screen complete with a flashing light on the top.

      It was all downhill from there. Once the basics are in place more and more advanced things follow. Soon you've outgrown your interpreted language and are sitting at the machine level to make it do things fast enough.

      Of course, back then it was all very easy. The 8-bit machines only had a handful of opcodes and a small amount of unmanaged memory (well the C64 had a ROM bank that you could cut out if you needed the RAM it shadowed). To make graphics it was a simple matter of poking in a few registers and then writing to the graphics memory directly.

      There was no pesky OS or memory management getting in your way. The machine also wasn't very fast, so to do cool things you had to learn about interrupt driven events, 'multi tasking', and designing for optimisation from the start.

      These days learning programming like that is nigh-on impossible. The OS hides the machine from you and presents a not-so-neat interface to all the hardware. The machine is fast so there is never any real desire to optimise and programmers aren't learning good principles for it.

      If the GP's teenage son is really interested in learning programming perhaps a small microcontroller project would be a good place to start. PICs and AVR cores are quite simple to implement and program. Investigate a development kit instead of diving into programming the PC.

      --
      I drink to make other people interesting!
    7. Re:Write a game by Jesus_666 · · Score: 2, Insightful

      If the GP's teenage son is really interested in learning programming perhaps a small microcontroller project would be a good place to start. PICs and AVR cores are quite simple to implement and program. Investigate a development kit instead of diving into programming the PC.

      If he's also interested in electronics you can get a small Atmel and the neccessary components and build your own Lego Mindstorms workalike. Low-level programming and electronics sure sound interesting to a geeky kid if they allow him to build his own autonomous robot. Plus, he learns how to use a soldering iron, a skill I would dare call essential.

      --
      USE HOT GRITS WITH STATUE OF NATALIE PORTMAN (NAKED AND PETRIFIED)
    8. Re:Write a game by ewrong · · Score: 1

      "You need something user-level with immediate and very visible results"

      I'd agree with that, start them out with something that is relatively "simple" and instantly cratifying such as JavaScript, PHP or ActionScript perhaps? At that level it's all about getting used to writing code, getting a grip on some of the logic and experimenting a bit. For god's sake leave the kernel hacking until later.

    9. Re:Write a game by Anonymous Coward · · Score: 0

      I started writing adventure games, copying them from books filled with lines of gw-basic (on a trs-dos tandy). There were no other games around, really.. and muds only came later :).

      Later on I moved towards Agent-based models (age 15?).. having cow-dots eating grass-dots and being eaten by wolf-dots, and the whole thing moving across my screen. qbasic had an array limit of 10.000 animals though :(.

      Also made a chopper flying and bombing game in qbasic.. was fun too.

      Not sure if those strategies still work on kids these days, but programming games beats 'hello world'.

      @ a post below, from Destrius (956). Ohh. yes, graphics.. having bouncing balls that started in the shape of your name.. trying to make fire like used in the demo scene. Those things were cool to try. Good memories.

    10. Re:Write a game by khakipuce · · Score: 1
      But only if he is into games...

      One of the first things I ever programmed off my own initiative was a "striaght line curve" program. At the time making these from string with nails in a board was a bit of a fad. Replicating this on a Spectrum was easy becase is just needed a couple of loops and a line drawing command. Quick, simple but very effective.

      Point is: find something that really grabs his attention that gives quick results. May be better to build a robot, little C programmable micro controllers are really cheap and a few lines of code can make an LED Flash. Swap the LED for a couple of motor controllers and a few more lines of code can make a robot go forwards, backwards and turn. The you can add sensors etc. The point is that it gives very quick results that can be built upon easily.

      --
      Art is the mathematics of emotion
    11. Re:Write a game by fprintf · · Score: 1

      I think you will find the interest in text based games is very different for the current teenage crowd than it was for most of us in the early 80s. Our text based games were a) all we could reasonably code and b) we hadn't seen what was really possible with computers yet.

      Take it from a teenagers perspective, like my 12 year old who has played portal, unreal tournament, Lego star wars, you name it. Programming or playing a text based game will be fun for a little while, but honestly there will be a point where he'll ask what the point is, and then the gap between what a single, beginner programmer can do and a full development team of game writers can do.

      My son and I had this very same conversation this weekend. He has always said he wants to be a doctor, and is brilliant at his school work (way better than I was). Now he said he might be interested in something technology related, so I described a few careers and ways of starting out... and downloaded Python to teach myself so that I can give him a positive start if that is what he wants to do. Knowing him, and many other kids, "simple" programming won't have much draw unless it relates to their own experience, and that might mean *gasp* giving him Visual Basic since he has spent so much time in Windows, at home and at school.

      Sorry for the ramble. My point is, text based games might have held our rapt attention back when we had Apple ]['s in school, and Atari 800XLs at home, but nowadays I think it has to be more.

      --
      This post brought to you by your friendly neighborhood MBA.
    12. Re:Write a game by Hemogoblin · · Score: 1

      My first ever program was written in Basic: it had a simple prompt to enter your name, output "Hello &name", and then had the screen flash hundreds of different colours to try and give you a seisure. It was my finest work.

      Though seriously, the best fun I ever had was programming my own text adventure. When I wanted to add new features, I HAD to learn more. Best high-school programming class ever.

    13. Re:Write a game by harry666t · · Score: 1

      This is almost exactly how I have encouraged my sister to start toying with Python.

      She loves fantasy, role playing games, reading books, etc, and a few years ago she discovered a SUD (Single User Dungeon, single player MUD, text adventure, whatever you call it), namely Otchlan (polish for "abyss"). The game is almost dead now (the author announced that further development will cease, and the game isn't OSS), so she is seeing a potential in having an ability to write and maintain her own game like that - especially since I've showed her one example of how easy it is to create a simple text adventure. At the moment we've teamed up and are working on a small SUD - I've started coding the engine, she's drawing maps of cities and countries to be later added to the game, but we often lurk into each other's work and exchange thoughts and ideas.

      By the way, SUDs and MUDs can greatly help overcoming the fear of using Unix CLI - for example, you show someone that "less readme.txt" isn't much different from "read sign".

    14. Re:Write a game by Lumpy · · Score: 1

      http://wiki.gp2x.org/wiki/Main_Page

      Another Open game platform.

      --
      Do not look at laser with remaining good eye.
    15. Re:Write a game by Anonymous Coward · · Score: 0

      Try Robocode. Write Java code to control a tank to try and make it drive around and shoot at other tanks! The two of you could learn it together. You'd probably already understand the structural elements and could help him to see how to put the program together but you could both come up with ideas for movement routines and targeting algorithms!

      http://robocode.sourceforge.net/

    16. Re:Write a game by grvydude · · Score: 1

      This is how I learned, well actually making a tool to create characters, manage characters, and yadda yadda for D&D. Did it in basic, way back when (god I can't believe it was so long ago). I pretty much self taught myself, used books, though the net has plenty of nice guides and tutorials to work with. Also Java/JS isn't a bad place to play with since it is really easy to use.

    17. Re:Write a game by Anonymous Coward · · Score: 0

      I've just finished a class on game design where we used Gamemaker.

      It was ridiculously easy to use and was lots of fun (even if it is a winodws app).It not only teaches how to make games, but is a great intro to basic programming concepts such as variables, branching, loops, events and functions. There are tutorials you could try with your son.

    18. Re:Write a game by jon_adair · · Score: 1
      I started with 8-bits like the Atari 400 and C-64, but I don't think typing in BASIC games (or pages and pages of hex dumps) from a magazine works for kids today. Then I moved on to Turbo Pascal and like everyone else in the late 80s, wrote a Tetris game. Then things like C-robots and TinyMUD got me going in C.

      These days, I'd point a kid to something like Microsoft XNA or Silverlight games, using free downloads of Visual Studio Express. Java games, especially for mobile, might be interesting too, but the Microsoft stuff is a little more kid-friendly.

    19. Re:Write a game by jez9999 · · Score: 1

      That animal game is crap. I gave it appropriate answers for 'kangaroo' and it didn't guess it.

    20. Re:Write a game by Yazeran · · Score: 1

      Yep, That's the way to do it.

      My introduction to computer programming was in the form of a few games written in GW-BASIC on my dad's 8086 PC running DOS.

      When I got bored playing those i got curious and looked a bit on how they were made and my dad explained a bit about programming and after that I started creating a few games (think of simple pacman clones) and gradually expanded from there. From that I learned some very important lessons (notably that i really wold have liked local variables in functions, something GW-BASIC didn't have, as well as avoiding calling variables x1,x2,x3,x4..... :-)

      Yours Yazeran

      Plan: To go to Mars one day with a hammer.

    21. Re:Write a game by Anonymous Coward · · Score: 0

      Try Scratch. It's a far cry from "true programming" but its a fun and gentle way to introduce someone to very basic programming ideas. The fact that he'll be able to knock up a basic game in about 15 minutes which he can show off to his friends will be rewarding. I've been using this at school with a few of my year 7 students and they love it. They are able to play with their scripts without the fear of syntax errors or the whole thing blowing up in their faces. This means they are able to learn from experimentation.

      After a few days / weeks he may become bored with Scratch and that is the time to consider stepping him into the world of "real programming".

      http://scratch.mit.edu/

    22. Re:Write a game by Anonymous Coward · · Score: 0

      Ill third that.

      What really got me into coding back then was curiosity. Now, just how do you get those pixels and pictures onto the screen and even move them?

      Thats what really got me into pascal and assembler, all those registers and the video memory at 0xA000.

      Well, probably you want need to go that low level nowadays. Probably something like SDL should be a neat library to play with. That way he will have some early sense of achievement and will start asking you why this and that works that way in C/C++. Dont teach, inspire and answer questions. Works better every time.

    23. Re:Write a game by Anonymous Coward · · Score: 0

      Completely agree on this, but unfortunately games nowadays aren't the same as games back then. If it's not got 3d graphics, or at-least graphics of some sort, then the chances are he won't be impressed.

      The problem is, of course, that making 3d games requires what university-level maths. Okay, you can learn it early, but unless your son has already taken this interest then I doubt sitting a maths textbook 7-9 years beyond what he's doing at school will impress him.

      I personally think that the environment I've seen that most easily links programming and graphics is Adobe Flash. With it, you can easily draw a picture (or import an image) and manipulate its position on the screen with code.

      My own suggestion would thus be to start by downloading the flash demo, and setting him up a simple project for a simple game. Maybe start with a side-scrolling shooter, like R-Type. Start with moving up and down, then shooting, then add an enemy, then make the enemy destroyed when you hit it, then make the enemy craft fire, then make your craft destroyed when the enemy hits you, then add rules for lives, then make a harder enemy, then put multiple enemies together into an actual level.

      From then on, you can introduce more programming concepts as you develop new levels. Add weapons to pick-up that fire spreads of bullets at angles (adding some basic trigonometry), add boss enemies, add explosions and debris that falls to the ground, add a 2-player option so your son can play it with his friends, etc. Most importantly, let your son choose what to add next, but try to organise what he's doing and teach him with examples.

      If you don't want to use flash, understandable as it's proprietary and doesn't work under Linux, then perhaps Java would be a possibility. If you can do some groundwork, giving him a basic graphics API that'll let him load his choice of image and manipulate it on the screen, then that should work.

      AS (ActionScript, the object-oriented language flash uses) is a more forgiving language, which might be a good thing as it means less 'hunt the missed semicolon' and no pointer problems. Then-again, if you're wanting to drill C-grade coding practices into the boy's head, you might not want that level of forgiveness.

      Another idea for a similar simple-yet-extensible projects might be brick-out. You can add more levels, hard bricks that take 2+ hits, bricks that give powerups or explode, high scores, etc.

    24. Re:Write a game by dkf · · Score: 1

      That animal game is crap. I gave it appropriate answers for 'kangaroo' and it didn't guess it.

      The game is supposed to learn by getting people to tell it new questions, and so is only as good as the answers it's already been told about. But it's that learning ability which makes it interesting from a programming perspective.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    25. Re:Write a game by Anonymous Coward · · Score: 0

      Go to the MIT website and download their free programming language called "scratch". My 9 and 6 year olds are making games and comic books with it, and there was minimal (an hour or two) teaching by me required.

    26. Re:Write a game by Anonymous Coward · · Score: 0

      I agree. If he's a gamer, in particular if he has a console at home, them something like Visual C# Express plus XNA Game Studio will be a great combination. There are even decent book combinations for it, teaching for C# and game programming, and quite a bit of online material.

    27. Re:Write a game by foniksonik · · Score: 1

      I suggest teaching how to program with OpenGL.... immediate gratification while learning to work with a published API... but if you can steer him towards procedural graphics he'll also learn about CS logic switches and for looping statements.

      This will smooth the way towards algorithms. Once he's got a handle on those concepts he can apply it towards anything, graphical or not. You can do pretty much anything in CS with a good mix of logic, loops and algorithms... but the real key is working with published APIS... teach him to not reinvent the wheel and he'll be off to a good start.

      --
      A fool throws a stone into a well and a thousand sages can not remove it.
    28. Re:Write a game by poot_rootbeer · · Score: 1

      The best way of doing that now is with the Hydra console. The hardware is completely documented and described at the beginner level in the book. And there is no OS or APIs to deal with, disguising what's really going on. You code straight to the bare metal.

      What are the benefits of the Hydra -- which has no presence anywhere except as a learning aid, as far as I can tell -- over doing homebrew development for an actual gaming console? Useful development tools exist for every console from the Atari 2600 through the Nintendo DS.

    29. Re:Write a game by Anonymous Coward · · Score: 0

      +=1;

      A game will have the immediate coolness factor that will get him hooked and working with graphics will be lower level than straight UI stuff.

      My old man got me started when I was ten writing a Zork knock-off on a trs-80.

    30. Re:Write a game by Anonymous Coward · · Score: 0

      I agree with giving him something that produces immediate and visible results. I'm currently in College, and the only programming that really sparks my interest since highschool is when I get to make apps with a GUI that I can run on my own computer.

      When writing things like that, to me it's almost as fun as putting together a remote control car or some other similar project.

    31. Re:Write a game by Anonymous Coward · · Score: 0

      "do not ask him to kernel hack. It's way too abstract"

      It's way too concrete.

    32. Re:Write a game by Firehed · · Score: 1

      That's where I started as well.

      However, you should also look into some sort of source control. I once got a panicked call from a friend with the very unpleasant news that he'd accidentally run 'rm -f *.c' instead of 'rm -f *.o' for a clean make. I suppose that's as clean of a make as one can perform... but that really sucked.

      That said, nearly ten years on (holy shit, it's been a while), I still suck at source control. I only set up a svn repo last week and still have no idea how to use it *roll eyes*.

      --
      How are sites slashdotted when nobody reads TFAs?
    33. Re:Write a game by CrazedSanity · · Score: 1

      Oh, back in the day... I remember sitting at school, typing out BASIC code on the Apple IIe, working on my final project. It was an "awesome" graphical space game. Of course, the entirety of the game consisted of choosing whether to shoot the alien space ship or not (shooting wins and blows up the ship, not shooting loses and gets your spaceship destroyed). Oh, the fun of drawing pixel-by-pixel.

      --
      Sanity is like a condom: rather have it and not need it, than need it and not have it.
    34. Re:Write a game by Anonymous Coward · · Score: 0

      I strongly agree that this is the way to go. It's the only thing I do when I'm learning to write code and learning programming languages. The games I make are rarely interesting but it's better than writing a stock control system or something. It gives you something that you might actually use and gives the possibility of extending it if you want.

    35. Re:Write a game by Krater76 · · Score: 1

      A game is definitely the way to go. Kids play games on the computer so they naturally know that programming is required to make a game. A Tetris clone made with a simple C library will really start him on the right track. My intro programming class in college (good old CS150) used C - How To Program but I didn't realize how much it cost ($110!). You can get a used earlier edition for cheap or maybe you could find it at a library.

      One of my favorite quotes I heard when in college (I know not from whom):
      "No one goes into programming with the dream of making the next great spreadsheet. They go in to make the next great game."

      --
      "Is life so dear, or peace so sweet, as to be purchased at the price of chains and slavery?" - Patrick Henry
    36. Re:Write a game by Thiez · · Score: 1

      I gave that thing a try, only to find out that I hate Lua. That's a shame, since I really liked the way those creature-thingies moved on a screen.

    37. Re:Write a game by schebro · · Score: 1

      This approach is very good. That definitely sparks a curiosity in him to know how computers really work. The first thing that interested me in programming is printing a pascal's triangle on the screen ;). Teach him something very interesting that computers can do efficiently like various sorting algorithms and such.

    38. Re:Write a game by cptdondo · · Score: 1

      Things are pretty hazy, but I think this may be the first game I wrote.... ISTR working on the code; maybe I got it from somewhere first and moded it. Or maybe this is the original code without my mods...

      http://www.pdp8online.com/pdp8cgi/os8_html/GUNNER.30?act=file;fn=images/os8/edu30.tu56;blk=283,3,0;to=auto/

      Anyway, it doesn't have to be too complex to be fun. This game got so popular that the powers than be prohibited its use as it consumed prodigious quantities of paper.

    39. Re:Write a game by 32771 · · Score: 1

      I agree with this a lot. Nowadays the connectivity of a micro controller is much better than my C64 ever had. All those ad converter and GPIO pins just beat those pathetic game controller ports. Also they are easily extensible through ports like I2C which is pretty much kid friendly with its four lines, nothing like this C64 extension port.

      Just make sure that uC doesn't have banked register files, switching register banks is a pain you needn't inflict upon your kid.

      --
      Je me souviens.
    40. Re:Write a game by I'm+not+really+here · · Score: 1

      I also learned by writing a game. It was in basic. When I say I "wrote" a game, I mean that at 6 years old I copied a BASIC game, line by line, out of the BASIC programming book my dad made sure was on the bottom shelf and available to me.

      My dad did not push me into it, but what he did that caught my interest was that he went to a garage sale, found a used AT&T 8086 in working order, and brought it home. He said "This is your computer. You can take it apart, but you have to put it back together yourself. You can install anything you can figure out how to install. I've installed DOS on there, and BASIC, a program that lets you make other programs. If you have questions, let me know, and I'll try to help."

      I sat there for days reading the book, trying to understand it, and if I asked my dad a question, he said "what does the book say about it?" If I answered with at least some details, he would help fill in the rest - this forced me to find at least something before I asked for help.

      When I finally understood enough to basically (pun intended) know how BASIC worked, I copied the program line by line. When I ran it, it broke (the book, I found out later, purposely had 4 errors which would be easy to find and correct), and my dad said at this point that he would not assist, but that he believed I was more than able to figure it out.

      I did, and I really appreciate my dad's method of helping as little as was needed, as it pushed me to learn it on my own.

      Don't force it, but do encourage it. The gift of a computer that would be my own (no matter how crappy the computer was) was enough to make my eyes like saucers (my dad's recollection of the events describe them as such), and made me feel responsible for understanding how all of the parts worked and how to make the software work. When I grew bored with the game, I wrote a digital clock application and left it running until the computer finally died.

      Sorry for the rambling meander down memory lane, but those memories are really powerfully strong to me, and were the foundation of all my later computer skills, so I felt them worth mentioning.

      --
      Before commenting on the Bible, please read it first
    41. Re:Write a game by Anonymous Coward · · Score: 0

      Read about the Hydra Console in the post you replied to. It absolutely gives everything you mention. It is a microcontroller development kit, but one specifically targetted at making games.

    42. Re:Write a game by gsslay · · Score: 1

      we hadn't seen what was really possible with computers yet.

      By that logic, neither have current teenagers.

      Of course text based games are way simpler than what they can play on their PS3. But that's not really the point. It'll be their text based game. Same way a child's first drawing is way simpler than Pixar's Wall-E. That isn't a reason to not draw another.

  7. SDL by Anonymous Coward · · Score: 0

    I recommend having a look at SDL. It's an easy-to-use multi-media library that is suitable for 2D gaming. Graphics and sounds are very encouraging and game programming can be technically challenging, too. If SDL is mastered and enjoyed, there is always OpenGL.

    XNA is also something to consider.

    1. Re:SDL by LingNoi · · Score: 1

      I disagree with SDL. pyglet would be a much better idea.

  8. Game programming by dvice_null · · Score: 1

    Teach about game programming. E.g. show how to draw simple graphics using libSDL and then perhaps give hints how the graphics could be moved etc.

    I started programming myself, because I wanted to write games. I've been programming for 10 years and I still write games on my free time.

    1. Re:Game programming by FoboldFKY · · Score: 1

      I'd actually say: teach him how to do in-game mod programming. It allows him to make something that has graphics and sound without having to actually learn how to do graphics and sound just yet.

      A good example is World of Warcraft. Lua is pretty easy to pick up, and he can make little graphical toys or try simple automation. Maybe start with the WowLua addon (which adds an interactive Lua interpreter to the game) and perhaps the TinyPad addon which lets him write small scripts and run them from within the game.

      Failing that, there's always Logo. :P

      --
      We're geeks... We're the sorcerers of the modern-day world. --
    2. Re:Game programming by Anonymous Coward · · Score: 0

      I don't think this is a good idea. I speak from experience because I tried to teach someone Lua so they could write WoW addons. I failed for at least two reasons:

      • Lua is pretty awful as a beginning language. There aren't that many built in features. The type conversion is very confusing. This makes it hard to write simple demo programs and explain how they work.
      • Mod programming inevitably involves working with the API of the game; in the mind of the beginner, this will become confused with the features of the language, and this will ultimately be unhelpful. Especially as Blizzard will change the API at random intervals.

      Other games would be even worse, since they will require C programming or something unspeakably bad like QuakeC. You *would* be better off teaching Logo.

      The best option is to teach Python, then import pygame.

    3. Re:Game programming by Anonymous Coward · · Score: 0

      Teach about game programming. E.g. show how to draw simple graphics using libSDL and then perhaps give hints how the graphics could be moved etc.

      My introduction to graphics programming came from Mad Magazine. The issue had a set of datapoints (v,w for the beginning of the line, x,y for the end of the line). Each quad defined the beginning and end of a single line. The final product (in BASIC) was a picture of Alfred E. Neuman.

      The first thing I noticed was that each line was duplicated one pixel to the right. It took a decent amount of time and study to discover that this technique was to allow for systems that put out composite video to be displayed on a TV screen, which had only half the horizontal resolution of a computer monitor. A single vertical line might or might not show on the TV. But putting two vertical lines adjacent to each other guaranteed that at least one would appear.

      There was a single set of maybe 250 datapoints (250 quads). Numerous BASIC interpreters were in use at the time (IBM, Commodore, Atari, etc.), so the rest of the programming consisted of sets of maybe 10 to 20 lines of BASIC code to normalize the plotting of the one common set of datapoints for each of the BASICs in common use.

      Somehow I got one or more sets typed wrong, so the word MAD at the top was not perfectly formed. But with the start the program gave me, I was able to build some extra subroutines to generate a scale at the bottom of the picture, then add a few delay loops (to slow down the drawing rate) so I could track down where the bad datapoints occurred.

      From there I progressed to a simple programming book on BASIC graphics programming. It started with drawing lines, triangles, boxes and circles and moved on to rotating the figures and moving them in different directions.

  9. Games by Anonymous Coward · · Score: 0

    ...or "toys" like Lego Mindstorms, Robocode, etc. are perfect, if you are willing to invest some time setting him up.

    1. Re:Games by aero2600-5 · · Score: 2, Insightful

      I have to second this one. I got hooked on programming in high school in a class where we had to program robotic Lego sets to do specific things using BASIC. Regardless of what you use to interest him, I would avoid projects longer than 3 months. If kids work at something too long without any reward, they're likely to lose interest.

      --
      Please stop hurting America -- Jon Stewart
    2. Re:Games by irtza · · Score: 2, Funny

      3 months? I lose interest after just a couple of sec

      --
      When all else fails, try.
  10. Show him the Alice by WetCat · · Score: 1

    http://www.alice.org/
    Nice 3d programming tool, and useful too.
    he'll amaze friends!

    1. Re:Show him the Alice by dintech · · Score: 1

      You could also try Dark Basic too. My little brothers seemed to love that.

  11. Do what my father did by TLZ9 · · Score: 1

    Tell him that if you can program you can create games. (Don't mention how hard it is to pull off creating a 3D-game for one person. ) By the time I realized that my father didn't mention how hard it was to create really cool games I was allready interested in programming. ;) btw. You might want to suggest a language for him that more easily makes him able to get instant results. People are going to shoot me for this but something like Python, Java/C# or even *gasp* VB. (On the other hand, if he's enjoying C that's great as well.)

    1. Re:Do what my father did by dvice_null · · Score: 3, Interesting

      IMHO, if he has already started teaching C, then that is what he should use. Not because C is superior language, but because teaching multiple languages will certainly confuse the student.

      I think that C might actually be pretty good language to start with. You have to do a little more work to write something you might be able to write less lines in e.g. Java, but then again it is pretty logical how things work. E.g. first you initialize SDL, then you get the surface where to draw. Then you draw into it, then you display it.

      In Java, you initialize by creating certain classes inherited from certain classes, get the drawing surface as a method parameter for a method, which name must be something special then you draw to it and then it is automatically displayed. Then you have to study API to find out how is it updated.

      I'm not saying that Java is hard to use for experienced programmer, I think it is very easy. A lot easier than C. But IMHO it is harder to understand for someone new to programming. Or even someone new to Java programming.

    2. Re:Do what my father did by Anonymous Coward · · Score: 0

      I agree. I'm a graduate student at Ohio University and when I first started my undergrad, we began with PASCAL (ugh). We only had one class in that to teach the very basics (simple data structures, if-else, while, etc.) and finished up making functions and learning how to do function calls. We made simple text-based programs and created our own 'menus'. The point was to keep it basic. This could easily be done with C/C++ and is currently done with Java here.

      After that we dove into C++ and learned the benefits of OO as we created data structures such as linked lists, trees, etc. Eventually we got into more complex structures and also learned some details about other languages and how they were similar/different from C++. This is where we learned ProLog, Lisp, etc. We also picked up some assembly and did some C in a few other courses. Those courses focused on networking, operating systems, real-time OS, etc. We also learned how to do low level coding and placing assembly into C. When it came time to learn Java, PHP, etc. it was cake.

      There basic philosophy was to teach us all the details with one language and then show us how other languages are similar and different. This way he can learn a new language with ease.

    3. Re:Do what my father did by totally+bogus+dude · · Score: 1

      I reckon this is the approach I'd take. C is simple, low-level enough that you get a good feel for how a computer really works, and similar enough to other languages that a lot of the stuff you learn can be re-used.

      I started with BASIC, which teaches bad habits. You can learn bad habits in C, but you don't have to.

      When I taught myself C, it was purely for writing games. And back then, you had a wonderful VGA framebuffer that you wrote values to and shit appeared on the screen. That was seriously awesome.

      Nowadays, there's a lot of abstraction to allow for hardware acceleration and windowing and multitasking and all that other bullshit you didn't have to think about in DOS. SDL is the closest to "bare metal" you can probably get without making your son think you're making him use primitive computers nobody uses any more. Depending on why he's interested in the first place, this might be important.

      Using SDL you can start really simply as I said before, treating the surface as a simple framebuffer and manipulating it directly. If he's interested in game programming, he's gonna have to learn a lot of math, so teaching him how to draw circles and lines by plotting the pixels manually might be a nice way to make it not seem so horrible. Plus, if you know what every part of the program does (even if it's primitive and your monsters are boxes and the player is a cross) you'll feel more of a sense of accomplishment than if you use some framework that does all the heavy lifting for you.

      The other good thing about SDL is that lots of other people use it and there are lots of libraries to do various forms of heavy lifting, so if it turns out his interest is more casual and even the site of code for drawing antialiased lines makes him lose interest, you can then pull in some useful libraries to do the mundane things and he can still have fun with it.

      Or, if you want to fuck with his head you can just teach him OpenGL and 3D programming from the start. It's likely it'll fry his brain, but if he survives he might become the next John Carmack.

    4. Re:Do what my father did by th3doctor · · Score: 1

      Note: I'm only 20, so hopefully I can give you the perspective you're after.
      I learned C first, then C++, both in High School. It wasn't all that easy for me, but I got the hang of it, and I would recommend C as a first language. C allows you to understand what's going on in the computer, and doesn't do too much handwaving. There also isn't the cognitive overhead of "public static void main(String[] args". Try explaining all of that without losing someone. Now try java.util.Scanner s=new java.util.Scanner(System.in); IMO, Java is a terrible language for beginners. It's overly verbose and the implementation just spews out of every API call at you. I'm a Lab instructor at my college, and I've seen people get very frustrated with Java's little quirks. Confusing a beginner is a great way to get them to quit. C, on the other hand, is much simpler. You can explain that "printf" needs to have a bunch of special code to work that's already been written for you, and you're just "including" it. Then you explain that main is a function (just ignore arguments at first) and the int it returns is whether it had an error or not. I don't understand why C gets such a bad rap as an introductory language. Hello world is a lot shorter in C, and there's less to learn than Java. Sure, some things are hard, like pointers and memory management, but the K&R book is only a couple hundred pages. Java barely fits in a thousand. Which would you rather crack open if you were just starting out? Another benefit of C is that it ties in with Unix and is fairly portable, while not disguising what the machine is doing. For me, learning C first has given me a great advantage. I'm working in industry right now as part of my undergraduate requirements, and it was easy getting the job because I knew C well. Plenty of people went to the interviews knowing Java, but what help is that? I also think knowing C and getting pretty good at it made picking up new languages really easy. When I had to learn Java, I already understood what must be going on behind the scenes for me when I called new(), and found memory management to be unnecessary as I'd been managing my own for years. In any event, I think you're doing a great job already with teaching your son the shell and basic Unix stuff (trust me, it will put him miles ahead if he chooses a career in computer science). Keep up the good work and don't get discouraged. Just tackle one concept at a time, and make sure to give him something to apply it with, like a toy problem. He'll probably be tickled to have something useful that does the Binomial theorem and factorials for him. I know I was.

    5. Re:Do what my father did by adrien.lebury · · Score: 1

      I think C would be a nice starting point. I know he's a teenager, but maybe in some years, if he's still interested in programming, he could learn some theory which will be a good complement to his skills as a programmer. I guess every programmer (whether or not he wants to study computer science), at least should learn the basics of algorithm analysis, theory of programming languages and programming paradigms, and some basics of interpreters and compilers theory. That way he will have enough tools to make an objective decision, rather than subjective preferences for any particular language, when he must choose a programming language in function of the different characteristics the problem he needs to solve. This knowledge and a good technical training on some of the most common programming languages (Java, C, C++, PHP, LISP, Prolog, etc.) will make of him a good programmer, with an integral view point of everything around the computer since the text code written until the machine code run by the processor. :P Cheers. - Edwin.

    6. Re:Do what my father did by Anonymous Coward · · Score: 0

      Initializing SDL may be logical to you, but remember that we're dealing with someone whose experience is mostly as an end-user - he sees pixels on a screen, not the application layers in between.

  12. Start him off here... by blahplusplus · · Score: 4, Informative

    C++ primer plus by stephen prata.

    http://www.amazon.com/Primer-Plus-5th-Stephen-Prata/dp/0672326973/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1216718603&sr=8-1

    It is one of the best ways to learn programming from absolutely knowing nothing! Because it explains in very accurate, precise and simple language that is very well expressed.
    This is where I learned to program years ago, and I'd challenge anyone to find a better place to bring an absolute know nothing about programming into the fold.

    It explains all the simple functions and whatnot for console programming, etc, if he can't dig that then he's not fit to program, the book makes C++ as easy as something as python, or the old visual basic.

    The old visual basic 6 is not a BAD place to start if you can find some good programming books, because the old VB gave "immediate" results that kids often look for.

    1. Re:Start him off here... by Anonymous Coward · · Score: 0

      I've just finished reading C++ Primer Plus and I think what you said is absolutely correct. Of course, if you expect to write Unreal Tournament after reading this book it's gonna be a big disappointment, but if you're interested in programming seriously there's no way around books like this one to start you off with.

    2. Re:Start him off here... by Anonymous Coward · · Score: 0

      For the love of god, *anything* but C++! assembly, fuck it, inputting raw hex with toggle switches would pollute his mind less than C++...

    3. Re:Start him off here... by dargaud · · Score: 4, Insightful
      I don't usually write flaming posts, but C++ as a teaching language ?!? You are smoking crack. It has the worst and most complex syntax of any language ever invented. Even Brainf*ck has a cleaner syntax than C++.

      Wanna teach a language, then take one that's both interpreted and compiled like Python, Lua, Ruby. Take something that is radically efficient like Erlang or OCaml. Take something that is meant for teaching like Logo.

      But C++ ?!? Hah, why not Perl, then !

      --
      Non-Linux Penguins ?
    4. Re:Start him off here... by Anonymous Coward · · Score: 0

      Not such a good idea, for two reasons:

      * While C++ might be the standard in many industries, it is too abstract to get something working quickly. I remember having lots of fun in Basic and Pascal, while C seemed almost magical to me (and had to be fed to some "compiler" before you could run it. Aaargh).

      * Stephen Prata's book is the very first C++ book I got in my hands. Man, am I glad that I got to know better writers and unlearnt all that stuff.

    5. Re:Start him off here... by LM741N · · Score: 1

      If you want him to learn object oriented programming, I would suggest Python (Java as a second choice). Python is how I learned the meaning and usefulness of OO programming, mainly because it was not as arcane as C++, and not strongly typed as Java.

    6. Re:Start him off here... by barzok · · Score: 1

      The old visual basic 6 is not a BAD place to start if you can find some good programming books, because the old VB gave "immediate" results that kids often look for.

      VB6 encourages so many bad practices, protects the user from so many errors they should be learning from, and the language & syntax are so "loose" that I consider it poison for the mind if you have any desire to move on to other languages.

    7. Re:Start him off here... by Anonymous Coward · · Score: 0

      Sigh. Don't infect him C++ just yet. Go C.

    8. Re:Start him off here... by Anonymous Coward · · Score: 0

      Actually, having read that myself, I find that, while it does give quite a bit of helpful information, it really fails to give in-depth explanations of WHY certain tools are used, at least while they're being explained. For instance, pointers are initially explained as allowing for "better memory control", without actually giving any examples of how; only examples of how to use pointer arguments. Rather than encouraging me to read further, it just created a lot of questions that went unanswered for a long time.

      It's a decent technical reference, and it may even be entertaining if he's got a thing for cheesy variable names, but you should be ready to answer a lot of questions early on if you're going to have someone use it as a resource.

    9. Re:Start him off here... by blahplusplus · · Score: 1

      "I don't usually write flaming posts, but C++ as a teaching language ?!? You are smoking crack."

      Look I'm speaking from absolute experience here, I knew how to make basic batch files back in the day (DOS), but I could never wrap my mind around programming languages very well until I found Stephen prata's C++ primer, his primer does not only teach you about C++ and much of it applies to every other language, once you read and do try the stuff in that book it makes C++ easy. I know because I tried a lot of c++ books before that didn't do anything for me, and I ended up giving to the library or selling them.

      The right books can take something that seems like it is hard and TELL YOU EXACTLY what you need to do and what is going on, go read c++ primer plus, then come back and criticize me, because until you've done so it's a criticism that is completely uninformed.

      I'm speaking as a person that began having absolutely zero knowledge, and that book is a extremely good place to start for anyone. Everyone thinks they "know" how to teach, but we all teach ourselves -- "The only man who can convince himself of anything is himself" (mine). But the same applies to teaching, teaching can only take you so far because learning is done through repeated exposure, practice, and is over 90% of all learning is done unconsciously for you.

    10. Re:Start him off here... by Anonymous Coward · · Score: 0

      Seconded. I used an earlier version, the Waite Group's C Primer Plus circa '87. Don't think it had any but vestigial intro to OO in it. Taught you tons though about how memory is laid out, what the fundamental data types were and how they were actually expressed in memory...all kinds of killer, near-hardware level understanding that was presented extremely clearly. Just awesome.

    11. Re:Start him off here... by CountBrass · · Score: 1
      One reason is pointers. None of the languages you propose require any knowledge of pointers.

      That said, I'd still propose C rather than C++ (which I agree is a god-awful mess) to learn about pointers.

      --
      Bad analogies are like waxing a monkey with a rainbow.
  13. Find an interesting project as a goal by Anonymous Coward · · Score: 0

    I would suggest finding something that interests him and setting it as goal for some small programming project. When I started programming I was really interested in playing games (or more like creating them from scratch). I ended up coding simple games like PacMan. At the end I had learned some things in coding and had something to impress my friends. So, find an interesting project as a goal, learning will follow.

  14. BASIC? by Alarindris · · Score: 1

    I taught myself BASIC on an Apple ][e when I was eight or so from books I checked out at the library.

    It's fairly easy to read, i.e. TO, FOR, LET, GOTO etc, are self explanatory.

    The most important thing to get through to him is program flow, learning other languages is cake once you understand how to efficiently break a task into parts.

    1. Re:BASIC? by iznogud · · Score: 1

      I tried BASIC to teach my little brother programming. Like you, I started with C64 and simple BASIC programs, and that seemed like a good choice.

      But... back in the day, with a little luck and couple of free weekends one can finish a game that actually looks somewhat like "commercial" titles, because these titles was made mostly by one (lonely ;) ) man in his basement. And now, with multimillion budgets for games, I found that simple animation of letter movement on the screen aren't good enough to keep distracted teenager in front of the keyboard. After BASIC, I tried with some Python programming, but it was already late - the kid wasn't interested any more.

      The moral of the story is: take your time to pick the right weapon, and pick something which is flashy and gives immediate results.

    2. Re:BASIC? by thetartanavenger · · Score: 1

      I'd say go worse than that and start with visual basic, (man I'm gonna get modded into oblivion for this one). Certain parts of C etc are way beyond what he needs right now, and vb gives him a familiar environment to begin with. We can convert him to the console later..

      With VB the user starts off performing basic frame layout, which is very easy to do, followed by small amounts of code to make each button etc do what its meant to. In the long long time ago that I did vb programming, there were loads of examples and a very good documentation system setup that got me through everything I needed fine, and made it fairly easy for me to find some way of doing something. The use of vb to design a ui is what will hopefully make him think it's really easy to do all of these little annoying tasks and it will produce something he's much more used to dealing with (for now). Console apps are great for us techies, but for a budding techie they can still be a little scary, and actually quite boring..

      Next, find something on the computer that pisses him off and home in on it. Go through with him what about it pisses him off, and then suggest ways he could solve this issue by writing a tiny program or script. I started off with writing a media player (using the windows media player plugin *shudder*) because everything on the market at the time was crap, with the likes of musicmatch and everything. It was also in the time when wmp had very limited function and because of this was possibly the best media player they've made. I gradually built up a media player that in the end was pretty advanced for it's time with a full database, reading and parsing of filenames and mp3 tags, and even it's own api used for control across a network, control within between processes, and to allow users to create their own skinned apps.

      For me it was the ease of doing things that got me more interested. And from there on in I moved on from the horror that is vb to sensible languages like C, but had it not been for the ui builder in vb it would have been a lot harder and less fun for a teenage boy with a short attention span.

      Disclaimer: I have not used nor even seen vb in over 7 years now and I now live and die by the console.

      --
      Who need's speling and grammar?
    3. Re:BASIC? by Anonymous Coward · · Score: 0

      Although I also learn from an old BASIC computer when I was 6, playing with code rather than using it as a console, the Atari XL800 was what I used. However, I wouldn't think is appropriate for this day trying to teach something like BASIC, which is not used, and therefore, the kid will need to learn another language. I'd stick to C, but seriously, I'd go a little further with an interesting project with a microcontroller.

  15. I'm in college... by redkazuo · · Score: 1
    I started programming when I was fourteen. My parents aren't programmers, so I had to find my own way through curiosity. I just tried creating a couple websites with frontpage and later dreamweaver.

    A couple months later I found out about javascript and bought a book about it. Then it was Perl and the Cammel, then C.

    I think you should try to show him skills that seem valuable to him, maybe because he could brag about it to his friends, or (if he admires you), he could get some recognition from his pop, or even try to make a little money creating a website.

    Anyhow, the bottom line is that I think you should give him what he will find valuable and useful. I'm sure he'll find his way to unix soon enough, I did.

    1. Re:I'm in college... by cparker15 · · Score: 1

      I also started with HTML, then began messing around with event handlers (thanks to Joe Burns at HTML Goodies). I eventually wrote my own basic Checkers game in JavaScript, which caught the attention of the programming instructor in my high school. He invited me to his Programming III class, which was C++, skipping two years of BASIC (I still don't know how to program in BASIC). While taking the C++ class, I started teaching myself Perl and had my first introduction to Visual Basic in a marine biology class (oddly enough) putting together an ecosystem simulation in Excel with VBA. Then came PHP, Java, Python, shell scripting, ...

      For immediately visible results, I recommend an interpreted language. I know I'm biased, but I think JavaScript is a good introduction: loops, conditionals, recursion, OOP (to a degree)... Furthermore, you don't have to learn a GUI toolkit (although I guess you could equate the DOM with this). Best of all, it's platform-agnostic.

      For a book, I learned C++ with Deitel & Deitel. I leafed through a D&D JavScript book shortly after that class and I noticed all the examples and assignments in the beginning of the book were identical (they mostly just replaced cout << with document.write()).

      --
      Have you driven a fnord... lately?

      You must wait a little bit before using this resource; please try again later.

  16. In my day... by SimonGhent · · Score: 1

    In common with (I suspect) a lot of Slashdotters, I started out on computers in the Spectrum/CBM64/BBC days when you had to program, in BASIC, to get anything done and that's what got me going.

    I stayed in computers, eventually doing a Computer Studied degree and worked for several years as a programmer for an IT consultancy company, using C++, Visual Basic, Java and C#. In the end (about five years ago) it seemed that all there was in "programming" was SQL. Now I'm not knocking database developers, but that didn't float my boat, so I moved into business analysis.

    It seems that now, the majority of big programming is done off-shore, in India for the most part.

    I'd suggest something web-oriented to get someone interested, but maybe teaching the basics of variables, looping, procedure calls and such-like in something like C++ or (dare I say it) Visual Basic would be a good place to start.

    --
    simon
  17. Hackety Hack by BlackPignouf · · Score: 1

    http://hacketyhack.net/ is the answer!

    You can write blogs, mp3 downloader/reader and basic graphical interfaces in a few (Ruby) lines.
    I wish I had it when I was a kid... GWBasic wasn't so glamour :-/

  18. Do 3D by zwei2stein · · Score: 1

    Basic "Hello 3D" with triangle rotating can be done in ~ 20 lines.

    It takes a while to grasp, but it encourages and rewards experimentation.

    First they will fiddle with numeric constants and see what it ends up, then they will add lines to add more objects, eventually learning cycles and arrays for some animation ...

    Just don't bore them with background stuff unless they want to know it.

    --
    -- Technology for the sake of technology is as pathetic as eschewing technology because it's technology.
    1. Re:Do 3D by Anonymous Coward · · Score: 0

      He could follow the lessons at nehe.gamedev.net for basic to more advanced OpenGL programming.
      You can setup the environment for him (makefile, libraries, etc.) such that he can dive into the tutorials one by one and play with colored triangles, up to camera and textures. With each lesson he might need to learn some new concepts (e.g. bitmaps), and how they relate to code.
      But make sure that, while an important subject, he doesn't need to find out how to link opengl/glut himself for his first simple programs.
      Wanting to make cool graphics was why I started programming as a kid, not reading endless man pages with confusing concepts.

  19. Keep it simple, for now by Rigodi · · Score: 1

    Based on personal memories

    My father was into it, working on IBM 390 systems and I was eager to get my own computer, to see how it worked and to know how people could program it.
    When we received the beast (ZX81) my father just spent a few hours showing me trivias about variables, for-loops and simple input / outputs. That was it.
    Then it was just a question of personnal interest, that turned into passion, finaly. Later then the adult can help from time to time or give tips, perpectives, etc.
    So my idea is that plain simple basic might be enough. May be just an old VB or a simple PHP sandbox. OOP, web technos can wait a bit. Just start with the 101 and look how your kid responds.
    Hope this helps,
    F.

  20. Solving problems by Yetihehe · · Score: 4, Insightful

    Show him how he can solve some simple problems for school, so he can later try to solve some more complicated problems. I have started this way when I was 12.

    --
    Extreme Programming - Redundant Array of Inexpensive Developers
    1. Re:Solving problems by SplinterOfChaos · · Score: 1

      There's a site for that: Project Euler

      Actually, it's good practice for ANY programmer. Try a few!

    2. Re:Solving problems by Anonymous Coward · · Score: 0

      Puzzles are great. I remember I had some simple puzzles to solve in High School, like a Knight's Tour. Keep them simple at first but progressively challenging, that will make them rewarding. Anyone who's into programming knows that feeling of accomplishment when your code works and solves some problem.

    3. Re:Solving problems by Anonymous Coward · · Score: 0

      I think it is also important he realize that some problems are easier to solve or think about depending on the Language. Think Scheme and Lisp here. Abstract out the problem into lists and then think about what must be done to get at your solution. If you are so inclined have him write a parser in C/C++ (With libs if you wish) and have him do the same in Scheme. He will soon grasp the concept of "The right tool for the Job"

    4. Re:Solving problems by Anonymous Coward · · Score: 0

      Yeah! That's what got me interested! Solve quadratic equations! He probably has to do a bunch of them for school at some point. Writing a program which spits out the answers in a form which the teacher will accept (no 1,4... for sqrt(2) ) takes the same time as solving the things by hand, but along the way shows nicely the concept of 'algorithm', forces you to understand the process of quadratic-equation-solving, and once the program works, you have 0 errors in your homework due to calculation errors. Also shows the need for a plausibility-check etc. etc.!

      Python is probably easiest. Understanding c/c++ compilerwarnings/errors is a tedious process. He will get to that when he's hooked. ;-)

    5. Re:Solving problems by Anonymous Coward · · Score: 0

      Agreed. I didn't get into programming until someone demonstrated how to use C to solve a 3 variable equation. My reaction was: "why didn't some show it to me like this earlier?" I like math and solving equations, but hated using 1/2 to 1 full page for each small basic calculation. Find out what he likes such as math, physics, biology (graphing results)) and see if it can be applied in a meaningful way (i.e. is the effort to write the code worth the result obtained).

    6. Re:Solving problems by theimplord · · Score: 1

      Yes. I wholeheartedly agree. I started programming on my graphics calculator to do basic physics and math problems. This is what really got me interested in programming. It was a great way to learn, as with the maths you have to be quite exacting in your calculations, and you know when you're wrong. Additionally, the BASIC on the TI-8* line of calculators is quite simple, and he probably has one already. The portability has its benefits as well.

      After the calculator...

      I've found that the most motivating factor for learning things, especially programming languages and how to program is finding a good project. It doesn't have to be big, just something with a goal. Early on, it's nice to have something that doesn't require too much architectural stuff, as it's easy to get bogged down in the planning, and not actually get anything done. This makes it difficult to do programming on the computer, as most things which you want to do will require a graphical interface (for which C# is quite helpful, as the designer is excellent - if you're willing to use windows). But if you want some simple utilities like text or image conversion scripts, they can be a good place to start (e.g. copying new pictures from his camera, downsizing them, and uploading them to facebook, for instance). Learning things, especially computer tasks, is much easier, and much more productive when there is an end goal (especially if it's within sight).

    7. Re:Solving problems by Anonymous Coward · · Score: 0

      Yeah, solving some sort of problem or accomplishing some goal is way more interesting than programming for the sake of programming.

    8. Re:Solving problems by Cor-cor · · Score: 1

      I would definitely agree that teaching him how to cheat at schoolwork would be the most likely way to get and keep him interested.

  21. Graphics Programming by Destrius · · Score: 4, Insightful

    Being able to produce pretty pictures is always fun. I learnt programming by spending all my time drawing bouncing balls that changed colour in 320x200 VGA. Of course nowadays kids can use a lot more powerful graphics libraries like the aforementioned SDL, which can let them make a lot cooler stuff.

    If he gets the hang of it, you could even teach him how to write a raytracer. That would also be good for his math, and be a nice project where more advanced programming techniques (e.g. data structures, recursion) and more advanced math (calculus, 3D geometry) have practical uses.

    1. Re:Graphics Programming by Larsrc · · Score: 1

      Mod parent up! Immediate feedback v. important, and probably to blame for the success of the early home computers: You turned on the computer, and youo could immediately go "circle 10, 10, 10" and have a pretty circle. From there comes wanting to make more, then making it easier, at which point control structures, variables etc come in. If you have to learn to use and editor and a compiler and a graphics library and so on just to get your first results, it will look cumbersome. Unfortunately, there are few places to go for that. My best shot would probably be Javascript with an appropriate web page that includes basic graphics stuff, then just use the FireBug console.

    2. Re:Graphics Programming by AmiMoJo · · Score: 1

      I have to agree, graphics is the way to go to get kids interested. It's how I became interested, back with Locomotive Basic II on GEM with an 8086/640k/CGA PC...

      Things actually seem to be harder these days. It's amazing really, but there certainly do not seem to be any free languages that are ideal for beginners and support easy graphics. Maybe C and OpenGL, but C is not ideal to start with. A good BASIC interpreter with good graphics would be ideal, but the only one that comes to mind for Windows is Blitz BASIC and it isn't free.

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    3. Re:Graphics Programming by Anonymous Coward · · Score: 0

      Freebasic is a great alternative to Blitz. It has complex features like user defined types and allows easy use of graphics (screens/sprites). It even has an inline assembler!

    4. Re:Graphics Programming by Anonymous Coward · · Score: 0

      the kid is just getting into programming and you want him to write a ray tracer? you fucking idiot.

    5. Re:Graphics Programming by pimpimpim · · Score: 1

      That's how I learned it. Moving a turtle around on the screen drawing lines in LOGO. Nothing wrong with starting with a limited subset of commands to get the idea what an algorithm is and how you can use it. From there on it goes fast enough.

      --
      molmod.com - computing tips from a molecular modeling
  22. Robot Battlin Gaems by Anonymous Coward · · Score: 0

    There are tons of old emulated and new robot programming battle games... of course, you might have to play the game with the Teen yourself just so he can beat you at it...

  23. Start with basics. by mimada · · Score: 2, Interesting

    Get him on a typing tutor first. It'll come in handy regardless of whether he sticks to programming. As he's learning to type, print out some interesting program listings (or get a book). Have him type in the programs (don't let him just cut and paste). Once he has the programs entered and debugged, have him modify or customize them.

    Once he's done a few of these, he'll have experienced the rewards and tedium of programming and should be able to decide if this is the right path for him.

    1. Re:Start with basics. by drx · · Score: 3, Funny

      Right, and let it save him on cassette tape, that, if it doesn't get corrupted by itself, you should demagnetize in random intervals. Just like we learned the true stuff!

    2. Re:Start with basics. by stewbee · · Score: 1

      The previous two poster are being a bit sarcastic, but I think that you do have a good point from my experience. When I was younger, I didn't have the patience for programming, mostly because I was a terrible typist. I guess you could look at it as struggling with two tasks simultaneously: my horrible typing and my lack of knowledge of programming. Since I have gotten older, I now know how to type proficiently, so now I can concentrate on the actual programming part.

      If anything, teaching the kid to type will be a good skill. He will be able to use it in high school for writing his papers. And should he/she go onto college, they will be even better prepared.

    3. Re:Start with basics. by cashman73 · · Score: 1
      I'll disagree here. Doing a typing tutor or course is a complete waste of time. He'll learn how to type just by virtue of using the computer, if he doesn't know it already. I never took any typing class myself; I still remember the days back in high school -- I'd be watching all the non-techie students take their typing classes, while I was on the other side of the hall taking programming. In the end, half of them can still only type, at best, 30 wpm; meanwhile, I learned to type a lot faster than that AND learned something useful like coding,...

      I'd probably recommend starting with some of the scripted languages, like PHP (you can tie this in with HTML quite easily), then move on to Perl and Python, and then work your way up to C/C++.

  24. Javascript by dgun · · Score: 2, Insightful

    Javascript is not really a best first language to learn, I don't suppose. But my teenage son was more interested in it than in the C 'hello world' example I showed him, because he was familiar with web pages and web browsers and he could immediately see the implications.

    My guess is that if you do a simple script that moves something around on the screen and then let him play around with it some, that this will spark his interest.

    Good luck

    --
    FAQs are evil.
    1. Re:Javascript by TheRaven64 · · Score: 3, Informative

      JavaScript has some horrible syntax, but semantically it's a very clean Self-derivative. If you learn JavaScript well, you learn about Lieberman prototypes, closures and late binding. It also has the advantage that it's easy to write JavaScript code for the web that actually does something useful. I'd still probably recommend Squeak over JavaScript, because Smalltalk has much simpler and cleaner syntax, but JavaScript isn't a bad second choice.

      --
      I am TheRaven on Soylent News
    2. Re:Javascript by Z00L00K · · Score: 1
      TCL, Pascal and Java are languages that may suit the beginner.

      C can get you into really weird problems due to the nature of the language with pointers.

      Learning a language that's simple to read and use is a blessing in the future.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    3. Re:Javascript by dgun · · Score: 1

      And do you think the loose typing and automatic typecasting is a plus or a negative, in terms of first languages to learn?

      (hey, I almost hit your buzzword.)

      --
      FAQs are evil.
    4. Re:javascript by Anonymous Coward · · Score: 0

      I'll probably get modded to oblivion (well, if anybody reads this) for mentioning Flash, but I agree that Javascript is a good base. Having started out hacking a few scripts together for web sites, I found that the move to Actionscript was easy. And, without wanting to make this sound like a plug for Adobe, the introduction of scripting to After Effects was a great help - especially as it is, again, based on Javascript.

  25. Be like Linus by Anonymous Coward · · Score: 0

    Start em from scratch. Take away the OS! :-)

  26. modify an existing game. DONKEY.BAS by Anonymous Coward · · Score: 0

    Donkey.bas was an example BASIC game that came with old ibm personal computers.

    one of the first things i remember doing is hax0ring DONKEY.BAS so that instead of missing the donkey with the car, the goal of the game was to hit the donkey with the car.

    fun fact, years later i learned that bill gates actually programmed this game.

    anyways, its a lot easier to hack up an existing game, do something funny, and use that as an intro to programming.

  27. The interesting part of the problem. by leuk_he · · Score: 1

    Maybe game maker is nice way to get his interest.

    It might not be the best introduction to programming, but it is fun and beats surfing the internet and dull programming in a true language.

  28. Fun and money are the encouragement! by Anonymous Coward · · Score: 0

    As a kid I played the ZX-Spectrum for a few years. At some point (probably a year after I got my hands onto this computer) I got interested in how people do the games, literally how they draw those nice pictures, pseudo 3d games, animation, etc etc. That made me learn Basic and Z80 assembler a bit later when I realized that I could do everything in Basic (at all or at a decent speed). I didn't do much game programming with the Spekky, but I did a lot of related programming on x86 PCs (3d graphics primarily) and actually had a few simple (almost playable) games prototypes written.
    So, trying to understand what's behind a game and implementing simple games can be a good start with a lot of fun.

    Then, when I was in my last grades at school my dad offered me to write a few simple applications (mostly text and numerical data processing) for him for some money. I was happy to do that as that made me learn some more cool stuff and I earned my first money. I continued doing that and learning everything I could and I'm now somewhat like what you describe yourself (maybe just not that long time and with less Unix experience).

    So, do games and give work for which you'll pay. That'll teach him the stuff and you'll have fun. And at the same time it will let the kid see what he can do and how he can earn for real.

    Would you turn down fun and money? :)

  29. JAL on a PIC by Anonymous Coward · · Score: 0

    If you have any electronics knowledge, learning to program a PIC to do fun stuff using JAL is a good way to go - I'm doing this with my 13 year old. Here's a good reference: http://www.voti.nl/swp/

  30. Re:In my day... by robcfg · · Score: 1

    I started with the Atari 800XL/ Amstrad CPC basic and I think visual basic it's way too complicated because it uses many things of windows that can obscure the learning process. That said, if we learned with older machines, why not give a try at some emulators and let him start doing things in pretty plain old basic? You can find most basic manuals for old computers quite easily and he won't be frustrated if a dll is not found or if he cannot guess why a weird event does not happen.

  31. Hello World says a lot about motivation. by sleeponthemic · · Score: 1

    Most programmers started out teaching themselves. Only mild support is necessary. Either he has the interest or he doesn't. Chances are if he's not especially moved by a hello world program he's probably not going be that motivated to stick with it.

    --
    I record my sleeptalking
  32. NetHack! by ThePhilips · · Score: 4, Insightful

    Give him nethack (or any other OSS game) to play. After a while when he will get interested - give him the source code for it.

    Programming games is probably most engaging activity. I'm 31 now - but still on it ;)

    --
    All hope abandon ye who enter here.
    1. Re:NetHack! by ThePhilips · · Score: 2, Insightful

      btw, there are bunch of games written in Python using PyGames framework. That to me sounds definitely as good idea. Using PyGl you can also utilize 3D things.

      --
      All hope abandon ye who enter here.
    2. Re:NetHack! by ldbapp · · Score: 1

      I think this is the way to go. But not just games. Give him a working program that does anything of interest to him. Then when he says, "hey, can we make it do [this]", you are much closer to positive feedback, because you have a working framework. The challenge is giving him perspective on how hard [this] can be, and help him choose mods that can be done quickly at his skill level.

    3. Re:NetHack! by halivar · · Score: 1

      I learned how to program in C on ROM 2.4. If that doesn't teach you pointers, nothing will.

  33. PHP by comra · · Score: 1

    Why not start with PHP where he can see the result instantly?

    1. Re:PHP by Tangent128 · · Score: 1

      JavScript would be preferable; no need to muck around with webservers, so it's even faster to start with. Plus, a prototype-based object oriented system is simpler to learn; no mucking around with classes, but equally powerful.

      (Just don't mention document.write(); it's been bad practice for years, and document.getElementById("...").innerHTML is a simple enough idiom, if not DOM kosher.)

  34. The best language... by IBBoard · · Score: 4, Funny

    The best language to teach him is $trendy_language_of_the_moment. If you don't teach him that then he'll never get anywhere. How can people hope to encourage people to learn when they're using $formerly_trendy_language? It's just so horrible that I'd rather gouge someone else's eyes out with a spoon that use it instead of $trendy_language_of_the_moment!

    1. Re:The best language... by Count+Fenring · · Score: 1

      Mod parent up.

      You sir or madam, are an absolute gem.

    2. Re:The best language... by Foolicious · · Score: 1

      My trendy language of the moment doesn't use dollar sign variables, you insensitive clod!

      --
      Please don't use "umm" or "err" or "erm".
    3. Re:The best language... by WatersOfOblivion · · Score: 1

      Actually, I think that would be @trendy_language_of_the_moment...

    4. Re:The best language... by jonaskoelker · · Score: 1

      Your post advocates a

      ( ) Perl-based
      ( ) PHP-based
      (X) Shell-based

      approach to making fun. I don't think it'll work. Here's why I think it won't work:

      ( ) You will piss people off by not mentioning $fancy_wrapper_around_lambda_calculus
      ( ) You will make people reminisce about the good old $formula_translating_language days.
      ( ) You fail to mention the important system (particularly in the banking world) written in $some_venerable_business_oriented_language; the people who liked it will scoff.
      ( ) Due to your being general, you fail to suggest any specific language (i.e. $python).
      (X) Your syntax makes it unclear what the value of $c++ is

      Also, the following objections may apply:

      ( ) Ideas similar to yours are easy to come up with, yet none have shown funny in the past.

    5. Re:The best language... by HappySmileMan · · Score: 1

      As long as he only exposes his son to camelCase I don't care what language he uses

    6. Re:The best language... by Anonymous Coward · · Score: 0

      Ah, so you're a ruby fan I take it.

  35. Information overload by Yold · · Score: 1

    When I was 14-ish, I liked to futz-around rather than program seriously. If he is like me, and has a short attention span, buy him 3-4 books on programming, and point him to as many free source code websites as possible. Ebay has some cheap books I'm sure. Ideally, get him books on 2 different languages, and find ones that are moderately comprehensive.

    The other 2 should be like coloring books for programmers, although I didn't understand nearly enough of the math at the time, DirectX in 24 hours was cool.

  36. Javascript? Facebook apps? by 6Yankee · · Score: 3, Interesting

    No, really. That way he can share his games or whatever with his classmates, simply by sending them a link.

    Of course it'll be a longish road to get to that point, but it might be a goal he can relate to - and I know I simply wouldn't learn anything unless I could see the point. Still don't at 34, come to think of it :)

    1. Re:Javascript? Facebook apps? by pastudan · · Score: 1

      Agreed.

      Some others suggested Lego Mindstorms, C++ books, and programming games.. and those are all great. I am in college now, and I fondly remember dabbling into all of those things for a little while.

      Somewhere in high school I got into web design, making some simple PHP scripts that show random quotes, and now I am doing things with PHP + MySQL databases, and pretty AJAX calls.

      I have seen a trend in programming (and don't quote me because I am probably biased), but more and more applications are becoming web based. Look at Gmail, Google Docs, etc... its awesome to have everything you own online, accessible from any computer, anywhere, and the only thing you need is a web browser. And like 6Yankee said.. its great for showing off to your friends because you can just send them a link with the latest project you are working on. Teenagers these days are on the web checking their facebook all day anyway, but they might be a little hesitant to getting on their email, downloading a mysterious EXE, and running it. (BTW, what runs on Firefox will run on Firefox. Whether it's on XP, Vista, Mac, Linux)

      Now it depends on your son, but if hes anything like me then he hates reading programming books. For me, PHP is seriously easy to learn because you can Google anything you are trying to do, and someone has already done it. And of course, PHP, MySQL, and Apache are all free, open source, and Linux based. Good luck getting him motivated! But at the same time don't force him.. for me it was more fun to really want to learn on my own.

    2. Re:Javascript? Facebook apps? by MrMunkey · · Score: 1

      There are already some Javascript games out there. Two examples I can think of off the top of my head are:

      Processed Tower Defense is a strategy game where you try to defeat waves of dangerous monsters before they reach your tower. Of course, its less of a tower and more of a blueish square on the right side of the screen, but the idea stands.

      It is created using the Canvas element and the Processing.js Library by John Resig

      Track Attack is a puzzle game where you have to lay out the tracks to to the destination so that the train does not crash. Yes, I am aware that I made this game, and I am aware it's still a work in progress.

    3. Re:Javascript? Facebook apps? by Anonymous Coward · · Score: 0

      PHP and Facebook apps is the way to go. Learn by doing.

    4. Re:Javascript? Facebook apps? by Anonymous Coward · · Score: 0

      No way! Whatever he's going to learn should be a full programming language, not scripting for some site. With JavaScript he cannot even access local files! Do Java, Python, Ruby, hell better even C++ or PHP than Facebook Apps... lol

  37. Make it about programming and something else by shaka · · Score: 5, Insightful

    First off, I think you should start with a language such as Python or Ruby. I started with BASIC which was easy to grasp, and more modern languages are easy yet more powerful.

    Second, when I started programming I was first looking at my brother, writing really simple BASIC programs on the C64. Later, I was interested in fractals and wrote algorithms for drawing fractals. I had a book with code examples for different fractals, but in some other language (I don't remember which). The process of interpreting the algorithm in the first language and translating it to BASIC was very good for learning. Tweaking and extending the algorithms and seeing the changes visually was very encouraging.

    Today, if I were to teach a kid programming, I think I would look into Lego Mindstorms. It helps if the kid is into Lego or robotics, of course. That's a contained environment with a powerful and easy language, which is also part of something else, with immediate feedback on the changes. You can program it in either the Lego-supplied RCX Code (BASIC-like) or ROBOLAB (LabView-based), or any of a number of languages supplied by the community (C, C++, C#, Java, Lua etc).

    --
    :wq!
    1. Re:Make it about programming and something else by Anonymous Coward · · Score: 0

      I agree completely with using Lego Mindstorm. There are several books available on how to program it and it will provide quick feedback as he starts to hack example code. Then you can move him on to C and do a lot with the little robot

    2. Re:Make it about programming and something else by MattG91 · · Score: 1

      This is coming from a 17 year old. I second the dude who mentioned Mindstorms- my dad brought home a book on robotics when I was 12 or 13 years old. I was so intrigued that a few months later I got the Lego Mindstorms 2.0 building set for Christmas. When I got some experience, we joined a FIRST Lego League team. I stayed on the team until I was too old for the competition- but it was a lot of fun. The programming environment for the RCX was this wierd, but kid-friendly visual drag-and-drop environment, and it was pretty much the same for the ROBOLAB stuff. You could define custom "blocks" as you progressed, and there were even third-party firmwares (NQC, Not Quite C). The NXT, the next-gen Mindstorms, is even better- the programming hasn't changed much, but the hardware in the $250 kit is superior. Robotics is how I got into coding stuff, and I think it was because I could see my programming at work- much easier than on a computer. Right now I build webpages for a summer job, and I had much more fun messing around with that kit. But it's taught me how to think like a programmer. So, give your kid a sandbox to play in. Be sure you give him tools and toys that aren't easy to break, or hard to assemble. Let him go at it. And give him some challegnes- once he knows the ropes, have him make his creation do something specific, with progressing complexity. In the competitions we had certain "tasks" we had to do within the 2.5 minute time frame of the match. But of course help him when he gets stuck- complexity and frustration early on will make anyone want to quit, especially when they could be watching TV or playing Guitar Hero ...but the latter is an excellent alternative.

    3. Re:Make it about programming and something else by wcboyd · · Score: 2, Informative

      I would tend to agree that this is a great way to provide immediate feedback and still give someone a basic enough knowledge of programming. Another alternative would be REALbasic (www.realbasic.com) It is about as platform independent as you can get and will also provide immediate feedback. Plus, for Linux users the standard version is FREE!

    4. Re:Make it about programming and something else by Anonymous Coward · · Score: 0

      Seconding the Lego Mindstorm approach.
      This is what got me into programming when I was a freshman in high school.
      Our awesome science teacher got me and a group of my friends involved in Botball.

  38. Programming IS a game. by SplinterOfChaos · · Score: 1

    When my mom was learning, she thought it was fun making things and putting them on the screen, then changing them and seeing what happens. Just today, I tried to see what happens if I change all me velocity vectors to integers and it was fun to see everything stop moving because their velocity was always less than one to begin with.

    Teach him how to play with code.

    Also, whether or not you'd bore him is a level of his determination. I've been programming since 16 and I made worthless, unimpressive code until I was 18, but I kept on because I knew I'd some day make games. All that experience made it so that with one semester of C++ and an SDL tutorial, I could make a sweet and simple game.

    On the other hand, many of the people who graduated for a degree in computer science claimed they never wanted to program again. Determination will decide whether he programs or not. He can have all the knowledge in the world, but not touch a computer again if he lacks determination.

  39. Explicitly disallow it. by Anonymous Coward · · Score: 5, Insightful

    That's THE way to get ANY teenager to do ANYTHING.

    1. Re:Explicitly disallow it. by mordejai · · Score: 1

      That's not enough. You have to give him a good reason:

      "BECAUSE I SAY SO!"

    2. Re:Explicitly disallow it. by houghi · · Score: 1

      I agree. All the rest is forcing somebody to do something YOU like, not what (S)HE likes.
      This is the same as on how to make a kid interested in sport X, Y or Z.

      You can't MAKE somebody to like something.

      --
      Don't fight for your country, if your country does not fight for you.
    3. Re:Explicitly disallow it. by The+Asmodeus · · Score: 1

      Exactly. Tell them they can't do it. Tell that you don't want them getting involved with that crowd. That it's "not the right crowd" to be involved with. Tell them you don't even think they would be good at it.

      Almost all children rebel as teenagers. The trick to be a good parent is trying to pick a suitable rebellion.

      My father told me to give up computers. They where a fad and that I should spend my time learning how to do things that will make me money later in life. Only rub was, he was serious...

      I still bring that up to him for a good laugh now and then.

    4. Re:Explicitly disallow it. by Anonymous Coward · · Score: 0

      That's THE way to get ANY teenager to do ANYTHING.

      That only works if the teenager thinks that the forbidden thing may be fun, otherwise they won't do it anyways.

    5. Re:Explicitly disallow it. by logixoul · · Score: 1

      speak for yourself.

  40. Encourage? by clarkkent09 · · Score: 1

    IMHO the answer is don't. If he is really interested in programming, he will not need much encouragement, in fact the problem might be how to keep in away from the computer long enough to have social life. If he loses interest or finds it too hard, then you might unintentionally put him under pressure to keep going just to keep you happy or to prove he is smart enough, and that ain't no recipe for happiness. Be prepared to deal with a possibility that he might decide programming is not for him and that he really wants to be a male ballerina or something, because that's fine too if it would make him happier in the long run. As for the teaching methods, that's a tough one. I kind of lean towards getting them immersed in one thing, language for example, until they understand it in some depth and then using that as a base to learn other stuff. But then different things work for different kids, so there is no one correct approach

    --
    Negative moral value of force outweighs the positive value of good intentions.
    1. Re:Encourage? by jamesh · · Score: 1

      I wholeheartedly agree with this. From the first moment we got our first computer when I was a kid - Amstrad CPC664 - I couldn't keep my hands off it. Playing games was fun of course, but the Amstrad, like the Commodore 64, came with a very good reference book that contained all an 8 year old needed to get started programming with. Now, over 20 years later, I still can't get enough of programming...

      Either your kid is passionate about it or he isn't. And if he is, you wouldn't be able to stop him anyway.

      You could try telling him that writing programs is a good way to impress girls, but the chances are he'll see through you. A career as a male ballerina is probably a better option if that's what he wants anyway :)

      I guess part of the problem is that computers are everywhere, and aren't the exciting and mysterious things that they were to me when I first got my hands on one. My kids at about 3 years old could turn on the computer, log in (password = username, and usernames are only about 5 letters), and start playing flash games without any assistance, after being shown how a few times, even though they barely recognise the letters. Just like they figure out how to use the remote or press the right buttons on the tv. As far as computers are concerned, they are just another box that does stuff, and they'll learn the minimum amount of stuff to make them do what they want.

    2. Re:Encourage? by Anonymous Coward · · Score: 0

      +6 discussion finished.

  41. Ruby, Python, Qt by slashflood · · Score: 1

    Ruby (maybe Python) is one of the last 'frustrating' and 'discouraging' languages out there. To make it even more interesting, give him Qt to play with. With Ruby/Qt or PyQt you can open up a window in just a couple of lines. Even 3D stuff can be done with that combination and that keeps him entertained for quite a while. Bonus: object oriented programming from the beginning.

  42. Alice by Anonymous Coward · · Score: 0

    Take a look on the Alice project. http://www.alice.org/
    This is kind of movie-making Java environment.

  43. How about Logo? by nithinsujir · · Score: 3, Insightful

    I think logo was my first programming experience and I enjoyed it. It's great to see the fruits of your labor instantly in graphical form.

    1. Re:How about Logo? by Anonymous Coward · · Score: 0

      Mod parent up... my first experience too. Not the most useful programming language by any measure, but you get immediate results that you can see. There's enough loops and control structure in there to give a new programmer some of the basic ideas at least, and its very rewarding for newer programmers to get started with.

      For the guy suggesting getting him a hydraconsole... the original poster knows his kid better, but that sounds like a bit much for an early project. If the kid has a lot of patience and tech savy, and a lot of clue on the electronics side, then once that this is put together and running the kid knows a huge amount about hardware and software. But it just sounds like too much for a first step.

      -sk

    2. Re:How about Logo? by baker_tony · · Score: 1

      Yeah, totally agree, Logo is what got me interested in programming! I remember spending hours at it, then I moved on to BASIC and entering in code out of magazines... damn that was a long time ago!
      Go the BBC Master Compact...

  44. My tactic by Demena · · Score: 0

    was to use something I learnt while lecturing. People like to do things. Teach them 'sh' and the unix utilities. This allows them do do things. People learn by doing and love doing simple surprisingly powerful tricks.

  45. Personally by ledow · · Score: 5, Insightful

    I don't see that not having a flashy GUI means anything. I grew up in a world where I saw flashy GUI's for exactly what they were. I was much happier hacking DOS to get that extra few KB of base memory than I was playing about in Windows 3.1.

    The problem is that you can't foster curiosity, which is the main driver here. Nothing will make you sit down and learn a programming language more than curiosity for what you can make the computer do, whether you can do something better than Microsoft, etc. You can try very hard to keep interest, though, and there practical results tend to have greater effect - this is why most basic ICT in schools is based around roaming turtles, Lego RCX, "traffic-light" kits etc. Computer-controlled with visible, physical effect.

    Personally, I think the best way to foster the right computer skills isn't to use a computer much at all (this is a philosophy I've held for most of my life - the best way to program is in your head, not a machine - the best way to write a story is on paper, not a word-processor, etc.). The best things to use to learn are simple gadgets. I'm not a gadget person. I'm not even very good at electronics but I struggle along and get a lot done.

    Wire your house for a burglar alarm, controlled by a computer, and involve your children in every step. If your practical skills aren't up to scratch (good, you can "learn" by your mistakes together and your child can try to "out-think" you when you both hit the same problem), you can get X10/DMX-style equipment that makes it a cinch. But there's nothing like a bug that'll scare the crap out of you when the alarm goes off because you didn't cater for a niche-case (opening the back-door while the power was out etc.). It only needs an ancient "sacrifical" computer that doesn't matter if you blow its parallel port, and it introduces every single reason behind having computers - automate tasks that a human could do using simple, cheap components.

    You can learn programming, you can learn embedded programming, you learn about the importance of bug-checking and clean code, you learn about interfacing, buses, serial/parallel data transfer, physical and real-world effects and how to counter them in software (e.g. switch debouncing). You even get to learn how the damn computer does its job so that it's no longer a magic box that does stuff. You get to interface with all types of cool gear. You get to bring practical, real-life skills into the learning environment which can help immensely if your child learns better that way. (And I don't count "how to write a letter in Office", I mean REAL life skills, like practical problems, electricity and electronics, wiring, why the bloody ladder won't stay still and why Daddy put his foot through the roof).

    The rewards are instant, visible, practical, extendible and "show-off-able". The "reward" of having the whole family laugh at a a doorbell that plays a WAV when someone presses it is very rewarding especially when "it was all my son's work". My particular favourite is a doorbell that goes "knock knock" when you ring it. I also bought an old-fashioned door knocker which has an integrated switch in it and want it to set off a "ding-dong" sound, just to see the postman's face. I'm doing it with simple electronics and one of those recorable greetings-card chips but you can do it with a PC easily. Ten minutes of very basic wiring to an old-fashioned joystick port (ancient laptops are great for this sort of thing), a WAV file off a free website and a twenty line program. You can see exactly where his skills lie. Is he a better programmer? Is he a better thinker? Is he better at practicalities? But no matter what he is, it's so simple to do that you can have great fun wiring it up (probably with Mum in the background tapping her feet because she's getting sick of "Yankee Doodle" every time the neighbour's call).

    Then you need to get to the point, as quickly as possible, where he can *think* of new stuff to do himself. You started with a doorbell

    1. Re:Personally by Anonymous Coward · · Score: 0

      I have to agree...Get him started hacking things and his knowledge will only grow as he hits harder walls. Do you have a WRT54G? Help him to flash it to DD-WRT. Does he have an iPod, flash it to rock box. Have an original Xbox? Make a media center out of it. All these things are super easy at this point, but it takes patience and learning of systems to make it happen. Once he gets started, if it is the direction he actually wants to go he will start modding everything...

      Oh and give him a PC to install any flavor Linux on then have him setup FlamPlayer so he can listen to MP3s anywhere now that his iPod is bricked...

    2. Re:Personally by Anonymous Coward · · Score: 1, Interesting

      > I don't see that not having a flashy GUI means anything.

      No, but having a simple to use GUI editor (Delphi back in the day or maybe lazarus nowadays on Linux) means you can quickly get results, and you can have a GUI without lots of frustration. None of the GUI toolkits IMO qualify under the "keep simple things simple to do" criteria.
      For someone who like me likes mathematics, geometry and graphics, OpenGL is very nice and to me provided a natural way (and reason) to transition to C.

    3. Re:Personally by Anonymous Coward · · Score: 0

      Dude, you wanna be my dad?
      I am 30ish and write code for a living but could not do anything like what your talking about.

      Get that pen and paper out and write a book on this, I would buy it. My kids only 6 so maybe I could get a start on learning how to program my phone, alarm, doors, etc...

      Sounds genuinely cool on the kid-scale. (not age-limiting, I bet most /.-ers admit to being kids still)

    4. Re:Personally by ledow · · Score: 1

      It's incredibly easy, it really is. I have a computing degree, I work in IT support, I do programming on the side but I've *never* been taught electricity, electronics or anything vaguely related. After a few years of self-study, yes, I can do just about anything up to and including building something like a ZX Spectrum from parts (although I won't touch surface-mount devices because I'm the worst person in the world at fine motor control... typically geek-clumsy). But the stuff I'm talking about is all modular, simple stuff. I honestly started doing this sort of thing for myself and others - it's amazing what you can do with nothing more than some wire and a computer.

      One of my first projects was to build a "burglar alarm" circuit for the local Scout group to "defuse" as part of a themed camp. It had keypad entry for a PIN, it had a bundle of coloured wires that had to be cut in sequence, it had sensors to detect if they tried to move it, it had a protection that would not allow the box to be opened. And it used batteries, wire, a small mercury switch (costs pence) for the motion sensors and some ingenuity. There were no chips or other electronics involved (if people are interested, it ran on batteries which were constantly short-circuited through a long length of wire but in which any "incorrect" action cut the short-circuit and allowed the batteries to power a small loud siren buzzer).

      For the particular things I mentioned, though (i.e. real practical applications, not toys), Caller ID is nothing more than a common modem option (if you are in the UK, check the modem first because we have "odd" Caller-ID that isn't necessarily supported even by modems that claim it... US modems tend to just work if you're in the US). You can even do it on mobiles if you have the data cable - everything uses the AT instruction set so it just "appears" on a serial port as textual data.

      On Linux, just "cat" or "fopen" the serial device that appears when you plug the data cable or modem in. On Windows, grab a serial library. Literally, when the phone rings, the modem will give out "RING" on the serial port and, if Caller-ID is supported/enabled on the phoneline/modem, you will get "NUMBER +441234567890" as well as TIME and DATE entries. You might need to send it an AT string to initialise it but you can easily look that up (usually ATZ is sufficient) and it won't do anything to your phoneline if you don't output any string to the serial port. A couple of lines of string-parsing code and either a speech synthesis library or a home-recorded audio file and you have an auto-announcing Caller ID setup.

      Burglar alarms are incredibly simple - push 5 or 12V through a single wire of a two-core cable which goes through all the PIR's, door contacts (which are literally nothing more than a "reed switch" which is always near a magnet when the door is shut), "panic buttons" and anything else. Make each device join the "input" wire to the other "output" wire on the cable (daisy-chaining is also used and easier but requires a bit more effort). As soon as something "goes off" (door opens, PIR senses movement etc., panic button pressed) it will break the circuit (as if someone had cut the cable).

      To detect when something happens, it's just a case of making sure you're still getting 5 or 12V at the "output" wire of the cable. If you buy any wired burglar alarm, you'll find that this is EXACTLY how it works. You can even usually pinch the components from any off-the-shelf burglar alarm and/or extend an alarm setup with your own devices (check voltages with a multimeter first).

      Using the K8055 interface I described (£25 pre-assembled in the UK from Maplin's - a major high-street electronics store), or any similar A/D input for a PC, it's as simple as getting a length of cable, putting one end on an "output" from the PC (or just a 5v adaptor near the computer) running it to one side of an alarm-sensor, running another cable from the sensors "output" back to the PC on an "input".

      Using the commo

  46. The interest by Anonymous Coward · · Score: 0

    When I started getting into programming, I was naturally interested and I think that's one of the important things, to be interested in technology from the beginning.

    Now my teacher noticed my interest and showed me some cool stuff. (Well it was cool back then). Like how to use graphics in Pascal. Handle keyboard. Showed me how to make some tiny games and then I used to look at the code, try to understand and write something myself.

    Or he gave me some books on the matter. Like assembly, it was hard to understand at that moment, but I had use for that knowledge later (in the University).

    So the thing is: just show some cool thing/idea if he's interested he will explore it himself.

  47. BASIC + graphics by Anonymous Coward · · Score: 1, Insightful

    I started learning programming with QBASIC (on my own, wth some help from google).

    It's simple to understand (a kind of...), and if you show him some the graphical stuff (different resolutions, on text mode, graphical mode) it think will be courious to learn. (make sure that your windows/dosbox emulator supports that graphical modes)

    At first some "Guess a number" (with the output from the computer "lower"/"higher"/"right" or "cold"/"colder"/"hot"/"burning").
    Next maybe a pong game (but be attent at the geometry/phisics stuff, which may be a bit hard if he's so young) or a simpler space invaders, or even a tic-tac-toe (with random chooses, later a very weak AI).

    anyway, keep it simple!

    (Bonus points if he knows about text-mode games like nethack or will code a "Hunt for Wumpus")

    (Posed as AC beucase I don't have an account here)

    1. Re:BASIC + graphics by Sterling+Christensen · · Score: 1

      It's simple to understand (a kind of...), and if you show him some the graphical stuff (different resolutions, on text mode, graphical mode) it think will be courious to learn. (make sure that your windows/dosbox emulator supports that graphical modes)

      There is no need to mess with an emulator. FreeBasic (when the compiler is run with the -lang qb switch) has identical syntax, including the graphical commands.

  48. Low-level game programming by 4D6963 · · Score: 2, Informative

    Video games are fun, and making your own video games is fun too.

    Start by making him learn text game programming, like the price is right. That's both on the very basic level of programming, and a quickly gratifying game to learn.

    Then, maybe I suggest low level game program. And by low level I mean no SDL (well, maybe a wrapper), but writing your own pixels to a frame buffer is more gratifying. As in, teach him how to make a function that write a rectangle on a frame buffer depending on the rectangle's size and the coordinates of its center, then make him move the rectangle around by pressing keys.

    Build on top of that by making he do a very basic game like pong. My first graphical video game was a pong and I coded it in two days, that's how easy it is.

    From that point on, he will probably start to get ambitions. As in, he'll want to draw lines, load sprites, rotate them, use physics, learn about tcp/ip network, signal processing theory and techniques, etc, to achieve a precise purpose. All of these things will fuel his interest towards mathematics and physics, and give him a good reason to learn about and understand these things.

    Finally, introduce him to more "real world" type of programming, by giving him some of the stuff you have to do at work, for uhh.. the sake of his education!

    --
    You just got troll'd!
  49. Inspire by Anonymous Coward · · Score: 0

    The whole IT bit me because al of a suddon my dad came home with an Atari2600, without asking for it. I was so completely overwelmed by it, that I was interested in computers ever since ending up as a systems engineer, what I personally like.

    Bottom line: In order to inspire young people by showing them the big picture first, and then let them find their way down to whatever interest them. If you start bottom up, little chance you'll catch the attention of a teen because it might be conceived as boring and not cool.

  50. Processing (language) by Oscaro · · Score: 1

    Processing is a java subset (but you can use full java if you wish) geared toward "visual computation". You can see some great examples here http://complexification.net/gallery/ or on flickr (just search for "processing" tags). Project home page is here http://processing.org/

    I already used it to teach something to my nephew (12yo) and he finds it great, mainly because he can have some "cool" effects and stuff on the screen and can instantly see what his code does.

    1. Re:Processing (language) by Anonymous Coward · · Score: 0

      I'm glad somebody mentioned Processing as, to my mind, it seems a lot more accessible than C. You can start hacking away and get simple, visual results almost instantly. Then you can move on to more complex things, like importing data (nice introduction to xml) for visualizations, audio analysis for synched animation, or even hook up a camera and try real-time image analysis.

      And to think some of us started of with a ZX81 (without the 16Kb extension pack at first!) - young blighters don't know how lucky they are!

    2. Re:Processing (language) by Sunshinerat · · Score: 1

      Processing is indeed a great option. Instant graphical feedback on what you do. It will even let them write some simple games or convert their little handiwork into a screensaver.

      I was amazed by this myself a while ago, just to kill some time I did some animation magic myself.

      --
      Load New Commander (Y/N)?
  51. Not with C by Lord+Lode · · Score: 1

    C is a great and powerful language, but maybe it's not so good for a teenager to begin with. Myself, I began with QBasic, which was on DOS on our computer. I only started learning C at later. QBasic was a great language to begin with because, it being a scripting language, had very helpful error messages if something went wrong and was very easy to debug. QBasic also had a quite nifty documentation. And there were two example games included which could be modified to start seeing the effect of changing code. I also loved it because you could do graphics with it - had I started with C back then, I'd have been bored by text input and output very soon. Of course today DOS and QBasic are less relavant today, and also not *nix as you asked. But maybe another language that is also a scripting language like QBasic, such as Python or Ruby, could be helpful?

  52. Well......NetBeans? by Anonymous Coward · · Score: 0

    I would start with netbeans ide for the kids....
    you can c/c++, Ruby, Java and Fortran :P

    it's made in java and uses the gcc and g++ compilers if installed.

    it's a bit VS Studio in java wich you can run under *NUX or *NIX-like

    good luck

  53. First the dirty stuff.. by Sidn · · Score: 1

    I would suggest you start off with some basic C to demonstrate variables, functions and then some more advanced but very important stuff such as pointers and structs. Structs are an easy concept for the introduction of classes, for which i would suggest some scripting language such as ruby (to ease experimenting on his own). This way he may appreciate the use of classes and the avoidance of pointers more than without knowing the dirty origins.

    1. Re:First the dirty stuff.. by whistlingtony · · Score: 2, Funny

      10 print "No Freaking Way"
      20 print "Who starts on C?"
      30 print "Seriously!"
      40 goto 10

  54. Concepts, not programming languages by Anonymous Coward · · Score: 0

    Show him the concepts of how information is worked on with. Show him your work and what you do.
    Show him the simple steps what happens when you listen to an MP3 (filesystem, reads, put data to the soundcard) etc.

    He first needs to establish a notion of how information flows in a computer and that a computer essentially cannot do anything besides addition (and stuff).

  55. You don't. by TheSeer2 · · Score: 1

    You give them a computer, if they're the kind that's built for programming they'll do it themselves.

  56. My experience by mtxf · · Score: 5, Interesting

    I started programming when I was about 12, and I am completely self taught. My parents knew nothing about computers, and still know nothing now despite my efforts. Anyway, i started with javascript, html, and php. (This was around 6 years ago). I think it was much easier to start learning the basics of this kinda stuff when you don't have to deal with all the boring (to a 12yo) details of memory management, libraries, and compilers etc. Web programming is something were you can get the instant results and action, you can just keep tweaking the source file and hitting F5 until you get something that works and looks vaguely like what you're after; this is especially useful when you don't know what you're doing. :)

    I had a few books which taught me the basics, a javascript book and a html book. They only covered simple things, (I think the js book was a For Dummies..., actually), but it was enough to get me started. After that I found the php.net docs and a friend showed me loads of his php code and i picked that up fairly quickly.

    Being a website, it's something easy to show off too, it was kinda cool to be like "dude, the whole world can see my webpage!". Following that theme, i got started on irc bots, eggdrops are written in C, and you can script em with tcl. Be careful tho, tcl is kinda quirky and weird (at least, that's how i remember it). But it's great for simple stuff, get the bot to parse some text and reply etc. This might also be a good time to learn some networking stuff. Also since eggdrops can also have C modules written, this is a possible path into C, although I didn't go that way so I don't know how good it is.

    I eventually learned C(++) from some online tutorial, http://www.cplusplus.com/doc/tutorial/ I think. And I wrote a load of code for manipulating some large binary files (game resource files, from Halo). I certainly don't recommend letting anyone learn C solely from some tutorial, since I had rather large gaps in my knowledge at this point (that code i wrote is terrible), but it was some great experience anyway. I played around with some .NET (ugh!) gui stuff, because I didn't know how else to make a gui program at the time (seriously, I don't know how I was meant to know about qt, gtk, or win32 etc at this point) and a program that just prints text on the command line got boring real fast.

    Hacking at computer games was what really drove my interest in C at that time. Reverse engineering of the file formats was fun! Even if I did kinda suck at it and just found most of the info on the web.

    Looking back, I'm thinking I probably would have liked someone to show me python (and maybe perl) much earlier than when i eventually discovered them. php sucks as a general purpose scripting language and C gets tedious for those little tasks.

    Sorry that was all probably a little incoherent, I spent the time I was meant to be doing english homework programming ;)

    1. Re:My experience by codeButcher · · Score: 2, Insightful

      Oh, and remember that until you kick him out of the house (or at least to the basement), his job is to play, not work.

      --
      Free, as in your money being freed from the confines of your account.
    2. Re:My experience by Larsrc · · Score: 1

      BS. His job is to learn. There's an incredible amount of stuff that's vital for a kid to learn. Some things are learned by playing (e.g. using your imagination, behaving in social contexts etc), other things are learned by working (e.g. if you put in work, you get paid). Not making your child do any work is a great disservice. Of course, making your child do too much work or work under bad conditions is just plain cruel. But in the end, working is something that has to be learned, and it's an essential thing to learn -- whether it be "wage work" or "entrepreneurial work".

      -Lars

    3. Re:My experience by codeButcher · · Score: 1

      Eloquently and well put, I must agree.

      --
      Free, as in your money being freed from the confines of your account.
    4. Re:My experience by Anonymous Coward · · Score: 0

      I also started with html and javascript. Bad idea: it created bad habits. Then I learnt Java. I learnt better programming habits but I found java annoying (long method decleration). Then I learnt c++/c and loved it. Start on c/c++.

    5. Re:My experience by Anonymous Coward · · Score: 0

      Best reply yet IMO.

      Kids, even nerds and geeks, want only one thing: fun.

      Fun can be to create your own game,
      Fun can be to build a keylogger and terrorize the neighbourhood(or the internet equivalent of that)
      Fun can be to show off the cool website you made and have everybody be jealous or asking for help.

      At the end of the day it has to be fun for the guy doing it. I started programming about 10 years ago with Visual Basic 4 and Win3.1; I learned it because I was spending too much money on games and thought "heck I'll make my own".

      Ten years into the future, I know multiple languages, have a job as a code monkey(still in college) and am sending patches to various OSS projects(alas no kernel programming yet)

      So my advice would be to either start a kid off with HTML and PHP(later add javascript) OR Python and SDL(or whatever equivalent languages you chose)

      Programming on a CLI suck for a child, they want to do something that THEY benefit from(fun), if you can get your hold on a little display where it is easy to manipulate pixels, hook that up the PC, write a little function called "set pixel" and give that to a child it will also be fun, but he won't be able to show it to his friends because they don't have the equivalent hardware.

    6. Re:My experience by Kgee · · Score: 1

      This is exactly how I started, and I second this idea as a fun way to start. You get the ease and flexibility of html/css with the good skills learned from php. To get results is not frustrating, which is important to a young person starting to learn something.

      --
      This is not a self-referential sig.
    7. Re:My experience by Anonymous Coward · · Score: 0

      Hey, stop stalking me.

      I started at 10 learning HTML, CSS, JavaScript. At 12 I learned Visual Basic, then ASP, then PHP at 13, and today at 17 I administer an online auction (selling Danish stamps) that I wrote from scratch in PHP.

      I also have my very own PHP eggdrop, and I do a lot of PHP programming. I recently picked up Perl, which I wished I had learned about earlier.
      I'd like to port my eggdrop to Perl, since PHP is bad for long-lasting processes (uptime >1 month?) - I've written my own high-level garbage collecting for PHP (mostly to clean up after my own shoddy code...)

      I also learned C++ at 13-14 from cplusplus.com. I've hacked some file formats and done some small cli utils in C/C++, Perl and PHP.

      I mean, sheesh, stop telling my story.

    8. Re:My experience by Richard_J_N · · Score: 1

      > php sucks as a general purpose scripting language

      Really? I have to say, I think PHP-CLI is pretty good. I tend to write long scripts in PHP, and shorter ones in bash. I've not come across anything that has ever required me to learn perl yet...

    9. Re:My experience by mtxf · · Score: 1

      PHP is bad for long-lasting processes (uptime >1 month?)

      [17:43] #mtxf# uptime Online for 325 days, 04:59 (background)

      try getting the real eggdrop http://www.eggheads.org/downloads/ ;)

      I have 4 of them running and they all have an uptime > 200 days

      (not to brag or anything)

      I also tried writing my own in C, i think it managed maybe half an hour of uptime? Sadly I never did get around to finishing it though, got bored.

      Hey, stop stalking me.

      You learned ASP, hehe. How'd that work out for ya?

      Also, I hope you're earning a tidy sum from that online shop, I could sure do with a steady income off of something like that. I'm off to uni to study computer systems engineering (yep, I'm branching out into electronics - I figure that having a physical product to sell is gonna be a good thing with things going the way they are.)

      I was gonna add some ontopic stuff here, but I'll save that for another post, where it'll have slightly less chance of being modded down.

      cheers

      Ps, you made me use html mode for the quotes, now i have to go and add p tags around all my paragraphs; i hope you're happy :P

  57. FFS! by Anonymous Coward · · Score: 0

    Programming? We need plumbers! Good plumbers, and builders, craftsmen... not another mediocre programmer.

  58. write a game with him. by buttle2000 · · Score: 0
    I started writing games from the radioshack trs-80.
    With python or something else you could easily do a text adventure game.
    a bi-dimensional array of objects. each one a room.

    good luck.

  59. Don't do like daddy by Anonymous Coward · · Score: 0

    Get him to program stuff like mini-robot, with PIC-BASIC or something similar. Programming electronics *is* funny. This way, with some luck, he wont end up as a pure software geek, useless nowadays in your country !

  60. Link computer programming to his schooling by LM741N · · Score: 1

    First, like the other poster said, start him out with an easy to learn language like Python. Then as he gets more experienced, he can use the innumerable Python add-on packages to do all sorts of things. Remember, the O'Reilly Python quick reference book is the thinnest of all of them. I use Python and various incarnations of Numeric Python as the language doesn't get in the way of prototyping algorithms. Later they can be ported into C or FORTRAN.

    You don't say what age he is but do ask for the opinions of those in high school so I am assuming he has already learned quite a bit about math (although this is 2008, not 1975, so who knows what crap they are teaching kids?) I was always bored with math especially in high school. Thus he might be at a stage where he could find out where applied mathematics is really done- on a computer.

    The real world doesn't boil down to simple closed loop equations, as many simply cannot be solved in practice on a piece of paper or an exam. They require iteration to some tolerable error function, so that a very close approximation of the answer can be found. That requires the very high speed of the computer in order to do the iterationa in some reasonable amount of time.

    Moreover, topics like integral calculus are very easy to explain on a computer, since the computer performs it just like is done in the first week of classes, by breaking the area under a curve into very small parts, and adding up all of the resultant parts of the function. Thats a lot more intuitive than some obscure looking equation.

    I could go on and on, but I think you get the general idea where math is concerned. In science, where many calculations might be needed to solve a problem, he could just write a simple program to do the same in a microsecond. A great example of how a computer can speed up productivity and research. It would probably be great for homework, although he would still need to know the curriculum of the class in order to pass an exam- unless they now use computers in math exams, which I doubt.

    I really wish I had a computer in high school, as I was already doing quite a bit of electronics. But alas it took a few more years for the PC to be invented. In my days, just having a hand-held calculator was quite a luxury.

  61. Do yourself a favor... by Chineseyes · · Score: 5, Insightful

    Don't try your to encourage your child to do anything for which they don't have a natural inclination, they will end up hating anything you try to push them towards to forcefully. Give them a well rounded education and make programming one of many things you expose them to, this was what my parents did and I am thankful for it. I lost count of how many people I met in college whose parents had enthusiastically encouraged them to learn one topic or another, especially the children of professors. Some people took off with whatever topic their parents introduced to them but most of them ended up switching majors 4 or 5 times and spending years and many dollars on undergraduate education. Demand excellence in whatever your child has interest in, with the caveat that as they get closer to 18 they have a plan on how they will feed themselves (so you want to be an actor Johnny? Great, better double major in something practical otherwise you'll be waiting tables cause I won't be paying your bills).

    --
    I think the invisible hand of the market has its middle finger extended

    --A wise old fart named SC0RN
    1. Re:Do yourself a favor... by Anonymous Coward · · Score: 0

      Introduce your teen to the bigger picture of "programming". Not just how to program a computer but also how to program your environment, structures like society, and yourself (like with NLP). How you "program" (compose/write) a song or text or speech. How you are using any language to communicate (be it spoken or gestures). Show how you are using your intuition to program something (yes, you use it for programming). How you can use motivation to drive a project. Demonstrate how contagious motivation can be. Show how to inspire (also yourself) to change a programming. Basically, how the underlying principles work.

      This can then be applied to any craft he wishes to learn. And if he learns a (any) craft really well, it's a lot easier to add additional ones. Like with programming (and other) languages.

      I'd also recommend to take a class in linguistics.

    2. Re:Do yourself a favor... by mzs · · Score: 1

      I agree, but the poster did say that his son has shown some interest. The best thing the father can do is open his pocket book so the son can have books and computers to experiment with. He'll naturally have questions and then the son can ask the father. Often those people that think that they are terrible at explaining things but clearly have some knowledge in that area frustrate those that ask the questions because the poor explanations make them feel stupid. That is why the boy learning so much on his own will work great. The father's role in answering questions then really will not be to answer the question, but to point where the answer is, it helps if the father will answer in a humble way such as, "I don't really remember exactly let's man awk." The other thing the father can do is when he notices a pattern like this: The son will come and ask a specific question, yes he could answer it but it seems like the boy may be going about the problem the wrong way. Some conversation there instead of simply answering the question would be better and then a suggestion of pointing out a different approach will work great. It works great to say something like, "Man I had such a similar question when I was doing foo, and after banging my head on it for at least two months I figured-out I was going about it completely the wrong way. It's better if you do it this way..."

  62. Give him a C64 by Lord+of+Kaos · · Score: 1

    Bigges geek producing machine ever. :)

  63. Draw on the experience of the community by jeevesbond · · Score: 2, Funny

    Draw upon the extensive knowledge of the GNU/Linux community, for example:

    • whenever he asks a question, reply with either: 'OMG RTFM!!!11!One' or 'man *question*'. The shortest and most arrogant answer is always most helpful.
    • if there's a piece of hardware not supported, the best way of helping a newbie is by shouting, as loudly as possible, 'IT IS THE MANUFACTURERS FAULT!' Calmly explaining the situation with hardware support in GNU/Linux is not a good idea. It only leads to further questions (to which the answer is 'OMG it's Free software, code the driver yourself you n00b!');
    • if he finds any shortcomings in the software, ensure you encourage him by assuming the problem is his fault. Make certain to chortle condescendingly whenever he points anything out to you. If it is at all possible to blame the shortcoming on him, ensure that as you wander off -- chortling as before -- say, just audibly, 'luser error';
    • newbies feel most secure when their mentors display their superiority, always make sure your boy is aware of your vast knowledge and epic intellect;
    • loudly proclaiming that, 'next year will be the year of the Linux desktop' makes GNU/Linux newbies feel secure about the platform's future;

    If he actually does find a bug, here are some of the basics you should tell him about bug reporting:

    • keep it vague - developers don't want your life story, don't bother with debug traces and all that guff;
    • always gush - the ideal bug report is at least half gushing about how he loves the software;
    • demand developers contact him personally - this is very important, developers prefer communicating privately, private e-mail is best;
    • always raise new reports - it's never worth the bother of checking whether your bug has already been reported;
    • bug reports aren't just for bugs! - feel free to use bug reports for idle chat about the issue, or related things, even for just storing your shopping lists, tricking people into viewing goatse, or even rickrolling the devs;
    • most bug reports are the highest priority - if you're raising a bug report, it's of the highest priority to you, right? So generally, enter bugs with the highest priority possible.

    Now this post may seem like a troll, but if you do exactly the opposite of what I advise, he should do well.

    --
    I'm going to transform myself into a mighty hawk. Either that or I'll just go and work at Dixons, haven't decided yet.
  64. Find something your kid likes... by dave420 · · Score: 1

    ... then show him something *you* made that builds on his interest, making it even cooler. Robots, tanks, helicopters, police cars, whatever it takes. That will pique his interest like nothing. Encouragement, explanation, even bribery (reward coding something specific with money - worked for me). Both of my parents were developers back in the early days of mainframes, and that's how they got me hooked. I've been coding since about 6 or 7. I say "coding" - back then it wasn't much, but it sure was excellent fun.

  65. Children oriented language by Anonymous Coward · · Score: 0

    There's a GUI programming environment called Greenfoot, well suited to 2D games, specially written to get children and teenagers coding. It's similar to Java/C, and is free. (I think it's Windows only, though.)

  66. Pascal was the hook for me by mariushm · · Score: 1

    My father worked at a chemistry research lab and they had a small computer room with 4 486 computer (it was 10 years ago).

    I went there with my father wanting to play Mario but one of the people there started Pascal and showed me how to draw lines and circles in it.

    So I started drawing houses and trees and I got hooked.

  67. Hardware by spankymm · · Score: 1

    Buy him some uber-cool hardware which doesn't have *nix drivers, and delete his only copy of windows.

    --
    http://cafepress.com/spankymm - for the Masturbating Monkey in you!
    1. Re:Hardware by Zwicky · · Score: 1

      Hah! Evil ;)

      However: Relating somewhat tangentially to this, if Anonymous Hacker's kid is anything like me he'll want to work on something simple[0] (so not *nix drivers then) that is genuinely useful. Maybe a command line tool or a small GUI app (using a toolkit to begin with). I still use several of the tools I threw together and being able to throw things like this together to fill a gap is a useful skill that will last throughout his (potential) programming career.

      Either that or a game; whichever way the kid swings.

      [0] Make it fun and don't overwhelm the kid.

      --
      "Three eyes are better than one" -- Lieutenant Columbo
    2. Re:Hardware by Jens+de+Smit · · Score: 1

      Probably _the_ way to get him (more) involved in piracy, and (more) frustrated with you...

  68. how i started by theheadlessrabbit · · Score: 1

    when i was young (12ish), i had a magazine subscription that had a section in the back of every issue called "basic training" where it gave you the code for a simple game that you could program yourself.

    i sat myself in front of my IBM PS/2 (which i still have, and it still works) and typed in the BASIC code, only to discover that QBASIC does stuff differently than whatever version of BASIC the magazine used. but i had spend hours coding, i refused to let that go to waste, so i read the error messages and help files, and eventually got some of them to work. then i modified them.

    then i started making my own games, (including that RPG that every single programmer in the world is working on yet never finishes.)

    i was playing a lot of command and conquer around this time, and i discovered the awesome power of the "rules.ini" file, so i started making games with separate text files to control the variables, so i could tweak them game more easily.

    then i finished elementary school, and got stuck in high school with the crappy workload, making coding impossible.

    high school programming class was a joke, but then when i went to art school, i got really excited about micro controllers, and the BASIC stap let me use QBASIC again, and i was happy.
    then i discoved the picaxe system, which is an even easier form of basic, and way less soldering.

    i would have to say, working with BASIC powered micro controllers is the way to go. BASIC is so easy, even I can do it, and when you finish, you have something that you have built yourself, and it actually does something! its a damn good feeling.

    --
    -I only code in BASIC.-
  69. Simple by Snaller · · Score: 1

    Tell him if he does it right he'll make tons of money and then all the women will want him.

    --
    If Google really cared they would fix Android Chrome to reflow text, instead of discriminating
  70. Make it fun and keep it simple by jonnyj · · Score: 1

    My lad started coding when he was about 10, but it took a few false starts. In my experience, compiled languages like C aren't a great place to begin, as the need for compilation really gets in the way of the learning experience. I also had a failure with PHP - I thought that he'd enjoy web hacking as he was comfortable with HTML, but I found that cookies and sessions - without which you can't do much in a web environment - were a huge conceptual problem for a young mind.

    You need to start with something that's simple, rewarding, well documented and with good community support. A language that permits procedural code and dynamic typing is also much easier to teach. I suggest Python for the language as it has a great beginner's IDE on Linux (DrPython) and, importantly, it produces comprehensible error messages (Ruby on Rails: I'm looking at you). It also produces clean, legible code.

    You need to move beyond text-based programs pretty quickly: no-one wants to show off a terminal session to their mates. GUI interfaces aren't very teenage, so I suggest you check out PyGame for graphics and sounds - simple to learn with quick rewards.

    Finally, enter the next PyWeek competition with your lad - he'll never win, but it'll help him to see how a more complex project fits together and give him a gret sense of achievement.

  71. Do it the university way... by Splab · · Score: 1

    Start with SML (moscowML is a nice one), teach him what recursive functions are and how to solve problems. Teach him about datatypes and how to define your own, show him how to make trees and how to traverse them (go look at the curriculum, run the same thing with him - heck as a C programmer chances are you will learn something) If someone is used to programming ML can be quite hard to understand and very frustrating, however as a language for someone new to programming its easy to get started with and it wont teach you bad habits like PHP.

    Next is usually Java, its a nice object oriented programming language for newcomers to learn about objects and its a safer way to program compared to C/C++. If the interests in programming still persists at this point show him C/C++ and the work you are doing.

    Also remember, while doing all this you should gradually introduce stuff like algorithms and advanced math, they go hand in hand with programming.

    1. Re:Do it the university way... by Anonymous Coward · · Score: 0

      Instead of ML one could also use Haskell, or a LISP dialect

  72. Show Your Enthusiasm by Dean+Edmonds · · Score: 3, Insightful

    Whether you teach him programming or someone else does, the most important thing you can do for him is to show your enthusiasm for programming and demonstrate why you love it. Those kinds of things are infectious. If he catches the bug then he'll learn it, one way or another.

    --

    -deane

    1. Re:Show Your Enthusiasm by Anonymous Coward · · Score: 0

      Whether you teach him programming or someone else does, the most important thing you can do for him is to show your enthusiasm for programming and demonstrate why you love it. Those kinds of things are infectious. If he catches the bug then he'll learn it, one way or another.

      True. You shouldn't have to do much if he is really cut out for programming. Just point him in the right direction and he'll get into it if its really his thing.

      My dad didn't have to do anything to get me into programming at age 9 (though he did know quite a bit of programming, though he was a civil engineer). I just naturally wanted to do it (mainly to create video games and other fun stuff). My dad just bought a computer and then provided me with whatever software tools he could get me (usually by pirating them; these days you can just use open source tools) and books on the languages I wanted to learn (this was pre-internet days, hell, I didn't even have a modem until I was 14, so books were the only source of info). I actually read my BASIC reference manual cover-to-cover many many times over and knew how to use just about every BASIC command. After learning BASIC, moved on to C, assembly, Pascal, etc.

      I grew to love programming though never really got into game development.

  73. Simplest Way by sheriff_p · · Score: 1

    Help him to find a project he's interested in, in a language/environment where he can get damn-near instant results, and then let him run with it, offering guidance only if he asks for it.

    Hell, I got in to programming when I saw my brother playing on a BBC Micro, and asked him to teach me. I was 8 at the time. He helped me draw a picture of a door (using grid paper to sketch it out, and then copious LINE() or whatever statements). It was the coolest thing I'd ever seen. Next I drew a space-ship (and a pretty piss-poor one too ;-)

    No-one needed to teach me after that. I read all the programming books I could find and old Micro World or whatever it was called magazines... And, I still love programming :-D

    Get him started with Javascript. It's an awesome little language that scales up to all sorts of useful programming concepts, but best of all, you can get visual results reeeally quickly. There are lots of tutorials on the web, even if most are shitty. If he's still on it after a week, buy him the ORA book.

    -P

    --
    Score:-1, Funny
    1. Re:Simplest Way by kbielefe · · Score: 1

      I was beginning to wonder if anyone would suggest a solution that involved—I don't know—listening to your child. Kids don't just decide they want to program without having a reason in mind.

      I'd ask him what his goal is, and go from there. If he thinks it would be cool to make a widget for a social networking site, you know where to start. If he wants to make a java game for his cell phone, that's a completely different approach, but you still know where to start. Don't be afraid to make stubs and let him fill in only the interesting bits at first. Things teens might want to do with a computer are a lot more complex than when we got our start.

      --
      This space intentionally left blank.
  74. Porn... by Anonymous Coward · · Score: 0

    1. Take some good porn.
    2. Encrypt it with a simple algorithm, ROT13, something like that.
    3. Give him the algorithm and the encrypted porn.

    Voila!

  75. Give him his own machine by Eternal+Annoyance · · Score: 1

    Put slackware, gentoo or another advanced distro on it, but don't install a gui (the next step is games, which burn away a kid's time).

    Let him figure things out by himself and make sure he's got easy access to the basic information, the rest he should be able to figure out himself.

    Make sure he's got complete access to all information about his machine (so he can maintain it by himself).

  76. Just don't by Anonymous Coward · · Score: 0

    a teenager is not supposed to do any programming. Let him hang out with friends otherwise what you get is a geek.
    He can discover the joy of programming when he is older.

  77. C! Not C! Sweet Zombie Jebus! by whistlingtony · · Score: 1

    Hello World is C? Sweet Zombie Jebus....

    We all started on something easy like Basic, or tapping something into a TI calculator, or what have you. It was the almost instant gratification that got us hooked.

    A little typing, tapping, It Ran! oh wait, that's not quite right....
    A little typing, tapping, It Ran! oh wait, that's not quite right.... and a few years later you look up to discover you're a Nerd.

    Now granted that's horrible coding practice, but it's what we started with. We all programmed little games. Who among us didn't try their hands at tank wars or Pac Man, and of course most of us tried to write a character generator for our favorite RPG. The point is we didn't start programming, we had other interests that programming could help us with in a cool manner.

    Don't start with anything low level. Don't even think it. C? Seriously? Please do introduce good practices. Write out a flow chart, do your pseudocode!

    Find a little project for him. Start with something small. Show him how to tweak things. You'd be amazed at how cool it is to change a little bit of text on some program. Do something related to something in the real world that he enjoys.

    And don't be peeved if he decides it's a giant PITA, 'cause we all know it IS. :D

    -T

  78. Give him Visual Studio by hinchles · · Score: 1

    Give him a copy of VS with C# as primary language and set him some simple challenges to do. Perhaps start with something like "make a basic calculator" all of this can be done in the VS GUI without him having to go in depth for all the framework and structs of the project all he'd have to do is create the onclick events to take the 2 inputs and the action fairly simple and yet should be challenging enough to get him interested. If he can manage that kind of task in something simple like VS then you'll find it'll really get him interested and he'll then start poking around at the more complex stuff. Alternatively give him EditPlus and tell him to make you a simple signup and login website in something like PHP and MySQL again simple enough but with enough challenge he'll have to look up some stuff and read some docs etc.

    1. Re:Give him Visual Studio by glebd · · Score: 1

      VS and C#? Tie him to Windows right from the start? Thanks, but no thanks. (Windows PC in my home is for games only.)

  79. Exaclty by Baron+Eekman · · Score: 1

    A good and appropriate project is the way to go. Then choose which tools are most suited.

    Write a rehearsal application, a database for his music collection, program Lego Mindstorms, whatever. A project automatically set both short-term and long-term goals, your kid will inituitively pick up quickly how things work, and it is easier to think about the problem encountered.

    You can always go more low-level afterwards, according to the developing interests of your child.

  80. Not NetHack! by Anonymous Coward · · Score: 3, Interesting

    Not NetHack! It was written by the evil Wizard of Yendor with help from his idiot minion Eric S. Raymond; consequently, the source is a horrifying abomination worthy only of the renegade god Moloch. It is not a good learning example. You should be at least a level 20 Kernel Hacker to venture inside.

    Can I suggest instead that you look for a simple game written in Python or Ruby. They are likely to have source that is possible for level 1 Noobies to understand.

    1. Re:Not NetHack! by ThePhilips · · Score: 1

      the source is a horrifying abomination worthy only of the renegade god Moloch. It is not a good learning example.

      Hm.. Well, you can always see it as how to NOT to write code. First.

      Second. If code is really shitty, that means as first assignment one can try to improve it. Reading code and trying to improve it (though might be tough at first) helps develop into better programmer.

      After all, there should be some work for good elves too ;)

      --
      All hope abandon ye who enter here.
  81. Quick Results (RAD) by aembleton · · Score: 1, Insightful

    You need to show him something that will quickly show results, preferably something that can display a UI and I guess these days that would be best done via a web browser. Try to teach him some PHP so that he can quickly see the fruits of his work on the web, and from there move to Javascript, mySQL, and then to AJAX. With that knowledge teach him to learn for himself by developing a facebook application by reading the facebook api and going from there. From there you can move him onto some of the C/Java code at which point he should have a strong understanding of the logic and will have picked up some useful SQL skills.

    Quick results are what got me into programming. Seeing that I could code a small, higher or lower game in about 10 mins for the BBC Micro or an Acorn and then show that to anyone who was interested was almost instant gratification. These days a web based project would be more impressive and easier to distribute.

  82. In french ? by Anonymous Coward · · Score: 0

    Don't know of any english equivalent, but if your son speaks french (or is learning french), you can get a copy of "Apprendre à programmer avec Python" (1).
    Freely downloadable from the internet (google it), it's a great book used in schools (from age 14).

    It quickly gets into graphics programming, this way the student produces something graphical very fast.

    1: http://www.cifen.ulg.ac.be/inforef/swi/python.htm

  83. Chuck by six025 · · Score: 1

    Chuck has been covered before on /.

    http://ask.slashdot.org/article.pl?sid=07/01/20/0434210

    Although the syntax *might* be a little too advanced at this stage ... being able to get real time audio feedback from method calls etc. will provide a certain fun factor that could spur his interest more than simple text output on a terminal screen (and could double as a great debugging aide).

    There is full documentation with the install, and a lot of example functions and classes to get started. The separate GUI environment miniAudicle - currently in beta - allows Chuck programs (Shreds in Chuck speak) to be started and stopped in realtime, making it very easy to use.

    It's a little like the old days of "Logo" but with sound :)

    http://chuck.cs.princeton.edu/
    http://audicle.cs.princeton.edu/mini/

    (not sure why but the server is currently unavailable).

    More info here:

    http://en.wikipedia.org/wiki/ChucK

    Peace,
    Andy.

  84. Illegal stuff by Anonymous Coward · · Score: 0

    Teach him about software exploits, but tell him in no uncertain terms that this is illegal. But that's why it'll be cool, and he'll be able to impress his friends. :) And if he makes this a career, he might turn out to be one of the few who actually understands that security is important, everywhere.

  85. Interesting programming language - Euphoria by stasike · · Score: 1

    There is a very nice language for learnig to program.
    Euphoria
    www.rapideuphoria.com
    As easy as Basic, with all the stuff a programmer needs, without the need to use object-oriented methods.
    Very, very nice and clean syntax

    A teenager can learn all the stuff he needs to start writting his own programs in an afternoon.

    It has a VERY friendly mailing list, discussion forum, 1800 programs submitted by users,
    on Windows it has a nice clicking IDE - submitted by some user and written in Euphoria itself.
    It also runs on Linux and has even FreeBSD binary available for download.
    There are quite a few graphical games written in Euphoria, Euphoria Editor (with syntax highlighting that works as an "IDE" written in Euphoria), many, many libraries, lots of stuff. Ready for download and tinkering.
    I know there are quite a few C programs (or python, or perl, or [insert the name of your favourite language here]) available, but majority of those 1800 programs written in Euphoria are readable (and understandable) by an absolute beginner.
    I personally have learned how to program with "raw" Windows API using Euphoria and their win32lib. I have created a simple Windows graphical game. By writting code, not by clicking on fancy buttons.

    It is a simple interpreter with a GRAPHICAL debuger (by graphical I mean running in color terminal in text mode, resembling the very old Borland C you remember from 'good ole DOS days') that can be used to step through the program ((this is one of the most important tools for a beginning programmer)) and display variables, and ...
    The debugger is surprise ... surprise, also written in Euphoria.

    When you have program debuged and you want speed, you simply "compile" your into a C source and run that through a compiler of your choice.

    The newest version is OpenSource (used to be shareware, nagware, free for non-commercial use)

  86. squeak & etoys !! by bukuman · · Score: 1

    I'd start here http://www.squeakland.org/ the environment is based on smalltalk 80 and is pretty pure OO, so even though it looks like a toy they will 'get their mind right'.

    On the surface it has a fantastic drag'n'drop tile based scripting layer that allows kids to quickly get toy and demo things working - building both familiarity with concepts, confidence, and interest. This http://www.squeakland.org/school/drive_a_car/html/Drivecar12.html jumps into instructions for a 5 minute draw a car and write the program to bind it to a drawn steering wheel. You can quickly progress to programs with sensors doing track following. I've used it to make flocking games (like herding cows etc) for the amusement of my kids.

    It is intended that you can drop under the scripting and start using the full OO smalltalk (http://www.squeak.com) classes, inheritence, coding while you debug while you run. OS integration, OpenGL bindings, links to DBs, multimedia, a whole host of good stuff.

    The idea is to give them something it's easy o come to grips with but that is OO, open, and as deep as you want to go.

  87. logo by Anonymous Coward · · Score: 0

    I started with LOGO, drawing lines, circles and squares. Even learned the basic concepts of polygons there. I didn't get variables yet, bu that came soon after. Turtle drawing was a good experience for me!

    1. Re:Logo by xtracto · · Score: 1

      BTW, you can look at bugmenot.com for a username and password to avoid having to register.

      --
      Ubuntu is an African word meaning 'I can't configure Debian'
    2. Re:Logo by dhasenan · · Score: 1

      This is for a teenager. Starlogo TNG looks like it's for eight-year-olds. Even if it's appropriate for an older audience, it doesn't look like it at first glance, so it's not appropriate.

      I'd start off with something that gives a GUI designer. Get a GUI, then make it react in simple ways. It's pretty easy to get something that looks good using Gtk#, though maybe a dynamic language will be easier to work with at first.

    3. Re:Logo by neomunk · · Score: 1

      I prefer NetLogo myself, but that's because I like to whip up little simple simulations of various systems, and netlogo excels at exactly that.

    4. Re:Logo by Metasquares · · Score: 1

      You're all going to hate me for posting this, but this sounds like what VB was made for.

  88. Maybe he should try some healthy pursuits instead? by Cannelloni · · Score: 1

    Such as chasing girls? Seriously, programming can never be good for a kid.

    --
    Beauty is in the beholder of the eye.
  89. Better not by freeplatypus · · Score: 1

    Don't encourage. Let them have happy and social life.

    No, I didn't read TFA.

    1. Re:Better not by Zwicky · · Score: 1

      No, I didn't read TFA.

      Realize the truth. There is no 'article' ;)

      As for your point, I agree insofar as he shouldn't push his son but should merely point him in the right direction.

      His son is "starting to get curious about computers". Obviously this doesn't necessarily mean he is going to want to become some l33t hax0r (he may find he doesn't like it), but expressing an interest does open the door for a little encouragement by his father.

      Anonymous Hacker should help his son explore what is available, find something that appeals to him and go from there. Guide him - but don't force his hand and don't make his decisions for him - and the rest will follow.

      (And don't be disheartened if he later decides that a hacker he is not).

      --
      "Three eyes are better than one" -- Lieutenant Columbo
  90. Appropriatness is Prime by Anonymous Coward · · Score: 0

    The one thing Id suggest you try to impress on him is the importance of selecting the right language for the right job. Too many people these days use for example Java for apps that would much better be coded in C for the sake of performance, or C when Perl would be much simpler and performance is not required.

    And for the sake of the gods, dont let him anywhere near C#/.NET or any of that single platform shit.
     

  91. Let him code something that is visible by Anonymous Coward · · Score: 1, Interesting

    As a teenager I liked the simple putpixel to draw on the screen.
    You can see immediately what changes you are doing by changing x and y position and/or color. And ofcourse create your own line/circle/polygon routines.

    When you can see what you are coding it makes it more fun.

    Just my two cents.

  92. Let him discover by RAMMS+EIN · · Score: 1

    When I learned to program (I was 8), it was DOS and text mode and BASIC. The programs I wrote were simple "enter some text or numbers, get some response". It doesn't have to have fancy graphics and the like to be interesting.

    And I'm not saying that because I'm an old fart. Everybody I know who programs started that way, although the younger folk usually started with GNU or BSD and Perl or Python, rather than DOS and BASIC. They do stuff that looks pretty uninteresting to non-programmers, but is very valuable to them. Usually, they start by automating something that they do often. Sometimes, they've found something they found cool (e.g. a script found on the web) and started tinkering with it. I had a book from the library with source code for a couple of simple games.

    Another approach that can be very rewarding is web development. You can get impressive-looking results relatively quickly, and it scales all the way up to what the big guys are doing.

    In the end, though, I think programming is something you have to want to learn. You may want your son to learn to program, and your son may be dreaming of making his own great game or operating system, but that's not enough. You need to develop the way of thinking that allows you to break down your idea into what you can express in your programming language, and that takes time and effort. It's going to be frustrating until you get it. Most people aren't really motivated to work through that, and will give up after a short while. That's ok. You can still learn to program when you are older, and you can be happy in life even if you don't ever learn to program at all.

    --
    Please correct me if I got my facts wrong.
  93. Set up the development Environment... by Anonymous Coward · · Score: 1, Interesting

    ... and let him learn on his own. Many of us learned programming from reading books and tutorials, and most of all from just trying stuff.

    So if he doesn't have it on the machine, install a compiler or interpreter for the language he tries to learn, give him a link to a good tutorial, and then just wait and answer his questions.

    If his geeky farther isn't available, it might be good to know where to contact the community for help (relevant web forums (like perlmonks if he choses perl), mailing lists or the like).

    If he (or you) doesn't know which language to start with, be sure to pick one where he doesn't have to bother about memory management first. That kills the fun at first, and segfaults are hard to debug.

  94. Hackety Hack by Redbluefire · · Score: 1
  95. as a kid.. by Anonymous Coward · · Score: 1, Interesting

    Personally I got into programming after reading those strange books you used to have as a kid where depending on the decision you made you had to switch to a certain page in the book.. I tried to program my own story-game that way. Basically it was just a load of simple IF statements, but it is what got me into programming.

    I also made a few simple scrolling graphics projects. Mostly huge "spaceships" which scrolled across the screen, made with ASCII blocks hehehe..

    This was when I was about 10 I think.

  96. Instill Your Passion by liquidvapour · · Score: 0

    Hi

    I grew up with a software developing father who cannot teach, and gets irritated with someone who does not grok the concepts he is trying to communicate in 5 nanoseconds.

    He was teaching me Boolean logic at the same time I was learning to add and subtract at school, taught me about how CPUs work, made me memorise the ASCII table and then how to program shortly after. He gave me Logo to play with on and Apple IIe and then later Basic.

    Although I now wish that I had been given an introduction to C from a young age this could not have happened as my Dad is a business application developer so he sees all that nitty gritty as a waist of time. He has the same attitude toward computer games. I on the other had would have loved to learn some of that stuff but growing up on the southern tip of Africa didn't have access to that kind of stuff till I was as tall as I am now.

    However the main thing that my Dad passed on to me that I am grateful for is a passion for using computers to solve problems in a practical way. I have found that this translates into any programming language.

    So my advice would be show him what's out there and that there are no boundaries. There is nothing that is "too difficult" or for him to write. (I was well into my 20's before I realised that although I was not the best kid in the class at maths I could write OpenGL games if I put my mind to it.) It also sounds to me like you are in a good position to introduce him to the community of developers so that he can find answers to his questions and inspiration from things that you might not have an interest in.

    As far as languages are concerned show him why there are different languages. If there is a problem that can be solved easily and elegantly with a high level scripting language then use than. If assembler is required to squeeze the last little bit of performance out of the CPU then he should feel confident enough to dive straight into it.

    That, I feel, is probably the best you can do and your son will have to do the rest himself.

  97. Been there by jsebrech · · Score: 1

    Back when I was about 13, I asked my dad to teach me programming. He pushed a visual basic beginner's book and the visual basic 3 floppies into my hands, and wished me good luck. In retrospect, I don't think this was such a bad approach.

    What you'll need first and foremost is an environment with immediate visual feedback, that you can do one-liners in that gradually grow into larger programs. Visual basic fit the bill at the time, but these days I'd look more towards adobe flex (the gui tool, not the sdk), or if you get the heebie-jeebies from commercial products, just use html + javascript.

    What's important is to recognize that there should be some measure of reward right at the start. The kid should be able to build stuff that does "something" his first day, and be able to grow that into building programs that he designs himself.

    Don't try to push him in any way, let him discover things on his own pace. And don't try to enforce your "standards of work" on the kid, because it took you years, or even decades, to build up those standards, and it would be too off-putting to require him to "do it right" the first time around. Following from that sentiment, avoid pushing tools because they're "correct", but instead choose tools that have gradual learning curves, even if you wouldn't use them yourself necessarily.

  98. Try teaching him ruby with Hackety Hack by why by Anonymous Coward · · Score: 0

    http://hacketyhack.net/

  99. My story by Anonymous Coward · · Score: 1, Interesting

    I can't tell you how to teach, but I can tell you how I started to learn.

    My father bought a MicroBee with a tape recorder. He bought games, and I played games. I wasn't interested in programming. He did however code together some small text games, from magazines.

    I played those too.. we solved adventure games together, and when we couldn't progress any longer, we looked at the code.. but neither of us understood it.

    Ofcourse this didn't teach me to code.. what it did was to teach me that there were code, and that computer programs was code.. and could be reed, modified at choice.

    Then I got my own computer, a Commodore 128, with basic.. I didn't touch basic for a long time.. I played games.. but when I got stuck in a game, I did know.. that the games code somewhere did hold the solution for my problem.. I coded a few hundred lines of basic on that machine..

    I got an Amiga, and with that came AMOS, a basic. It was coding in a secure environment. You couldn't touch the hardware (well maybe you could). And I started to do some coding for fun in it.. After all I did know what all computer programs was code :-)

    After that I was self going, and installed Linux and reed C manual pages. I bought a C++ book and started to learn how to really code.

    --

    I guess that todays version of this would be to show him games, and from his age I guess you already have.. So I would get him VisualBasic. Powerful for the beginner, yet no need to peek and pook memoryaddresses :-)

  100. Get him a good book... by rwa2 · · Score: 1

    Get him access to a small bundle of O'Reilley books... make sure he's a bit bored or at least doesn't have any other distractions, and leave him alone.

    Also might consider eventually getting him a little Eee PC or Nokia N810 or OpenMoko device once he gets into it a little more. Install Python or an compiler on it and let him find a creative use for it somewhere with a bit of hacking.

    When I was young, we just had graphing calculators to play with, and we'd play with little programs on them in our free time on the school bus or wherever just because there wasn't all that much to do.

  101. Choose-Your-Own-Adventure... by cbrichar · · Score: 2, Interesting

    I've seen a few other people mention story writing, and I'd second that whole-heartedly. My friend and I first got hooked on programming when we started writing simple 'Choose-Your-Own-Adventure' style branching games in Q-Basic (complete with sqealing PC speaker musical soundtracks).

    My friend even got more sophisticated and started creating simple RPGs - random number generators with modifiers for the attacks, variables for vital character stats, etc. They were alwasy *very* simple, but we had a great time, and learned a lot as a result of it.

  102. HTML by Anonymous Coward · · Score: 0

    You should consider using HTML to teach the basics instead of a "hardcore" programming language. HTML can be applied quickly to activities/hobbies that he already enjoys.
    What's most important is that your son feels like he's learning a useful skill (being productive) that allows him to create a fun or functional "something" (gives a sense of accomplishment). You should look for ways to increase the positive feedback your son needs to stay interested. That way your son need not subscribe to a 3-month software development cycle to create his first "something cool".
    Other options to look into include Flash, AutoHotKey, or other scripting environments.

  103. My story by bioglaze · · Score: 1

    I began programming when I was 16. First I made simple chatbots and console i/o to learn C and C++. Then I moved on to graphics programming because it allowed me to learn many useful algorithms and data structures. I remember the glory when I got my first pixel on the screen. I began coding demo effects and software 3D engines. Actually seeing self-made things move on the screen provided me with motivation to learn more. Now, at 25, I write ray tracers and little games.

    --
    Who is John Galt?
  104. Processing by Anonymous Coward · · Score: 0

    Processing is designed as a programming environment that allows you start producing visuals immediately. In a way it reminds me of 8bit home computers when you you type a line of code and get a line drawn on the screen. No fussing about including headers, initializing structures and callbacks it's all there from the start.

  105. Logo by Anonymous Coward · · Score: 0

    I remember having great fun at moving the tortoise on the screen. That way he'll step into LISP and have a good background.

  106. Re:PHP will ruin your mind by SimHacker · · Score: 4, Insightful

    There are so many reasons not to start with PHP, that I'm not even going to start listing them here. PHP is a HORRIBLE first language, and a horrible second, third or forth language. It corrupts minds, and makes it harder to learn other languages. It's a lot worse than corrupting someone by teaching BASIC as a first language.

    You should be ashamed of yourself for suggesting teaching PHP to a kid.

    -Don

    --
    Take a look and feel free: http://www.PieMenu.com
  107. As a current graduate student by strimpster · · Score: 1

    I would recommend staying away from the low level stuff to start. If he enjoys programming, he'll naturally want to learn that stuff as he gets more advanced.

    I got hooked on programming a little different than most people did. I started to make programs for my calculator that did things that could help me out in my math classes way back in ninth grade, I've been hooked ever since. I've noticed in my academic studies that the best students were those that pushed themselves on their own. I believe that these students will be the ones that succeed in the field because they have a natural inclination to want to learn more. So, I recommend to start to get him interested in making a program that he thinks would be cool. Have it a little simple to start off, and then help him do some more advanced things in it. If he enjoys programming, he will want to do some of the more advanced things on his own.

    It might be easier to have him start with a Basic-type language to start off with. A modern C-style language may be too difficult to learn the concepts at first, as a lot of beginning students really trip up on OO concepts/syntax. If he can handle the C-style language, why not teach him PHP. It is heavily supported by the open source community, meaning tons of examples and online help. This will allow him to move at his own pace. I would not recommend going with a Ruby or Python for an initial language. The syntax is so different than the C-style that is prevalent in the major languages, potentially not aiding him in his initial studies (also making it more difficult to move on to new languages as other languages do not share the syntax structure).

  108. Do not teach, Provide by Dersaidin · · Score: 2, Insightful
    Don't teach him anything.

    Provide him with a computer. Provide him with help when he asks (or not, figuring things out yourself is best).

    Show him how useful it can be to write programs to make the computer do whatever you want.

    If he wants to learn, he will. If not, bad luck.

  109. Gamemaker by Anonymous Coward · · Score: 0

    gamemaker is what got me in to programming. it's very very accessible due to the drag-and-drop functionality, but every drag-and-drop action has an equivalent function in it's interpreted programming language (GML), which you inevitably want to learn when you need to create a more complex game logic than drag-and-drop accommodates.

    the thing that makes gamemaker such a good choice imo is that you get some extraordinarily satisfying results after very little time, which for me was encouragement enough to keep using the tool for years and learning many programming techniques which could be applied to languages i have since learned.

  110. Start high-level by Kjella · · Score: 1

    I remember the first days of programming on a C64, I could program the heck out of it. Part of it was that you could start so easy, but then under DOS/Qbasic I did a lot less and under the Windows API it died completely. At the time it looked like you needed immense amounts of dark magic just to throw up a basic application. I'd probably go with C++/Qt since it's what I know and I think Qt makes C++ high-level, but no matter what I'd say use all the tools like a proper IDE, graphical dialog designers and so on. There's plenty time for learning the hard way manually later, but now is not the time to learn low-level semantics, memory allocation, programming a layout as code and all that. That's to learn when the interest is burning and he's asking to do things that go beyond.

    --
    Live today, because you never know what tomorrow brings
  111. Find out what he wants to accomplish by Dracos · · Score: 1

    Programming is a means to an end. Ask him what he wants to program, then determine how to go about that, which may not be a direct route.

    For (a really roundabout) example, there's a good chance he's interested in video games. Download Blender and turn him loose on that. Eventually he'll need some Python knowledge to put Blender's game engine to use, and probably want to make textures for his models, so GIMP enters the picture.

  112. My experience by codeButcher · · Score: 1

    I started programming at 13, back in the '80s. An older brother had a Sinclair ZX Spectrum and after seeing some of the cool things it could do, I begged him to let me use it too.

    The user manual was a reference as well a tutorial (with exercises at the end of each chapter) and I taught myself just by working through that. Admitted, modern languages can be much more complex.

    I guess it will help if your son has some itch to scratch, likes to "build things" - even if it has not much value in the world at large. One of my first large projects (after the flashy screens and sounds) was to code an electronic version of a board game. I guess programming is much a solution in search of a problem, and finding a problem that interests your son and will keep his attention long enough to learn something useful is half the battle.

    Problem is, with modern computers much has already been done, and a newbie programmer could possible get quite disheartened with what he is able to achieve on his own.

    I did some part-time teaching too at a stage, and my biggest struggle always was to find some practical example to demonstrate the use of some or other concept, to try and keep the attentions occupied. Programming seems to be too abstract for many to grasp the usefulness of. When I had to give a small presentation at the start of one year to try to get more pupils interested in taking my subject, I used a Lego Robotics kit (yeah, Q&D point&click programming, I know) to try and get a more tangible demonstration of what programming entails. It certainly was less boring for the kids.... Perhaps also consider some robotics with good old solder and chips, when you son is old enough :-)

    --
    Free, as in your money being freed from the confines of your account.
  113. JavaScript: It's right there in the browser by moshez · · Score: 2, Insightful

    Teach him JavaScript.

    Set up Firefox and Firebug, and you have a wonderful console for programming right from the browser. You can do fun animations, effects, and various cool things.

    And showing it to friends is as easy as uploading to a host...

  114. Teach Yourself by Anonymous Coward · · Score: 0

    I've always found the "SAMS Teach Yourself" books to be very easy to use. I'd say choose a language like Perl that does the memory management etc. Work through the "teach yourself" book, then choose a real life project to apply the knowledge. One can "study" programming as much as you want, but you only really learn when you are doing a project that has some purpose.

  115. Ask him by ei4anb · · Score: 1

    My son was bored with my attempts to show him how cool kernel hacking is and I began to despair. Some weeks later he came to me and asked if it would be possible to set up an 'auto-typer' to help in an online game that involves repeated typing of the same phrases. He was willing to get involved in putting the script together because he saw a use for it. He even agrees that our approach was better than just downloading one that does almost what he wanted.

  116. My own remembrances by OpenSourced · · Score: 3, Insightful

    When I was 15, I had never seen a computer, but I knew that I wanted to work with them. The _idea_ of computing, of writing instructions to make the computer do what I wanted, of playing with something that exhibited some of the powers of human mind, was terribly interesting to me. Getting my hands on my first PC, a thing with a BASIC interpreter and graphics! display in a TV monitor, was an intense experience, even if I cannot say why, what clicked inside me. The making of my very first BASIC program, unaided, reading a manual in a foreign almost-unknown language (English) was a triumph. The making of a program that draw a circle on the screen by calculating the distance to the center, was making mathematics come alive for me for the first time.

    What I mean is that, in my case, no stimulation was needed, and probably difficulties just added emotion. The interest and emotional attachment to the computing world was immediate and intense. I don't know if I'm a typical case, but my anecdotal evidence is yours for what's worth.

    --
    Rome taught me patience and assiduous application to detail. Virtues which temper the boldness of great, general views.
    1. Re:My own remembrances by l0rd · · Score: 1

      I agree 100% If this guys kid wants to program he'll find a way to.

      As a kid being able to program a computer to do what I wanted it to do & being able to crack games was an indescribable rush. Like you I wanted a computer ever since i first saw one, not having any particular use for it.

      The difficult thing is though that everythings gui these days. Back in the day you had to know a bit of basic just to run a program. Even after that dos was bundled with QBASIC & you had to understand memory limitations to run gumes (Remember DOS=HIGH,UMB).

      These days everything is just point & click and easy to use. Just because someone is "interested in computers" doesn't mean (s)he is a computer geek like in days of yore. I get the feeling less & less people are learning to program as kids. It's a shame!

    2. Re:My own remembrances by OpenSourced · · Score: 1

      Just because someone is "interested in computers" doesn't mean (s)he is a computer geek like in days of yore

      Yup. The son of a friend of mine decided to study computing. Reason? He liked computers. Turned out that what he really liked was chatting, internet browsing and playing PC games. The whole "programming" part that they try to teach him completely bores him. Just discovered that the career he chose wasn't the career he thought he chose.

      --
      Rome taught me patience and assiduous application to detail. Virtues which temper the boldness of great, general views.
  117. Find somthing fun to do by Yacoby · · Score: 1

    I started by writing scripts for game engines, mods and such. Why? Because it was easy, the community would go "wow, cool" when you did something (ego++;). That taught me the basic concepts, and that it could be fun, then look where I am now, 4 years later, sitting in a room, writing programs all day.

    No, second thoughts, don't teach him to program, drinking and sailing is much more fun.

  118. Never start with C by ivucica · · Score: 0
    No child's first language should be C. Simplest way to pique a child's/teen's interest is with something like Logo. (Okay, well, perhaps it's a little late for that, if he's a teen ... except if he's an early teen?)

    I'm involved in an organization here in Zagreb, Croatia, which works with talented children, and during the last several years we have high success rates: Zagreb children's rankings in national competitions have significantly improved. We don't start with C, not even BASIC. Most of those children have started with Logo.

    Why Logo? Simple. It's an interpreter, meaning it's interactive. It features a small turtle which draws on screen. Later on, it features interesting list-based processing functionalities.

    When I was teaching, what were my first lessons to the children (as young as second grade of elementary school)? First, you show them how to draw lines. Then how to turn around (in the process teaching them what angles expressed in degrees mean). Then you show them that some commands are repeating:

    FORWARD 100 RIGHT 90
    FORWARD 100 RIGHT 90
    FORWARD 100 RIGHT 90
    FORWARD 100 RIGHT 90

    So you teach them loops:

    REPEAT 4 [FORWARD 100 RIGHT 90]

    As you can see, Logo is even better for English-speaking children. Once your child can handle some basic problems in Logo, perhaps even code a small graphical game, try switching the child to something like Visual Basic 6.0 (yes, the fugly beast). I don't have any recommendation within GNU/Linux environment since I'm not aware of any simple enough WYSIWYG development environment like what VB6 provides. Mono and .Net are not simple enough for early teens, in my opinion.

    A possible alternative for GNU/Linux might be Python for command line studying, but a child might be happier to develop a calculator or an addressbook, or a simple tic-tac-toe game, for a GUI. wxPython is ok, but only for later studies, when child is already familiar with command line programming in Python.

    I've heard of Lazarus, a WYSIWYG GUI IDE for Free Pascal, but I have never had the opportunity to sit down and spend half an hour messing around with it.

    And oh yea, Pascal is also a good post-Logo language. However don't run to C. A child has to be really talented in the early teens to be able to comprehend techniques in C. Besides, for a modern era child, there's no joy in scrolling alphanumerics. It was cool for children in 1980s and early 1990s, but today's children are used to GUIs, to Unreal Tournament, etc. If there's any chance of getting them to programming, you need to get them to work with graphics.

    Avoid C! He's not ready for it.

  119. Scratch: A visual programming tool by zarkzervo · · Score: 1

    scratch.mit.edu should be enough for introduction. It is visual and like building Lego. It contains the known parts of a programming language (loops and tests and stuff).

    --
    Insert `fortune -o` here
    1. Re:Scratch: A visual programming tool by FictionPimp · · Score: 1

      This is a great way to do it. I often start out college kids with this as a introduction to programing in the class I teach. Of course we move on quickly to real languages.

    2. Re:Scratch: A visual programming tool by kermi3 · · Score: 1

      I agree. Start him out with something like Scratch from MIT. It's programming with trainning wheels, and it does a wonderful job of encouraging your programmers and introducing the basic concepts. Rather than writing code, they drag and drop possible commands from a menu. I used it to teach upcoming 6th-8th graders the basics of programming this summer. All it took was a 3 minute introduction and they were off. As they were ready (the next day), I gave them introductions to variables, and calling commands in other "sprites" (objects), and they took each step and ran with it. The biggest drawback to Scratch is that it does use some pretty big trainning wheels and does not use traditional programming terminology. When he becomes proficient in it, before moving on to an actual language, you may want to introduce him to Carnegie Mellon's Alice programming language. Same idea as Scratch - drag and drop programming that helps you learn the concepts, but Alice is more of a real bike with small trainning wheels than a tricycle. It allows a lot more freedom and is powerful enough to handle arrays, and true OOP.

    3. Re:Scratch: A visual programming tool by rbrewer123 · · Score: 1

      Scratch is awesome. It's simple enough that someone like my 6 year-old nephew can have fun fiddling with it. But it's powerful enough with sophisticated concepts like events, objects, multi-threading, message passing, and more to keep it interesting as you progress. Scratch is like Logo for the 21st century. My recommendation would be starting off with scratch, then moving on to something like Python.

  120. My Experience by Anonymous Coward · · Score: 0

    FWIW, I started by learning Visual Basic in 2000 (I was 18 at the time). Although it's Windows-based and pricey, I was then able to use VBA to write Excel and then Access macros for the company I worked for.
    I think I remember Python being used for macros in OpenOffice. If that's true perhaps Python's a good language for those around 18-20 years old who want to stand out in their office-based part-time jobs.

    I've recently completed a degree in CompSci and now use Java as my language of choice. Now I have more time on my hands I'm thinking of buying a Lego Mindstorms kit and using Java to make some robots - I'd imagine any early teen would also find that quite interesting! Maybe building the robots described in 'Experiments in Synthetic Psychology' would be provide a fun set of projects?

    I'd agree that starting with something providing visual feedback would be a good way to spark and maintan interest.

    Craig

  121. The uber languages by sega01 · · Score: 1

    C, Lua, and Assembler :-). But, it may be wise starting him on some XHTML 1.1 first. I started my computing journey by learning HTML in Neopets ages back :-|.

  122. Learn to program by Chris Pine by Anonymous Coward · · Score: 0

    I would like to suggest Ruby and Chris Pine's book "Learn to program"

    1. Re:Learn to program by Chris Pine by MenThal · · Score: 1

      +1 and then some.

      I reviewed and gave feedback on an early draft of this book for Chris (as did a lot of people at my previous place of employement), and I'm a long-time Ruby fan, so I may be biased, but I really recommend this.

      Me and my wife went through about half of it together, and she really did seem to get a lot more understanding of what it is that I do as a programmer. (She isn't much of a techie despite we met on IRC, so she isn't scripting for her self just yet.) The book is a fairly good fit for the early teens, doesn't fly a lot of tech jargon over their heads and isn't condecending either. ... now if you'd pair this with an insane Ruby book from whytheluckystiff, you've got a dynamite combo that will never be boring. :)

  123. HTML, PHP, etc by Manxa · · Score: 1

    Curious about PCs, eh? I started crashin 'em when I was 13. In the grander scheme, I'll still a youngen in my mid 20s, so compared to all those sysadmin gurus, I know squat. :P What did spark my interest around that age was HTML. HTML is an easy language to learn and gives those instants results so many before have suggested. It lays a foundation for your child to build on but can also introduce him to so many other concepts (proper coding standards, other languages to build on such as PHP or Javascript, proper tag closing, browser interpretation, etc) of programming. Really it'll depend on both what you and your son are comfortable with. HTML is a rather easy language to pickup and has many avenues you can venture down. However, if he doesn't want to be bothered with anything to do w/ the web AT ALL you may try something else...

  124. How my mother taught me to code by Freddy+Fantabulous · · Score: 1

    When I was a kid my mother taught me my first lesson in programming a computer. Back then they used to have these books that has the source code to simple BASIC games printed in them. She said that the secret to successful programing is in typing the program exactly as printed in the book, otherwise it might not work. Of course, I soon noticed that some typos didn't break the program... they just made it do something different. In time I was writing my own programs by recycling and recombining elements from these programs while still thinking of them as somewhat magical. I think this basic approach is quite sound as it parallels the way we learn natural language. We mimic others and learn in a very stimulus-response oriented way.

    I would suggested to anyone wishing to learn programming that they start by taking an available opensource program and learn the steps needed to build it from source. Then experiment with tweaking the source and seeing if it will still build/run. Games are perfect for this because the the bug/feature distinction can be very arbitrary.

    If a beginner is determined to write programs from scratch, I would recommend learning basic HTML and then PHP. It's relatively easy to write programs that do interesting things in just a few lines with PHP. Also, writing for the web lets you rely on the browser for I/O which spares the beginner a lot of tedium. PHP, like BASIC, may not be the most robust language, but I think that may actually make it a better language for a beginner. It takes years to learn programming anyway, so why not start with something easy?

  125. I seriously hope you're joking by p3d0 · · Score: 1

    +1 Funny for you, sir.

    --
    Patrick Doyle
    I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
  126. Start with configuration. by arcade · · Score: 1

    I think the right approach is to start with teaching him how to configure stuff himself. Linux only, of course.

    Then throw him the Gentoo-bone.

    Make sure that you give him a new cool distro, with some cool stuff - that just doesn't work straight out of the box. Something he wants to use, but that quite simply doesn't work as it should. Make sure it's easy to fix, though. Make sure you don't have time to help him more than by pointing at the documentation.

    And of course, the kid should have root.

    Make sure that each new cool thing is always 'one step away' from not working, but always in different areas.

    Kind of fun how quick kids are to learn how to fix stuff, when they want to get something to work.

    --
    "Rune Kristian Viken" - http://www.nwo.no - arca
    1. Re:Start with configuration. by croftj · · Score: 1

      I thought your post was a joke at first, but I see you're serious. I feel for your kids.

      Computer maintenance is not programming. You may script some things here and write small c programs there, but for the most part, they are different tasks.

      I've done both. I'm a programmer, not a computer operator.

      Sure those skills are needed in the long run, and the kid wil probably learn them as time goes by, but why bore the kid to tears first?

      --
      -- Many men would appreciate a woman's mind more if they could fondle it
    2. Re:Start with configuration. by arcade · · Score: 1

      Yes, I'm serious.

      I don't understand why it would be boring to learn how to use your computer. It's a good way to start out, and a very necessary part to become adept at programming later on. Starting to program before you know your way around the computer can certainly be interesting, but to become a solid programmer you first need to learn the basics.

      And, you talk about "computer maintenance" as if there is no need to learn quite a bit of programming doing exactly that. There is a great need.

      Think databases... "Hmm, I've gotten my usernames and passwords from a database.. maaaybe I can create a nice little application that tracks my CDs the same way?". .. and so forth.

      --
      "Rune Kristian Viken" - http://www.nwo.no - arca
    3. Re:Start with configuration. by croftj · · Score: 1

      When I think configuration I thing /etc/* resolv.conf rc.d scripts, /etc/sysconfig stuff, nfs nis blah blah blah... For true hackers always fun. To teach programming to a teenager, BORING!

      Like I said, always good to know. I use it almost regularly as a programmer (have to get the system to start your program somehow). To pique ones interest in programming, NOT!

      --
      -- Many men would appreciate a woman's mind more if they could fondle it
  127. Well here is a good start by floydman · · Score: 1
    --
    The lunatic is in my head
  128. Alice by Anonymous Coward · · Score: 1, Interesting

    Try Alice. It's the 21st century version of turtle:

    Alice is an innovative 3D programming environment that makes it easy to create an animation for telling a story, playing an interactive game, or a video to share on the web. Alice is a freely available teaching tool designed to be a student's first exposure to object-oriented programming. It allows students to learn fundamental programming concepts in the context of creating animated movies and simple video games. In Alice, 3-D objects (e.g., people, animals, and vehicles) populate a virtual world and students create a program to animate the objects.

    In Alice's interactive interface, students drag and drop graphic tiles to create a program, where the instructions correspond to standard statements in a production oriented programming language, such as Java, C++, and C#. Alice allows students to immediately see how their animation programs run, enabling them to easily understand the relationship between the programming statements and the behavior of objects in their animation. By manipulating the objects in their virtual world, students gain experience with all the programming constructs typically taught in an introductory programming course.

  129. VB or VB Clone by Anonymous Coward · · Score: 0

    How young a teen are we talking here? I started on VB in 10th grade and found it to be very easy to get the hang of. I am now a full-time professional programmer, so VB must have been worth something. If nothing else, fundamental structures become familiar in it, and it gives the programmer a chance to quickly see, graphically, the results of his/her work.

  130. Start off Small by nuclearpidgeon · · Score: 1

    I am currently 14 years old. I started my programming days back in windows 3.11 land. For Christmas I got a crappy old laptop that had a broken screen, so I had to hook up a CRT fishbowl screen (why are you wincing?). From there I found a DOS 6 manual and started screwing around with colour boot menus (AUTOEXEC.BAT FTW!). From there I learnt the ins and outs of windows by 'fiddling' (In windows 3.11 I completely screwed the hard-drive during a disk compression error). I only just discovered Linux in the form of an ubuntu tutorial in the Aussie magazine Atomic MPC. This year I started IT and got my first real taste of programming with VB Express, but I had a teacher to aid with that. I'd suggest buying him a 'Programming for Dummies', 'The Complete idiots Guide to Programming' book or something like that to get him started. The original ubuntu tutorial is not on the Atomic website, but there is a new one, Linux for windows users. Look it up at www.atomicmpc.com.au

  131. When I was a young teen... by Peter+Simpson · · Score: 1

    I took a summer course at a local school. I learned the basics of programming and how to write simple programs in FOCAL (sort of like BASIC). This was in the 1960s. I was 13 or 14.

    I would recommend something like this -- a class for beginners that's not part of "regular" school time (and so, not graded or affecting the time he needs to spend doing homework). Summer or winter break would be a perfect time.

  132. Re:PHP will ruin your mind by Anonymous Coward · · Score: 1, Informative

    There are so many reasons not to start with PHP, that I'm not even going to start listing them here. PHP is a HORRIBLE first language, and a horrible second, third or forth language. It corrupts minds, and makes it harder to learn other languages. It's a lot worse than corrupting someone by teaching BASIC as a first language.

    You should be ashamed of yourself for suggesting teaching PHP to a kid.

    -Don

    To be quite honest, you are terribly wrong, PHP looks alot like C or C++ is syntax, it has somewhat OK OOP (will be even better with php6), yet provides alot of functions for most things, it has tons of interfaces to UNIX-like enviroments and is easy to grasp.

    Ofcourse like most languages intended for webdevelopment, it is not optimal for system programming, even tho it provides alot of functionallity for it. I have no idea why you think its horrible, its really not. Want languages that will make it hard to learn other langugages if you learn them first? Look into Visual Basic or Python.

  133. Give him direction by Asmor · · Score: 1

    Speaking as a 23 year old who's largely self-taught in programming...

    Find out what he'd like to do, give him direction if he doesn't know. I find the greatest hurdle to learning, for me at least, is lack of ideas. Often, I end up programming the same thing first in new environments and languages: a dice roller. It's sort of my "Hello World." That said, while it's a good way to just get something done, it doesn't help me learn much. I learn best when I try to tackle something that's just beyond my level of expertise-- too far beyond, and I just can't do it. Too easy and I'm not learning anything.

    Just as an example, say he was interested in writing a program for his favorite game. The first thing I'd suggest to him is working on a functional GUI using the tools of an IDE. There's really nothing quite so satisfying as a really nice GUI; a command line app is often more functional, depending on your needs, but it's just not as satisfying.

    Next, you might suggest that he learn some of the I/O tools and add save/load functionality to his program, using simple text files. After that, you could show him some more interesting techniques for saving, like serialization or XML.

    Another example: Teach him how to use a database. Start off with a simple database with a couple of tables, maybe a list of customers and a list of items. Then start introducing normalization, joins, etc.

    1. Re:Give him direction by JoeCommodore · · Score: 1

      Often, I end up programming the same thing first in new environments and languages: a dice roller. It's sort of my "Hello World." That said, while it's a good way to just get something done, it doesn't help me learn much.

      Actually I find thats the best way to start learning a new language - your test project (dice roller) is something you know by heart so it isn't a factor in your new language, you know the ins and out of that. So mainly you can just concentrate on learning how to do it in the new language than trying to do something unfamiliar as well.

      --
      "Enjoy what you're doing! If it becomes drudgery, you're doing it wrong!" - Jim Butterfield
  134. Listen to me, you must. by lanec42 · · Score: 1

    I am 15. I became really interested in computers when I was 13, when I started writing HTML. I then did a lot of TI-83+ programming when I was bored in school, and now i'm learning C++, and basic shellcoding. Your son is already incredibly lucky. My parents take little to no interest in my geeky pursuits. If he can always come to you for help, and if he's already shown an interest, I bet he'll stick with it. It's addicting.

    1. Re:Listen to me, you must. by SplinterOfChaos · · Score: 1

      I remember doing TI-83 programming. I always finished my math homework so much quicker than everyone else because instead of paying attention in class, I'd be programming it how to find solutions. TI programming is great. Teaches a lot about optimization.

      And I agree. He's lucky. Even if you don't know the language he uses, being able to talk about conceptually what happens is very helpful.

  135. MOD PARENT UP by Asmor · · Score: 2, Insightful

    Javascript was my first programming language. It's something everyone's got simple access to, it's very forgiving (though it does set you up for some bad habits), and it's very simple to make GUIs and interact with the user.

  136. Jeez by p3d0 · · Score: 1

    You must have learned programming as an adult in college. Those of us that actually learned programming as a kid know what you just said is the exact opposite of what it takes to get hooked on programming at a young age.

    --
    Patrick Doyle
    I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
  137. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  138. From NAND to Tetris by STFS · · Score: 3, Informative
    I guess this really depends on how interested your kid actually is in learning the internals of computers. It might be a good idea to start with a "high level" tool, and I'm not talking about using Python or some such thing, but using Alice and/or LEGO Mindstorm. I've played with Mindstorms myself in a robotics course and I can vouch that you can do a lot of fun and interesting things with it. There's even a C-like programming language and compiler that you can switch to when the "block interface" becomes boring and your kid gets interested in learning more "orthodox" programming.

    Once he has a solid knowledge of basic programming and if he's still interested in learning more of the basics of how computers work and if you are willing to dedicate quite a lot of time and effort to destroying the social life of your kid once and for all and turning him into a full blown geek I'd recommend that you take a look at a course that has been called "From NAND to Tetris" in which students are given a NAND logic gate and must construct their own (simulated) computer out of that by gradually building on top of that NAND gate. Eventually they end up implementing a simple game, such as tetris or snake in a computer that they build from the ground up.

    Here are some links for this material:
    A short introduction to the course: http://www.youtube.com/watch?v=JtXvUoPx4Qs
    A long introduction to the course (Google Tech Talk) http://video.google.com/videoplay?docid=7654043762021156507
    The course material itself: http://www.cs.rpi.edu/news/colloquia/December8_2005.html

    Above all else I think you need to be sensitive to your kids needs and longings. Who knows, maybe he will not be interested in all about learning the internals of computers but more interested in the usability and design of interfaces (I know, your worst nightmare I'm sure). My point is, don't push him into a direction that isn't to his liking.

    --
    You don't think enough... therefore you better not be!
  139. Re:PHP will ruin your mind by Anonymous Coward · · Score: 0

    In college (in between school and Uni in the UK), they taught us Visual Basic 4, I taught myself JavaScript, PHP, HTML and CSS. Then got a job doing full-time VB6. Not only that, but VB6 COM objects loaded by ASP pages, now I do PHP full-time.

    I hate myself. Occassionally I look at the Haskell wiki books, and try to learn higher things. In the end though, the British education system and private sector fucked me right up. That's just my experience with those technologies, YMindfuckMV.

  140. Tell him about artificial life by chrischan · · Score: 1

    Independent from the decision what language to learn, talk to him about artificial life (programming little animats that live in an artificial environment and have artificial genetics). It is such great fun to program little animals running across the screen. IMHO, this is a perfect approach to learn programming:
    (1) You can start off simple (without any genetics or physics) and already have fun, then add more and more features to your animats and to your environment.
    (2) The concept of object oriented design is very obvious here: each animat is an instance of a class and has methods and attributes.
    (3) If you add genetics, your son will develop a natural view on evolution, which in turn will prevent him from becoming a creationist (god willing).

  141. Lego by Frost_Azimov · · Score: 1

    For me it was Basic on the Aster (CP/M), and not much later the c64. However, I remember getting really 'drawn in' after getting the 'feedback' of what my programs did. There's nothing that gives more feedback than Lego Mindstorms robotics; even the old sets (cheap second hands) will allow a very simple (GUI) start, and allow an upgrade path (NQC for example) which could later lead to *nix hacking.

  142. Mod an existing game by ubertopf · · Score: 1

    I would not start with writing a game from scratch, many games such as Neverwinter Nights or Tremulous or what-have-you feature a scripting environment and sometimes even an IDE. Starting to write small modules gets you nearly instant reward as you can see the results in the game and teaches the basic concepts of control flow and APIs.

    --

    something clever to make me stand out!

  143. TI BASIC by Anonymous Coward · · Score: 0

    I started programming in 8th grade when I learned I could write games on my TI-83 calculator. I found tons of programs written in BASIC for the calculator online and taught myself. Once I had mastered that I soon moved to Java, then C++, Python, PHP, etc... He can also share these programs with his friends at school. I remember at one point nearly half of my 8th grade class was walking around with a hacky sack game I had written (OK not the whole 8th grade class, just those of us in the "accelerated" classes, and don't worry, I never got beaten up or anything). Since nearly every middle and high school kid needs one anyways, it won't be any extra expense for you and it's a simple platform to learn on.

  144. I program calculators!! by lanec42 · · Score: 1

    I started programmed calculators when I was in ninth grade! (Last year.) I am teaching myself C++ now, and you are absolutely right, the OO stuff is hard to get used to. I hope to learn PHP soon, (I might start looking into it next year) and as I'm going through C++, I'm starting to learn a little x86 assembly. I hope that I can get good at this, though I probably won't pursue a career in computer science. (Physics has always been my favorite.) I really wish that I had someone in my family that could help me. I think I'm talented, though. I often use programs on tests (mostly to beat the others ;)).

  145. Forbid it by SleepyHappyDoc · · Score: 1

    Tell him computers are for grown-ups, and that he'll be punished it you catch him programming before he's 18.

    --
    Stasis is death. Embrace change.
  146. My one real regret... by Joker1980 · · Score: 1

    Is that when i was younger my dad was desperate to get me to learn to program. Unfortunatly i had better things to do at the time (or so i thought heh) and so never did. Fast forward a good few years and im now a sysadmin. My dad passed away last year and its always bugged me that i never took him up on it, i know virtually nothing about programming but really want to learn (for my own amusement if nothing else). So as a total noob and to tag onto this disscussion what would the slashdot crew suggest as good place to start learning/playing around in this field. Any guidence would be GREATLY appriciated thanks.

    --
    Well, Bart, your uncle Arthur used to have a saying: "Shoot 'em all and let God sort 'em out."
  147. What I learnt then, to what I do now... by Jawdy · · Score: 1

    Like most others, I agree with starting out with something like Perl, Python or even PHP. If you got him on with HTML, CSS, PHP and SQL, then he could develop web sites quick and easily - what with the web being the most used thing now. The first language I started with was (dare I say it) Visual Basic, as you can make some "traditional" looking MS/Win32 apps very quickly, the syntax isn't tricky at all and the overall feel is very Micrsoft-y. Saying all of that though, I've been playing with C and Assembler for the ARM achitecture (using GamePark Holdings GP2X console) and trying to get involved with the Demo Scene. I've also been looking at 3D engines and low-level libraries as knowing how things work from the ground-up is what interests me the most. I think it took about 7 years of coding in general before I finally found the thing that interests me the most - so see if you can find out _what_ he would like to achieve from his code, and then try to direct him that way.

  148. Find something he wants to be able to do... by OrangeSpyderMan · · Score: 4, Insightful

    I've often found that by far the best way of teaching him to do this kind of thing relies on finding something he wants his computer to do for him.

    This could be just about anything - if he likes sports, it could be a sports results and stats database, if he likes RC modeling it could be an interactive application for setups for his radiocontrolled cars. Your only real role here is to ensure he chooses something feasible in a reasonable timeframe (don't suggest writing Quake5 :) )

    The thing I like about this approach, is that it will teach him far more than just "how to do it" - you can start it with a discussion about how he wants to go about it, to start with which language (pros and cons, quick GUI development vs. old school stuff - basically just see what ticks his boxes) and it'll then take you through the basics of data models, and the fact it'll be useful will keep him motivated. Help him break the task up into little bits, and use the first few to teach him the ropes, and then let him try some on his own.

    Make it clear it's his project, that you're there to help whenever and wherever you can - but don't judge. If he wants to start with an Access DB - by all means point out the pros and cons, but it's his toy - let him do it, he should be old enough now to see for himself whether it's "right" or "wrong".

    --
    Try NetBSD... safe,straightforward,useful.
    1. Re:Find something he wants to be able to do... by Anonymous Coward · · Score: 0

      I'm with you.

      My 8 year old boy is just getting into Lego Mindstorms and level editing on a game called Darwinia. After he finished the game it gave him access to the map editor and he was hooked. I printed him out some information on scripting to give his new level some storyline, but otherwise I just stand back and let him explore.

      That's the beauty of the young mind. On their own they will come up with more interesting things than we can suggest to them. Best we can do is be a tour guide to the programming world if they decide to explore there.

    2. Re:Find something he wants to be able to do... by Quiet_Desperation · · Score: 1

      I've often found that by far the best way of teaching him to do this kind of thing relies on finding something he wants his computer to do for him.

      echo $GENERIC_PORN_QUIP

    3. Re:Find something he wants to be able to do... by Anonymous Coward · · Score: 0

      This sort of approach definitely worked for me. I had dabbled with C a bit when we were running our MUD, but I didn't really get my hands dirty with the language until I picked a program that would be my own and interesting to me from the get-go. For me, that was a card game, where you gotta write the algorithms to shuffle, deal, discard, etc. This allowed me to learn all the basics and then some of the language.

      Since then, whenever I've wanted to learn a new language, I go back to the card game and try to re-implement it. It's how I learned perl very well. It's also where I turned to learn how to do object-oriented programming.

      Even my web devel work began by producing apps related to my interest in cards.

      So yeah, finding that one interest will lead to a solid goal to work toward, not just as a novice, but when learning new concepts down the road.

  149. Real Basic by TRRosen · · Score: 1

    I'd recommend Real Basic. You can get really nice results with very little effort or programing knowledge. This gets them hooked. Then as they want to do even more with there programs they will then end up learning all the good messy stuff underneath.

  150. You did it exactly right by iwein · · Score: 1

    Just show him what you know and show him that whatever you don't know is really easy to learn. He'll probably ask you things that you haven't got any experience in and then you'll figure it out together. He might even teach you something in a few years.

    I'm too lazy too look for the source, but I read an article suggesting that the commandline is the best place to start learning. But who cares? The most important thing is that you don't discourage him by forcing him to take a certain path or hide complexity. Peer instruction works the best so if you have the time just sit with him and do something that is new to you too.

    --
    Show a man some news, distract him for an hour. Show a man some mod points, distract him for the rest of his life.
  151. I wouldn't start there by p3d0 · · Score: 1

    Greenfoot looks neat and all, but it definitely has a Java mentality of programming on top of a massive framework that's provided for you.

    I'd think simple turtle graphics would be much simpler to grasp at first. The kids need to learn control structures (loops, if statements), variables, etc. before they tackle some huge object-oriented application framework.

    It's admirable that they want to teach OO programming early, but let's face it -- there's zero motivation to use OO until your programs reach a certain size (say 100 lines). There's plenty they can have fun doing before they ever get to that size limit.

    --
    Patrick Doyle
    I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
  152. Maybe Alice? by iamhere · · Score: 1

    http://www.alice.org/ I heard about this almost a year ago in a talk by Randy Pausch from Carnegie Mellon University, but haven't had time to check it out. It is supposed to make the learning experience of programming better. Also maybe if you have some first programs written a bit of competition could do no harm: http://www.topcoder.com/ The series of Head First books from O'Reilly also made a favourable impression on me.

  153. Java Programming for Kids, Parents and Grandparent by Anonymous Coward · · Score: 0

    This could help you:
    http://www.javalobby.org/java/forums/t94728.html

    direct link is:

    http://www.myflex.org/books/JavaKid8x11.pdf

  154. Java or C# by Anonymous Coward · · Score: 0

    He can start using strings right away and without learning about arrays.

    I know when I was 16 having my friend type his name on the screen and have the computer reply back "Jason is a douche bag" really got me excited to learn the next part.

  155. Easy... by rob1980 · · Score: 1

    Tell them their parents hate it. Naturally, they'll rebel!

  156. Motivation... by Anonymous Coward · · Score: 0

    Professional computer consultant and big time hand holder in the corporate world...

    Does your son have a hobby or play a team sport? If so then perhaps a good little project would be to write a program that keeps track of standings for the team. It could be really simple to start and add in complexity as his interest grows...

    Something fun that's relevant to his interests shows its value as a tool, rather than a bunch of academic exercises.

  157. Self taught by ZeroExistenZ · · Score: 1

    While wanting to help your son in his curiousity, I think you shouldn't guide him too much but provide help when he gets stuck or something he tries to do doesn't work.
    For me personally, I learned programming by experimenting, doing, my curiousity and drive to do something on a PC often brought me into different fields of programming. It's the curiousity and that geeky drive that made me want to discover more. Often, when I found a good resource on how to do a particular task, it bored me as the challenge got lost. The same goes with having a peer with "all the answers", it makes you shut off your own creative process.

    Programming is to me exploration and experimentation, building on past "discoveries" and solutions you've thought up. If you'd want his curiousity sparked, allow him to be creative, think out new things to push himself further and constantly feeling a sense of realisation or achievement. Something that is "your own".

    Wherever that's on Linux, some flashmovie, a "hello world"-movie, for some a HTML-page, a clever JavaScript, it doesn't matter.

    --
    I think we can keep recursing like this until someone returns 1
  158. When I began... by Anonymous Coward · · Score: 0

    It was back in the 3rd grade. I wanted a Pokemon website so I had to learn HTML I did this by using View Source.

    Later on I wanted to make an online text RPG. I then learned PHP and MYSQL this time by looking at scripts which I found with google searches and broke them down using php.net.

    Now I for the most part have a handle on C++ which I learned both in college classes and with a little screwing around on my own time.

    Personally I'd say the kid needs to decide what he would like to program then google the crap out of any problems he faces. If he doesn't know what he'd like to do I'd recommend web programming first. It's pretty fulfilling to be able to show a friend something more than a console program. Not to mention I found compilers, libraries, linkers and all that jazz really confusing when trying to learn C++ on my own.

  159. Re:PHP will ruin your mind by Jens+de+Smit · · Score: 1

    There are so many reasons not to start with PHP, that I'm not even going to start listing them here.

    I think you should, because this is a horrible way to make your case. Although it's true that PHP allows you to make hugely incomprehensible programs, that's no reason to write it off completely. C and C++ allow for even far more rancid hacks, and the only thing I've heard people say about those languages is that it's hard because of the compilation step...

    PHP has come a long way since PHP3. Although the typing system is still pretty weak, PHP5 has a nice OO model and Exception handling interface. What makes it great as a first language is that you have very easy access to a visual interface system (html) and that it has a huge library that help you along on the more complicated stuff, with proper documentation. Oh, and it's definitely worse to teach BASIC as a first language than PHP. Let's talk evaluation strategies...

  160. Find a project for him (something he wants to do) by JeremyDuffy · · Score: 1

    Assuming he already knows how to do "hello world" (in other words, he knows the basic syntax and structure of the language and how to make stuff run), then the next step is easy. I didn't read the other comments so sorry if someone already said this, but the easiest way is to find a project. Something that he'd like to make a computer do for him. Once he has a project, just turn him loose. Show him where help can be found online and answer any questions he has when he has them. Other than that, leave him alone!

    --
    Informing people about the scams, shams, and bunk that assault them on a daily basis. http://www.jeremyduffy.com
  161. My dad taught me by using hardware.... by croftj · · Score: 1

    After weatching and at time helping hime build a few nothing boxes (neon ring counters of a sort) crystal radios etc, I got interested in electronics, that ultimately led to computers which lead to S/W.

    I guess to start hime off, try some simple games. HILO Hangman or Towers of Hanoi (for advanced stuff).

      All of those can be non-graphical at first using any language such as Perl.

    Be sure to explain a lot. At 7, a Nothing Box was just flashing lights until I was told the properties of the neon bulb and a capacitor. Simple explainations will work if the kid has a bent for these things.

    --
    -- Many men would appreciate a woman's mind more if they could fondle it
  162. Re:PHP will ruin your mind by Anonymous Coward · · Score: 0

    Remember this is about an introduction to programming, not necessarily the nuances of particular languages. PHP may have a lot of 'flaws' from an experienced programmer's point of view, but in this case it would be fine to echo output, do some basic loops, functions, etc. I personally don't think PHP is THAT horrible... messy/poor programming is messy/poor in any language.

  163. A.L.I.C.E. by DrakmirV · · Score: 1

    This is an interesting environment. You get a 3d environment to play in and prompted programming statements. Although not a "real" language, it would be a good introduction to programming and gives some immediate feedback to the beginner.

    http://www.alice.org/

  164. Programmers are born not made by tjstork · · Score: 1

    I think you have to want to do it. If he wants to program, he's going to learn how to do it and if he's self directed he'll figure out what questions he needs to ask.

    --
    This is my sig.
  165. COBOL!! by Anonymous Coward · · Score: 0

    Force him to learn COBOL and then RPG/400 like I had to!!! That was honestly my first college classes...and this was in 2002 not 1962....hahaha. But the point is, like me, if he's interested he will be interested. Most people would quit if that is how they learned to program but I didn't because I was interested. I would just make sure he has the tools and let him go about it however he likes.

  166. I suggest Java by d97mno · · Score: 0

    To be completely honest it doesn't matter too much about the language, it's a little bit like choosing the color of the bike when learning how to ride one.

    The reasons for choosing Java:
    * It's the most used language right now by far.
    * There's massive online amount of tutorials and documentation.
    * The language syntax is pretty straight forward to grasp.
    * Java can be used for writing simpler command line stuff or more advanced complex GUI.
    * Java can be used for mobile phones which he might think is cool.
    * If he later chooses to study in the Computer Science field, chances are good that they will use Java for teaching.
    * All the tools are free (as in beer) and it runs on Linux.

    So all in all I think that Java is the most sensible choice, allthough as I said in the beginning it doesn't matter all that much.

    --
    Real programmers never comment their code. If it's hard to write, it should be hard to read!
  167. First Ever Program by kramulous · · Score: 1

    y = sin(x) in Pascal (That was the language at school at the time)

    From there, research in non-linear algebra and research support for a supercomputer and cluster - mainly code tuning, optimisation and parallelisation.

    --
    .
  168. 2 key pieces to keep your kid programming by CandideEC · · Score: 1

    I would recommend looking for solutions with two key pieces, and an overarching theme. The stuff he is doing must relate to daily life in some way. This can be difficult depending on what he spends his day doing - but if he plays fantasy sports, he should be working up to a program that helps him manage his team / gives him an edge. If he collects rocks, he should be working towards something that helps manage his collection, pictures, etc. If it doesn't apply beyond the keyboard, good luck. Part 2 is similar - it should be something that can be shared easily with others. You put that much time into learning how to create stuff, and your going to want to share it. Impress people, help people, scare people...whatever. Those are the two big inducers though - its got to be stuff that can apply to your life or things that can easily be shared with other people. Thats the bit of heroin high you give him after he gets by the crossfire on the street and the giant rottweiler in the yard - if hes going to get good at programming, he'll be back. This points to web app type stuff usually - from my point of view, you'll get no where fast on the command line - he will find that stuff if hes interested, but the teenage social call will pull any reasonable adjusted kid away from anything so solitary pretty quickly. You have to sneak in some of this creation heroin before your car is out of the driveway for 6 hours every night - if your lucky, for every night he's shotgunning beers and chasing girls, there might be an hour of programming as he beats the hangover.

  169. This is how it worked for me... by Delgul · · Score: 1

    It might help to see how I was stimulated by my parents to take up programming at an early age.

    At 12 years old I started programming at school on a VIC-20. BASIC of course. Although I was interested in computers to begin with, my mother pushed me to do a course. In that time (1984) she already had the foresight to tell me that it would be a smart move. I am still thankful for that after all these years.

    Although BASIC seems a outdated choice now, in retrospect, the simplicity and the speed at which results became visible was important to keep me going at that age. This is the reason I would suggest to start simple. Perl perhaps. Also don't try object-oriented stuff yet. It will come later if the interest is there...

    The next push was a challenge: A few months later (I moved on to a C-64), IBM was programming a piece of software for the company of my parents. I noted this when it was discussed some time during diner. I remarked that it didn't sound very complex and wondered about the enormous costs that seemed connected to it. They asked me if I thought I could do it. I said yes. My father then said to me: "If you manage that, you earned yourself a printer and a disk drive for your C-64". Around that time, this was a unimaginable wealth for an underage C-64 owner (at least it was for me). I started on it and a few weeks later it was there. It worked, I got my hardware (and my father a huge discount from IBM after he showed them my program telling them that he wouldn't pay that asked price for software that could be delivered by a mere child in his spare time in a few weeks LOL)

    After this I went on on my own. During my studies I met some people with the same hobby and that completed my addiction ;-) These people also introduced me to higher languages like Pascal and C++.

    At this moment I am a regular perl/ruby/RoR/C++ programmer and still having a lot of fun!

    So a good approach seems to be:

    1) Start out simple (script?)
    2) Set challenges to overcome to keep stuff interesting.
    3) Slowly move to higher generation languages.

  170. That's right. And to add.... by BitterOldGUy · · Score: 1
    I would encourage him towards art, music, dance, sports, etc... Things that will allow him or to meet people, especially of the opposite sex. Those subjects help them develop social skills and build confidence. And by learning as a younger person, there's a good chance they'll become good at it.

    Programming is a pure intellectual pursuit and can be learned at anytime.

    If I could go back into time, I would have spent more time on those artsy and sports subjects instead of locking myself away with my computer code. I grew up to be a lonely and shy person, while the concert pianists, dancers, and athletes had plenty of friends, partners, and much more success in life in general - all because they were much more easy around people.

    P.S. Many of those "dumb" jocks I went to school with are now Drs. and Lawyers and engineers; married to wonderful women and have a family.

  171. Dark Basic! by Anonymous Coward · · Score: 0

    Dark Basic, fantastic language, with the advantage that using standard BASIC syntax you can be off and writing 3D graphics and games within an hour or two of starting the tutorials.

  172. python and microcode by Speare · · Score: 1

    I agree with the basic premise that a high-level scripting language is a great first tool. No explicit compiler required, and you can accomplish things in a pretty straightforward way.

    Just after learning the basics of imperative programming, though, I would recommend a short primer in how microprocessors or microcontrollers work. Registers, limited storage, direct access to hardware, opcodes, and so on.

    As it happens, a little while ago I decided I wanted to write a cheesy simulator for a six-bit microcontroller in python. The bytes are six bits, the address space is six bits wide. It all fits on a chess board. http://halley.cc/code?python/octalplus.py

    --
    [ .sig file not found ]
  173. The stuff that really keeps me interested... by Anonymous Coward · · Score: 0

    Get him a microcontroller starter kit (The AVR is my fav). He's surrounded by computers- they're really not that interesting anymore. For me, the idea of making an IC do what I tell it to is far more rewarding and allows me to practice programming without having to learn a massive operating system environment. It makes a great baby step into programming.

  174. Lock Her in Her Room Chained to the Radiator by Anonymous Coward · · Score: 0

    That's what my parents did to me, and now I'm a l33t PL/SQL programmer!

  175. Second by Nursie · · Score: 1

    My dad wrote me a multiplication test game for our C64 when I was young (much younger than this kid) and made the screen change colour when you got it right.

    From then on I tried to figure out how to change screen colours, make stuff scroll, deal with input... it went from there. Soon I was trying to alter the code for games (the ones written in BASIC anyway, there were a good few) and see what happened.

    Whatever it is I advise something that is simple but gets immediate results. That's what turned me on to computing at the beginning - making these wonderful machines do tricks for me, and doing things with them that other people can't or don't even think about.

    Oh, you're good with computers because you can know how to use word? Well check *this* shit out!

  176. Whatever you do.... by Anonymous Coward · · Score: 0

    Don't make him learn Haskell. He'll no longer be your little son but a grown man who can pick up chicks through long discussions about monadic transformers and polymorphic data types during passing period. Keep him daddy's boy -- no Haskell, no exceptions.

  177. Teens respond to teens by b4upoo · · Score: 1

    Teens have immense power over other teens. There is some sort of herd instinct that can be turned to your advantage. Get your son involved with other teens who are learning to program, hack etc.. There might be a formal teen computing club in your area but if not there may be a way to find avid teens who are computer junkies. Perhaps adults you know have teens active in computing. The garage band type of model for teens learning computing is hard to beat. His schools guidance councilor may be aware of teens involved in computing. Sadly a lot of Windows exposure will be hard to avoid.

  178. Induce Problem Solving Capability by Axe4ever · · Score: 1

    Before getting into *nix systems or Windows systems, i think probably he shud be understanding first, 'bout programming paradigms. Rather than restricting somebody to some system or a particular language,the person should be taught on how to tackle a situation, no matter what language he is using.After all, computer languages are way of expressing how you tackle a particular problem and make the computer do it for ya.So,essentially, paltform to platform, the syntax might change, but of course logic remains the same.But to improve logic, he needs to see the problem in a 3rd person view..as in..what he has with him (language) and what he wants to do. Once he gets into that, (atleast, a fair idea of how he is gonna tackle..start by writing out pseudocode)logic will improve.Once he gets the logic,converting that logic into a particular syntax is not a big deal.He will learn the art of solving problems rather than a particular language or a system.

  179. Game Development by BlueMonk · · Score: 1

    I don't know about your son, but I for one was so excited about programming that I didn't need much of a teacher. If you find the right instrument to get him excited about programming, he'll come to you with questions or figure out how to answer his own questions and lead his own learning path. Of course I'm sure he would still appreciate some ideas and guidance from time to time. Personally, I enjoy game programming. There are free game programming environments on Microsoft's web site if you're not too heavily anti-MS. The modern environments are, I suspect, much more entertaining to use for a beginner than the environment you're used to using. To get started, head to their "explore by intrest" page.

    Also, I am working on a more visual (less coding) game development environment (Scrolling Game Development Kit 2), and trying to make it a bit more portable (it might work in Linux someday since I am almost done converting it from DirectX to the OpenGL-based OpenTK library). I think game development is a very rewarding way to learn programming.

  180. Patching by Anonymous Coward · · Score: 0

    For me, I was interested because of my dad, but I never learned any formal language. Instead, I followed music - now I teach Music Technology and am pursuing a degree in the topic for grad school.

    Most of the 'programming' I do is through media-centric patching programs like Max/MSP and Quartz Composer - those are pretty light on syntax but still big on programming logic. They could be a good place to start!

  181. Personally I say, start with modding games by Moraelin · · Score: 4, Insightful

    While I'll aggree that kernel hacking won't get anyone interested in programming, I think programming web sites is somewhat lacking in motivation. As you were saying, you want it to provide some serious bragging rights.

    Whatever you want to do on the web at teen level, has been done before and better. Publishing photos? There are a ton of providers which achieve the same thing. Forums? Ditto. All you need for a good guild web site are webmaster skills or maybe graphics design, _not_ programming. Approaching it from the programming side is the way to get the least bragging rights, with the most effort. Everyone won't go "woot, what an original forum you programmed!", but the more discouraging, "geesh, why don't you use PhpBB like everyone else?"

    Personally, looking back at what motivated _me_ back then, I'd say start with games. That was my motivation. I could throw together a game as good as Psion and the gang made for the ZX 81 and later ZX Spectrum, and show it to my classmates and get some serious appreciation. The first game I wrote, when I invited a couple of classmates to see it, they ended up playing it all afternoon. Mind you, it was uber-simplistic by today's standards, but it was as good as anyone could possibly do on a 1K ZX-81.

    It was motivating enough to get me started on assembly and converting it by hand to hex.

    Nowadays I wouldn't advise anyone to write a game from scratch at home, but there's a _lot_ you can achieve as a mod. And mod-friendly games are getting rather common these days. I can think of a few where most of the game logic (i.e., minus the graphics and such) was Python, one even TCL, and one was scripted in Java.

    So basically I'd say, show the guy how to make his own mods. Even if it's just for cheating it's a start.

    And the distant carrot of making it big and famous is there too. Both Counter-Strike and Team Fortress started as mods, and ended up major successes.

    --
    A polar bear is a cartesian bear after a coordinate transform.
    1. Re:Personally I say, start with modding games by pjt33 · · Score: 1

      Nowadays I wouldn't advise anyone to write a game from scratch at home

      Why not? "Game" isn't synonymous with "First person shooter". An intelligent teenager can learn enough to make games better than half the stuff on Miniclip in less than 6 months.

    2. Re:Personally I say, start with modding games by Courageous · · Score: 1

      I can think of a few where most of the game logic was even TCL,...

      I think I want to commit suicide now.

      C//

  182. Show him Vala by Anonymous Coward · · Score: 0

    You get both a modern C# style OO language in Vala and a Delphi/Python inspired language in Genie. Both have assisted memory management and both compile to C code and from there to native code (valac can do it in one step). Runtime performance is about the same as for a program written in C++. .NET, java, perl, python, ruby... what's the point? Sorry fanbois, I'd sooner learn javascript than any of these.

  183. Perhaps something more exciting than Hello World? by gerardvb · · Score: 1

    I think the main thing is to get more interesting results. I hooked my son by designing the outline of a text adventure, that he had to program in LOGO. It worked. He is a professional now. I think creating an intresting subject is more important than the choice of a specific language.

  184. Well, for one thing... by hyades1 · · Score: 5, Insightful

    ...you're his dad. The time you spend with him will be one of the highlights of his life, and will determine how he, in turn, raises his kids. Whether you suck as a teacher or not isn't even on the scale. Try to learn. Do the best you can and encourage him to let his interests take him to other sources. ALWAYS answer his questions.

    Sorry for the polemic, but believe me, your son will stretch himself to understand you far more than he will even for the most gifted teacher. What I owe to my parents can never be repaid, and there isn't a day goes by that I don't miss them.

    --
    I've calculated my velocity with such exquisite precision that I have no idea where I am.
    1. Re:Well, for one thing... by Anonymous Coward · · Score: 0

      FWIW, I would guess that your appreciation of the importance of parental involvement in learning was/is a very good repayment in their eyes. Many parents are not so lucky; many kids never seem to understand.

    2. Re:Well, for one thing... by Anonymous Coward · · Score: 0

      ...you're his dad. The time you spend with him will be one of the highlights of his life, and will determine how he, in turn, raises his kids. Whether you suck as a teacher or not isn't even on the scale. Try to learn. Do the best you can and encourage him to let his interests take him to other sources. ALWAYS answer his questions.

      Sorry for the polemic, but believe me, your son will stretch himself to understand you far more than he will even for the most gifted teacher. What I owe to my parents can never be repaid, and there isn't a day goes by that I don't miss them.

      You hit it right on the head. Great post.

    3. Re:Well, for one thing... by robotngineer · · Score: 1

      ...you're his dad. The time you spend with him will be one of the highlights of his life, and will determine how he, in turn, raises his kids. Whether you suck as a teacher or not isn't even on the scale. Try to learn. Do the best you can and encourage him to let his interests take him to other sources. ALWAYS answer his questions.

      Sorry for the polemic, but believe me, your son will stretch himself to understand you far more than he will even for the most gifted teacher. What I owe to my parents can never be repaid, and there isn't a day goes by that I don't miss them.

      Very, very well said.

      My dad is an electrical engineer and spent a lot of effort trying to get me interested in programming (BASIC, etc.) and electronics kits. They really didn't hold my interest like Legos, woodworking, and other things did, which he also spent time working on with me. I started out as a mechanical engineering major in undergrad, but the switch flipped (pardon the pun) sometime late in undergrad, and I now work as an engineer programming robots, designing circuits, and doing mechanical design.

      I'll always be thankful for those memories, even those times when I was bored out of my skull by staring at traces on the oscilloscope, etc. Because of his example, I'll strive to spend time with my future children--at the expense of almost all else.

    4. Re:Well, for one thing... by Anonymous Coward · · Score: 0

      ...you're his dad.

      ...or his mom. The post wasn't explicit about the whether this parent is male or female.

      For all you know the son could be Bobby Tables

      Exploits of a Mom

    5. Re:Well, for one thing... by hyades1 · · Score: 1

      Actually, I thought about it, and concluded the writer was almost certainly male. Would you like to place a friendly wager on his gender?

      --
      I've calculated my velocity with such exquisite precision that I have no idea where I am.
    6. Re:Well, for one thing... by pavera · · Score: 1

      While I agree parents are extremely important, and my own have had a profound influence on my life, I will have to disagree just a little with being willing to stretch to understand.

      My dad, while brilliant, also, is an extremely poor teacher. In high school I was generally very good at math and science compared to my peers, but when I would get stuck on hard problems, I dreaded working with my dad on them. He could look at the hardest problem in my high school calculus book and solve it without writing down a single thing. He had a very hard time stepping back and walking through his thought process, and it made math extremely frustrating for me. Instead of getting me more interested it really turned me off.

      Again this isn't to say I don't love my dad, or appreciate time spent with him, but I would much rather go sailing, skiing, talk about investing, or just about anything else besides work on math problems with him. It seems this could be a similar situation, a veteran kernel hacker with poor teaching skills could really turn off someone to programming because their insights, ability to see through problems and solve them without needing to express what their brain is actually doing can be extremely detrimental to the learning process and therefore ongoing interest in a subject.

  185. Ask him to run and understand this by krkhan · · Score: 1

    #include <stdio.h>
    #include <stdint.h>
    int main() { uint32_t x[] = { 544499015, 1768693857, 1931502950, 2190959 }; printf("%s\n", &x); return 0; }

    1. Re:Ask him to run and understand this by Anonymous Coward · · Score: 0

      #include
      #include // http://www.codeproject.com/KB/cpp/endianness.aspx
      unsigned long ByteSwap2 (unsigned long nLongNumber)
      {
            return (((nLongNumber&0x000000FF)>8)+((nLongNumber&0xFF000000)>>24));
      }

      int main() {
              uint32_t x[] = { 544499015, 1768693857, 1931502950, 2190959 };
              int i;
              for(i=0; i4; i++) {
                      x[i] = ByteSwap2(x[i]);
              }
              printf("%s\n", &x); return 0;
      }

      Dammit Endianness!

    2. Re:Ask him to run and understand this by cleatsupkeep · · Score: 1

      And in doing so, all hopes of achieving the message will be gone.

  186. NetLogo by Anonymous Coward · · Score: 0

    Check out NetLogo -- http://ccl.northwestern.edu/netlogo/ -- and the book "Turtles, Termites and Traffic Jams". It's fun, it's got GREAT graphics, you get really quick gratification with just a few lines, and the GUI bits are easy and fast. Excellent.

  187. Not the same as 20 yrs ago by Mathinker · · Score: 1

    I agree about encouraging the son to program in some high-level language (in which the father is also proficient), but I disagree with your dismissive "it's the same as basic was twenty years ago".

    Twenty years ago, the computer had a kind of mystique which is now, if it still exists at all, much less strong. The way society relates to computers now, compared to twenty years ago, is really different. I have the distinct feeling that this is causing there to be less interest in learning about computers because they're much less exotic.

    Or maybe just a different demographic is interested in computers --- perhaps the kind of kids who were interesting in computers then, might now be more interested in far-out stuff like nanotechnology, space exploration, particle physics, and genetic engineering, and the kids interested in computers now are more like the hot-rodders/car freaks of then (note: this is not meant to be judgmental of either group).

    In addition, twenty years ago society wasn't saturated with exposure to computers running impressive programs like interactive 3D games, or with computer generated movies. A dreaming teenager today must be a bit more intimidated looking at all this stuff when he is starting out, writing "Hello world".

    1. Re:Not the same as 20 yrs ago by CastrTroy · · Score: 1

      I don't quite agree with you on that. I think that computers have lost their mystique. They are quite a bit more common, but still nobody understands just how they work. One you get into programming, even simple hello world applications, and actually see what's going on underneath the hood, you really get to a level of understanding that 99.99% of computer users will just never see. When your teenager compares "hello world" to Crysis, he may be a little intimidated, but you can reassure him that all those guys who wrote Crysis, probably started off writing hello world programs on their home computers. It's a long journey, and you can't write the Linux Kernel in your first year of programming.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
  188. Let Infocom be your shepherd by spyrochaete · · Score: 2, Informative

    Games are what got me interested in programming. I used to read Creative Computing BASIC games compilations in bed as a youngin'. They had the source code of a game along with a couple of printed-out test runs. I found this an interesting application of programming that spoke to my hobby of video games.

    Why don't you write a game with your son? A text adventure a la Infocom, or a slot machine or dice rolling board game?

  189. Hackety Hack by Anonymous Coward · · Score: 0

    They can learn Ruby quite nicely using Hackety Hack.

    You could also try Squeak if you're Smalltalk-inclined.

  190. How I started by anarkavre · · Score: 1

    What got me interested in programming was video games. I played a lot of Sega Genesis when I was a kid and eventually Doom on the PC. I really didn't start programming though until High School. I started HTML when I was like around 10 years old, but this is not really programming in the true sense. Though I guess it wouldn't hurt to start with something like that. High School I really didn't learn a thing. I learned most of the stuff I know on my own. It was mostly out of interest using books and the Internet. C/C++ and various Assembly languages I am familiar with. I am now in college majoring in Computer Science. I think a person really needs an interest in the subject to take it seriously. But I guess it still doesn't hurt to try. Buy him a book on C or another language. I learned a lot about pointers and memory management in C through an old book my stepdad had.

    --
    "Without curiosity and knowledge, the mind is a vast void. Without the mind, curiosity and knowledge are nonexistent."
  191. 2 things by Anonymous+Cowpat · · Score: 1

    1) C? Oh dear me no. You need too much understanding of computer science to get on with C - better to use a language that protects you from having to use pointers and the like. If the syntax for setting up an array, for instance, is complicated, he'll try to find a way to solve the problem without using an array, which will just end in disaster.
    1)a) Fortran. Fortran is an awesome beginners language - it teaches good programming practice like explicit variable declarations (I'm looking at you, basic) and being absolutely damn certain that the code does what you think it does (I'm looking at you, matlab), whilst at the same time, not being hard and unforgiving like C. It's not case sensitive this means that you don't get into the habit of having a variable named 'i', and one named 'I', and since that's begging for hard-to-find bugs to crop up, not doing it in the first place is good.

    2) Find something to do. I spent several years kicking about with QBasic and got nothing out of it. Why? Because I didn't have a problem to solve. Sitting down at the interpreter (or IDE) and not having a problem to solve just isn't productive.

    Come up with a good list of problems to solve and algorithms to implement:

    • Bubble sort
    • Shaker sort
    • Root finding
    • Rectangle, trapezium, newton-raphson methods of numerical integration
    • Runge-Kutta
    • Random Walk
    • 2D random walk
    • nD random walk (implement Box-Muller algorithm to distribute the step lengths on a non-lattice walk)
    • Statistical analysis - mean, median (requires one of the sort algorithms), mode, range (don't mention the minval() and maxval() intrinsics yet), standard deviation, standard error, variance, the last 3 again for correlated data
    • Linear Regression
    • Curve fitting (at higher orders)
    • Monte-carlo sampling
    • Implement a random number generator

    etc, etc, etc.

    --
    FGD 135
    1. Re:2 things by leuk_he · · Score: 1

      Bubble sort for a teenager? to get him programming. yeah right.

    2. Re:2 things by Anonymous+Cowpat · · Score: 1

      what? the bubble sort is incredibly simple, but teaches you about:

      • Arrays
      • Loops
      • Exit conditions (getting out sooner than 'as many steps as there are data values' - accomplished using logicals)
      • Efficiency (and how bubble sort isn't efficient, even if you use an early exit)
      • Good programming practices (good point to bring in swapping values using a subroutine, rather than as part of the main program)
      • Reading data in

      It was also the first 'program' that we had to write in mathcad as undergraduate physicists

      --
      FGD 135
  192. whoops by kramulous · · Score: 1

    I went in that direction, I'm not suggesting that being the next step in the learning process ... although ...

    --
    .
  193. emulator for an old home computer by Fallen+Andy · · Score: 1
    Programming per se seems dull when you're that age, so you really want something where he can play and *see* stuff. So, I'd suggest an emulator for the good old Commodore 64, BBC Micro, Amiga or whatever. You need to do a little research to find out which has a good lively user community though.

    A bit further down the line you might get a gameboy advance emulator e.g. VisualBoy Advance and devkitpro. Nothing beats banging the metal for sheer excitement. Before you know it he'll be writing *new* games for the DS...

    Oh, and don't forget to set him some pretty programming tasks like the gingerbread man, mandelbrot set etc....

    Andy

  194. Teaching is dependant on how you learn by asc99c · · Score: 1

    I've always found that I'm a terrible teacher, as I don't learn in the most usual way. If I'm given a fact I'll just forget it. Given a theory I can remember it.

    Normally I find myself trying to describe why something is like it is (even though these days I consciously try and avoid doing it). I tend to get a lot of blank looks, and people wondering why I don't just tell them the 'simple' version. To me a list of facts is just useless as I would forget the lot!

    What I'm getting towards is there is probably much similarity in how you and your son's brains work - especially if you're both interested in computing. Even if you're a terrible teacher for everyone else, you may find you are good at teaching your son. Or maybe not! - my brain works the same way as my dad's, but my brother's does not.

  195. Re:PHP will ruin your mind by neuromanc3r · · Score: 1

    How is Python making it hard to learn other languages? (well, apart from showing how pointless semicolons and fancy brackets are)

  196. WHY? by Anonymous Coward · · Score: 0

    WHY the hell would you want to do that? do you want to create a sociopathic asshole or some pathetic geek? in any case, you should be supportive but not a teacher, let him learn on his own. Oh and forget these assholes telling you to tech him basic or ruby. waht the fuck....?!

  197. Don't Encourage Them by Anonymous Coward · · Score: 0

    Why would you want to encourage a child to pursue a major that is being outsourced?

  198. math & SICP by basiles · · Score: 1

    Get him good introductory math books. Get him the SICP book. Show him high order languages like Ocaml, Haskell, CommonLisp.

  199. Why's (Poignant) Guide to Ruby by matvei · · Score: 1

    Just point him to Why's (Poignant) Guide to Ruby. That shouldn't be too boring. I enjoy reading just for its style, even though I already know Ruby :-)

  200. LOGO is good first language by Anonymous Coward · · Score: 0

    I played with my kids using logo at 3 and 7

  201. Formal Programming for Teens 101 by Mathinker · · Score: 1

    You don't have teenage children, I suppose?

    The original post makes it sound like he's asking for suggestions on how to make things more interesting for his teenage son (and that he's already explained a bit about the "shell"). Unless his son is quite special, I doubt that formal programming is going to be more interesting for him than something with graphics and user interaction.

  202. Don't by Anonymous Coward · · Score: 0

    If you encurrage him he will automatically think that programming is not cool and stop learning it.

  203. try games, good tools exist by Anonymous Coward · · Score: 0

    I agree games are a great motivator, lots of visual rewards. The most accessible tool I have seen is a mac environment called unity3d, it uses mono, or javascript, and gets delivers plenty of visual results very quickly.

  204. php worked nicely for my students by sneaktiger · · Score: 1

    i have been teaching 16 year old students for the better part of the last 5 years. after learning html about half of them started learning php on their own. (they had chosen an IT career path in the beginning)

    it really depends a lot on age and personality, but here are the details that worked for me:

    - find a project they are really interested in
    - don't teach theory when you can point to possible solutions a kid can acquire on its own
    - use the simplest development environment that fulfills the need (otherwise they have to learn to navigate that, too. e.g.: i start my html course with notepad, move to notepad++ after an hour and some move to dreamweaver after a week)

    good luck

  205. easy. by d_i_r_t_y · · Score: 1

    give them an editor that has boobs in it.

  206. "Learn to" books by Anonymous Coward · · Score: 0

    I've recently come across a useful book from someone that goes by the name of John Smiley. Its called "learn to program in C++", and rather than giving you pages and pages of code to type (hello world much?) its structured like a narrated classroom, and its good reading aswell as useful learning, it's helped me more than most C++ webpages have as when i'm normally confused about something it'll be explained in the form of a question from a student. sounds daft, but its useful (and as big as the yellow pages...)

  207. Game/Puzzle programming by thepacketmaster · · Score: 1

    The best way to get a kid's interest for programming is to program something he likes to use. Even though I deal with non-game programming now, that was what originally got me interested in computers at a teen. My father was typing in computer games from old Compute! magazines, and I wanted to learn how to do the same. I also remember a summer course that taught LOGO. BASIC might seem "evil" to a Linux kernel programming, but put Visual Basic on a Windows machine is a good way to do it, or Java.

    --

    --

    Luck is just skill you didn't know you had.

  208. RockBox by Roger_Wilco · · Score: 1

    I just recently started hacking RockBox, and it's a lot of fun. You can quickly go from having a boring MP3 player to doing something unique. It's portable, so you can show your friends, etc.

    You're limited to using C, but that way he's got half a chance of understanding what's going on in the machine, unlike with high level languages.

    I'd install it on a player, maybe a spare one that isn't actively in use (though it may be an upgrade to the existing firmware, it's pretty slick). Let him see the demos, modify them, and go from there. You could start with simple things like changing the colours or something in the existing programs.

  209. Ask him?? by Anonymous Coward · · Score: 0

    He IS a teenager, isn't he? it is possible to ask him what he would like to be able to do with programming? ;-)
    I mean, show him simple stuff, "you think is cool? how would you like to be able to do this yourself?"

    But I second the game idea, I also started with games... the first ones being text games or simple graphic animations/stories etc

    btw, Teenager?? nah, it's too late... us other here started much earlier than that! lost cause... :-P

  210. Re:PHP will ruin your mind by ricotest · · Score: 1

    When I learned BASIC it had line numbers, GOTOs, and some versions didn't even have functions (just GOSUB). This is a far cry from PHP which effectively retains all of C's syntax.

    Yes, it has inconsistent function names and register_globals/magic_quotes are really stupid from a security point of view. But neither of these are relevant when teaching a kid.

    Plus, web programming is a much more visible way of using those newfound skills. A child who's learned PHP can write a cool webpage and show his friends. A child who's learned C can write maybe a text-mode executable, but it's going to be hard to pass it around.

  211. what drives you by Anonymous Coward · · Score: 0

    what made me learn programing is that i could create things on my own.
    lets be honest: programing bore me. yet i'm hacking million of kernel lines every month, coding various things in various languages.

    I do it because I like to create stuff. What you need to know, is if he wants to do it and why does he likes. Create stuff? or maybe just likes the programing itself? Or maybe its something else.

    As long as something drives you to do what you do, you will like it

  212. "Pair" programming by Caesar+Tjalbo · · Score: 0

    I was fortunate to get a computer around a time when "everybody" was getting computers (The Netherlands, late 80's). There were some tax regulations that made it possible to buy a machine by trading in holidays, to a point where it seemed so profitable that many people got one without having a use for it. My dad got one and a friend of about the same age (15 or so) who lived a few doors down the street got one a couple of weeks later through his dad's work.

    What happened was I'd try something out with GW-BASIC, proudly showed it off to this friend of mine who then added something new or clever, which inspired me again to hack away, etcetera. In only a couple of weeks we'd learned to program, ferrying floppies back and forth with our latest discoveries. It had a funny mixture of generously helping eachother get better and fiercely competing to show who was the best. It was so much fun and so challenging, I needed encouragement to do anything else apart from programming.

    Nearly 2 decades later that same guy turned up as an extern for web development at the company where I was doing a COBOL maintenance job on a mainframe.

    --
    "I'm not much interested in interoperability. I want substitutability. I want to be able to throw your software out."
  213. Drive away by Joebert · · Score: 1

    Computers themselves have always been enough to interest me.

    In the beginning the thing that drove me away from computers was my father and stepmother controlling every single thing I did with their computer because it cost them $2,000 USD nearly 20 years ago, I absolutely hated being confined like that & I instead got involved in construction where there was more room (for me at least) to grow.

    I'd have an extra 10 years of experience, and might have even stayed in school, if I'd been given even a piece of crap computer to do whatever I wanted with or at least hadn't been confined like I was.
    Sad part is they'd bought it to be a "business" computer & it just ended up going to waste, fucking assholes. I hate them soo much.

    --
    Wanna fight ? Bend over, stick your head up your ass, and fight for air.
  214. Go ask Alice. I think she'll know. by Jupiter+Jones · · Score: 1

    How about Alice?

    JJ

    1. Re:Go ask Alice. I think she'll know. by _Shad0w_ · · Score: 1

      But if you ask Alice you're liable to end up talking backwards and generally just be totally off your head.

      --

      Yeah, I had a sig once; I got bored of it.

  215. Processing by LunarCrisis · · Score: 1

    Why not try something fun and interactive like Processing?

    --
    Mr. Period: Nine is the one that's right by ten!
    Nine: One day I will kill him. Then, I will be Ten.
  216. Another related question by Anonymous Coward · · Score: 0

    Btw, to follow up on my own reply...

    Anyone know any good games/playstuff for a 2,5 year old daughter?

    I tried some, but all I found were based on using the mouse pointer and clicking concepts she doesn't understand yet.
    I was more thinking of things like: Move your mouse and the funny figure is moving around doing funny stuff. Maybe click and it says something or makes something etc.

    Any tips?

    (btw once she mastered the mouse I will proceed to kernel hacking directly ;-) )

  217. high level language by Anonymous Coward · · Score: 0

    Show him something which gets _visible results_ fast imo.

  218. Don't scare him off with C by jocknerd · · Score: 1

    Get him on Python for starts. There's a good book out there called "Think Python". Its in pdf form right now and will be published in 2009. Its written by a high school computer science teacher who discovered Python when he was trying to teach his students C. The book is a revised edition of another book he did called "How to Think Like a Computer Scientist: Learning with Python".

    You can find it here: http://www.greenteapress.com/thinkpython/

  219. Why the hell?!?!? by Anonymous Coward · · Score: 0

    Why the hell do you want to encourage a teen to learn programming?! Encourage him to get laid instead!

  220. Does his school use graphing calculators? by Lord+Crowface · · Score: 1

    Those were MY first experiments in programing. I built all sorts of little games in TI-BASIC, a few of which became popular around the school. I never moved on the Z80 assembler, but some do...

  221. IBM's Robocode by Coop · · Score: 1

    IBM created a framework to encourage kids to learn programming, but apparently it's so engaging that big kids who really ought to be working spend their time obsessed with it too. You create a bot class, overriding it's methods that respond to events in the game, and then have your bot compete in battle with other bots. As a side effect you learn fundamentals of Java.

    Robocode is at http://robocode.sourceforge.net/ While googling I also found http://robocoderepository.com/ which is a Robocode enthusiast site.

    --
    "If you're not passionate about your operating system, you're married to the wrong one."
    1. Re:IBM's Robocode by dfries · · Score: 1

      I thought robocode would be a good tool for learning programming. Then I showed it to my cousins that were pretty young at the time and found out just how young someone can be and still get something about of it. I mean when you can program, move forward, turn right, and shoot when someone is in front of you without even introducing the concept of variables, you can start them pretty young. The program is even good for some advanced AI learning. I hear they were more entertained by that program than a little robot thing that had a small built in LCD programming screen, it was too limiting.

  222. It's all about keeping his interest! by Anonymous Coward · · Score: 0

    I'd go for game programming (great way to keep a kid's interest, no?). And I remember reading about a java book for kids and old people... There is also javascript which gives quite rapidly visual results, seems great to start a kid in programming!

  223. html, css and php by ico2 · · Score: 1

    Teach him html, css and php.
    Spiffy websites impress women a lot more than a hello world program in real mode assembler. Trust me.

  224. Shoes, Gibson and Garry's Mod by krilli · · Score: 1

    Shoes:
    http://code.whytheluckystiff.net/shoes/

    Try Ruby:
    http://tryruby.hobix.com/

    William Gibson books.

    Garry's Mod.

    --
    Jag pratar lite svenska.
  225. Put him up for adoption by 91degrees · · Score: 1

    Then adopt an Indian boy who already knows how to code.

  226. O'reilly Head First Series by djdead · · Score: 1

    Like most people at my office, I am a huge fan of the Head First series of books by O'Reilly. A number of people at our office have gone from not knowing anything about computers (we have a number of hardcore theoretical mathematicians) to being proficient java programmers with these books.

    --
    -1: flamebait should really be -1: inciteful
    1. Re:O'reilly Head First Series by Anonymous Coward · · Score: 0

      I have a fourteen year old son, and I can not get him to put down Head First C#. It may be a little old for a younger kid. It is the only book that I have seen that guides you through so much hands-on programming and problem solving, which in my humble opinion is the only way to learn how to write code.

  227. Are you kidding? by Anonymous Coward · · Score: 0

    As an IT I would NEVER recommend my children to go into IT.

    They can 'hobby' it, but as a programmer I would never recommend it to my children. Ever.

    That's just my and IMHO of course.

  228. Try Alice or GameMaker by Anonymous Coward · · Score: 0

    Alice is an excellent, graphical way to learn programming, and is very engaging. I've used it with students from grade school through grad school.
    http://www.alice.org/

    Game Maker is also a great way to learn programming where you get a lot of the graphics for free. Used to be entirely free, now there is an eval version and a pay version.
    http://www.yoyogames.com/make

  229. I think it's difficult. by seanyboy · · Score: 1

    There are a couple of reasons that it's getting harder to teach languages.

    1. Languages are moving away from knowing fundemental coding constructs (loops, if statements, etc) and towards knowing an API. You can't really do anything with a modern language without knowing what the libraries are. I suspect these things are frustrating for the learner programmer. I'd pick something with as simple an API as possible.

    2. Back in the day, a junior programmer could write something in a couple of hours that was almost as good as the games, etc you purchased. This is no longer the case. I think it's difficult teaching the basics of programming when no child is going to produce anything that comes close to the games they play or the programs they use.

    If I were to try and teach programming, I'd look at something like scratch or Hackety Hack

    Good luck.

    --
    Training monkeys for world domination since 1439
  230. Ti-89! by Crazyswedishguy · · Score: 1

    Strangely enough, the first programming I learned was on a Texas Instruments Ti-89 scientific calculator. I wasn't even sure in what language I was programming in, but I found some games (generally text-based RPGs) and science programs (math or physics) and decided to understand what was going on. Soon I was making my own RPG (never completed it but I learned a lot) and my own math/physics programs.
    I won't say this is the best way to learn programming, but everyone has a different introduction, and this one definitely piqued my interest enough to take a computer science class in college (which I loved).

    On a somewhat unrelated note, there's a great book that may get him interested in Ruby: Why's Poignant Guide to Ruby. Maybe give that a try.

    --
    This space up for sale.
    1. Re:Ti-89! by Nyall · · Score: 1

      There isn't an official name for the language. But in the ti sites/forums we call it basic or 'ti basic'.

      I consider it a very good way to learn how to program. Its a portable platform you can take to school, and you can make programs for the classes you take. It is very easy to make dialog boxes and give output. Things that would take you a couple years to learn all the APIs on a real PC to accomplish.

      --
      http://en.wikipedia.org/wiki/Jury_nullification
  231. Show your son Smalltalk by chris_sawtell · · Score: 1
    Show him Smalltalk and let him get on with it.
    It's probably the most productive language and programming paradigm ever created.
    It'll probably blow your mind apart, but youngsters take to it like ducks to water.
    The slogan is: Smalltalk makes hard things possible, and the impossible, possible.

    If he gets a reasonable grasp of the principles of these, I assure you he can look forward to a very profitable and rewarding life.

  232. FreeBASIC by ciw42 · · Score: 1

    In my opinion by far your best bet is something like FreeBASIC (http://www.freebasic.net/) which has a number of advantages as such:

    • Available for DOS, Win32 and Linux
    • Compiles to fast, native, very compact executables. A major advantage over Python or VB if he wants to give copies of his creations to friends.
    • Includes bindings for dozens of major libraries e.g. OpenGL, SDL, DirectX, MySQL, SQLite, GTK, Win32 API, FMOD, BASS etc.
    • Essentially based on QuickBasic (there is a QB compatability switch) but with the addition of things like pointers, basic object orientated features, a greatly expanded built-in graphics library and even in-line assembly.
    • Several good, free IDEs

    I taught my girlfriend to program using FreeBASIC in a single evening and she picked it up really quickly, even writing her first game (using circles for the objects) over two nights.

    With it being BASIC it's quick to get started, but has enough modern features and bindings that it's perfectly suitable for serious work. I've used it for quick prototyping and written quite a few helper apps and utilities for work, and I know others who've used it to write Windows Services without too much trouble.

  233. Or maybe take computer blocks off... by Impy+the+Impiuos+Imp · · Score: 1

    > How To Encourage a Young Teen To Learn Programming?

    Tell him if he finishes the work, you'll get him a purple, season 11, tier 43 sword.

    --
    (-1: Post disagrees with my already-settled worldview) is not a valid mod option.
  234. Logo Writer by ezterry · · Score: 1

    I wonder if there is a modern equivalent to Logo. In elementary school they had us making the turtle draw complex scenes, eventually involving functions and loops.

    Sometime after that my dad upgraded to a old world perform power mac. (60MHz, 512MB disk space) and installed a C compiler [probably so he could poke it at some point, not that he ever did]) and gave me a lesson or two in C, before I started coding/learning on my own.

    A little before the LOGO writer he tried to show me basic.. but at that point I had little interest.. or really didn't like the line numbers

    The real trick is the logic mindset and desire to change the logic. Then you can learn any language once you figure out some of the syntax. However very few people think this way even in the field I find.

  235. Web site. by CountBrass · · Score: 1
    When I was a kid I self-taught programming on a Commdore Pet. What drove me was that I could, and did, programme games as good as those being professionally published (I even self-published a couple).

    Obviously today that's not possible. But I think where you can still produce stuff as good as the pros is in developing a Web 2.0 web site.

    I'd suggest getting him started on Ruby on Rails and working through a book like "Ruby on Rails E-Commerce" (exciting title eh!) or similar ones that you work through to build a social networking site.

    As he gets into it you can perhaps guide him to other aspects of the system:

    • security,
    • design of the UI,
    • AJAX,
    • ruby gems.

    If he's got a bit of math geek in him then perhaps look behind some of the data structures especially the ones RoR uses to hide the complexity (eg hashes).

    Edward

    --
    Bad analogies are like waxing a monkey with a rainbow.
  236. Alternatives by HungSoLow · · Score: 1

    Give him access to alternatives. I was interested in computers, programming, etc... as a kid but I also had access to hardware. I began with Basic / C (coding games) and ended up migrating to coding for PLDs / FPGAs, then to designing audio amplifiers, until finally I found myself in antennas / electromagnetics - I'm now working on my doctorate. Computers are the first introduction to technology, and programming is the easiest to start with, but it certainly isn't the only thing to learn. All I'm saying is to make sure there are options.

  237. CROBOTS by duranaki · · Score: 1
    My dad introduced me to a programming game called CROBOTS (as in 'C' Robots). You had to program a robot to fight in an arena using simple C, then pit it against up to three other bots. I actually tried it not that long ago, but it was clearly using loops for timing, so the "live" battle took about 1 second. Maybe there's a newer version or something similar for another language?

    In general, I think it's good to find something your son likes and find a programming project that fits. Then go from there.

  238. Games by Jaysyn · · Score: 1

    If he likes PC gaming at all, find one he likes that is scriptable, preferably with a C like structure. Neverwinter Nights & Unreal come to mind immediately, but I'm sure there are many others.

    --
    There is a war going on for your mind.
  239. Two complementary counterparts by Anonymous Coward · · Score: 0

    Counterpart 1. Plain old Software - I definitely suggest Ruby. It is easy, fun, cool while it still remains a powerful language. Almost the same holds for Python, although Ruby is way long ahead on the elegance and fun path.

    Counterpart 2. Hardware - I agree with ledow. Computer aren't only software. So I suggest Arduino (http://arduino.cc) as an easy way to get into the gist of a (extremely simplified) computer. Let your child stick your finger with DAC, interrupts, serial communication, and let him light some LEDs.

    Both the above suggestion are purposefully stated with the "maximum (fun*usefulness)/cost" ratio. Granted.

  240. Interested in programming, or bonding with father? by Anonymous Coward · · Score: 0

    Determine if he is interested because he finds programming interesting, or if he is interested in knowing what his father does and exploring another way to get to know his father.

  241. Some fun intros to programming by Ramayana · · Score: 1

    'Teenage' can cover a wide range, but we've had fun with Lego Mindstorms http://shop.lego.com/ByTheme/Product.aspx?p=8527&cn=17&d=70

    I used to work as a TA in some intro classes that used Karel and Karel++ http://pclc.pace.edu/~bergin/karel.html Kinda like Lego Mindstorms on your screen. It's really pretty cool what you can do with it (make a binary calculator out of robots, for instance). The classes would start with a few weeks of Karel, then move on to other languages.

    For me anyway, it's about learning to think and express your ideas via programming, the language is really secondary (i.e. most learn more than one, if they go on in the field).

    Stuff like this was fun (for most people) and laid a decent foundation for later.

  242. What's more important ... by Anonymous Coward · · Score: 0

    ... How To Encourage a Young Teen to Sleep With You, if the Subject is Female

    That would make for a much more interesting read.

    JUST KIDDING! SORRY!!!! I SUCK!!

  243. game programming as motivation by Anonymous Coward · · Score: 0

    My son, 13, likes the open-source game Enigma. When he discovered that he could create his own levels, he was motivated to learn Lua, the language that the levels are written in.

  244. Re:PHP will ruin your mind by Anonymous Coward · · Score: 0

    What was that quote about virtue declining in the young folks? Turns out that it dates back to the times of Socrates.

    I hate to break this to you, but the "X is the WORST first programming language" has been a meme since the sixties. I learned to program in BASIC as a child, something the Prophet Dijkstra said would horribly mutilate my intellect. Well, I work at a company dealing with real-estate data, and I write Perl, C, PHP, COBOL, Java, shell, Prolog, and SQL almost daily and do Common Lisp and Python on about a weekly basis. I did several years in research as well as having spent years in industry, and learning BASIC hasn't hurt me.

    The key when teaching someone to program is not the syntax! It's helping them find the way that they connect most with the reality of what's going on inside the machine. Assembly is great for this because, except for a few pseudo-ops, you have to directly control the machine to do what you want in a way that is specific to the machine. You have to understand the underlying architecture. But don't think for a second that x86 assembly is elegant and beautiful - segmentation is a clusterfuck kludge.

    The benefit of PHP is that it allows someone to do some flashy stuff in a short amount of time. This is partially due to the fact that it abstracts away a lot of menial things, but there are still many "academic concerns" you have to take into account. Efficiently structuring the code is still important. Maintaining state securely is still important. Good algorithms are still important. Properly structuring abstractions is still important. You still have to understand the logic of programming.

    No, you can't write the newest first person shooter in it, but you sure can write some interesting, useful things in it. You can show what you create to the world much easier. I have a feeling that would appeal to a teen who is used to Facebook and MySpace and Twitter or any other Web 2.0 site.

    In other words, just because you don't like PHP, don't tell others not to learn it. You should be ashamed of your attitude that you are the all-knowing oracle of the programming world.

  245. My first programming experience by riperrin · · Score: 0

    was at about age 12 in high school with a program where you created a flow diagram in a graphical editor. This would interact with an external device, which might be a lift or traffic lights etc. You could physically interact with the device like pressing the button to call the lift to a certain floor. You'd then see in real time the flow diagram showing which stage the program was at. Maybe some of that Lego mindstorm or whatever its called might be the best thing, assuming you can program that stuff (I don't know for sure). Something where he can actually see what he is programming and how it interacts with the outside world. Reggie

  246. Real programmers don't need encouragement by Anonymous Coward · · Score: 0

    Don't do it!

  247. Try Logo or Robowar by Kolargol00 · · Score: 1

    Logo combines simple programming with rewarding Turtle graphics. Programming gets much more interesting when you can make something nice appear on the screen.

    After that, I suggest Robowar a game where you program robots to fight against each other. It combines programming with tactics and graphical animation of combats.

    --
    XML is like violence. If it doesn't solve the problem, use more. Junta
  248. VB, JAVA, or server-side scripting by sorak · · Score: 1

    Hello world will get old after a while. You need something easy, that can produce something that would interest him. For that, I would suggest either VB, because it is very easy to get a GUI app up and running, Java, or HTML, with php/asp/J2EE, all for similar reasons.

  249. I have three kids... by _14k4 · · Score: 1

    Ages 7, 8, and 9... and they are all very interested in the computer; naturally, for the games. So when they see me programming (usually snippets for stuff on project euler) they are always asking "How can I make a game like WoW?"

    The nine year-old is good at typing, and great at reading. I've worked with him on some of the different "higher level lower functional" programming languages that focus on children. He loves it. Though he fell from it when it became somewhat like a lesson and less like a flashy game. I think that, personally, is my biggest hurdle. Teaching without the flash, when I know they need to know the stuff behind the flash first. As they get older, the flash will come, but at least with my kids, they outgrow the "draw a line and the turtle follows it" stuff fast. Also, I have to admit, the oldest may simply not like programming! Which is ok too, I guess. Until the day they tell me HTML is a programming language. :P

  250. Project Euler by frenchbedroom · · Score: 1

    Well, if you guys both like math challenges, you should check out http://projecteuler.net./ To quote the homepage :

    Project Euler is a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve. Although mathematics will help you arrive at elegant and efficient methods, the use of a computer and programming skills will be required to solve most problems.

    Maybe you could tackle those problems together ? You could design algorithms together, let your son do the writing and then review his code and discuss better approaches. Also, when you solve a problem, you can access a forum on the website where other users post their solutions. You can learn a lot by comparing the approaches there. And since every user on the site has his or her favorite programming language, you can broaden your horizons by looking at solutions to the same problem written in K, Python, C, assembly language...

    I've solved 51% of the problems and they've been great at making me remember some good programming practices.

  251. How about a series of embedded Linux projects? by Anonymous Coward · · Score: 0

    I appreciate the fact that some people say you should try and steer your son towards whatever discipline he is naturally inclined. However, from your comments I think you would ideally try to push him down the more traditional C/*nix, path, ideally making a *nix systems developer out of him one day. I think there are some excellent projects along these line on the embedded Linux arena.

    Purchase an ARM, Power PC, etc development board that runs a 2.6 kernel, and has a vga output. Attach to that a simple breadboard, into which you can easily plug-in things like leds, 7-segment displays, motors, temperature and light sensors. This way your son can see things moving, being turned on/off, i.e. get feedback from the physical world depending on how his software is written; I think kids love that kind of stuff. By playing around with these things, your son would acquire a good range of skills, including C programming under Linux, familiarization with basic electronics components, cross-platform development, a good introduction to kernel-space development due to the writing of simple device drivers, and perhaps user-space development and experience with shell scripting, as you could also have him write some simple scripts or user-space apps to test/utilize his lower-level software.

    I know all the above might seem like a big ask, but the benefits I think would be enormous, should the skillset match what you have in mind for his future, and should he wish to pursue such a future. I think the above might be a good, and equally interesting subject as the computer-game route suggested by others, but then again I am an embedded guy.

    Alternatively have you looked at any of those Lego things or any other of those programmable toys that are on the market?

  252. MUDS! by Swampcritter · · Score: 1

    A MUD (Multiple User Dimension, Multiple User Dungeon, or Multiple User Dialogue) is a computer program which users can log into and explore. Each user takes control of a computerized persona/avatar/incarnation/character. You can walk around, chat with other characters, explore dangerous monster-infested areas, solve puzzles, and even create your very own rooms, descriptions and items. You can also get lost or confused if you jump right in, so be sure to read this document before starting.

    Part 1: MUDs and MUDding contains general information about muds and mudding, connecting to muds, mud etiquette, and some commonly used terms found within muds.

    Part 2: MUD Clients and Servers contains general information about mud clients and mud servers and provides links and descriptions of various types of clients and servers that are available.

    Part 3: RWHO and mudwho contains basic information about RWHO and mudwho, utilities for getting information about who is logged into a mud at a given time.

    Part 4: Servers at a glance contains a more detailed breakdown of the various mud server types that are available. This section is limited right now but will grow with time.

    As for the programming background for muds -- they come in C, C++, C#, Java, uLPC (Pike), Python, VB.NET, PHP, etc.

  253. SCRATCH! Re:Scratch: A visual programming tool by JasonNolan · · Score: 1

    There's no question that unless he's bored, start with scratch. I use it with senior undergrads, and we'll be looking at it in my grad class today. It is easy enough for a child, and you can do enough with it, especially if you add the robotics tools such as the picocricket module for scratch.

    --
    https://www.tandfonline.com/doi/full/10.1080/1369118X.2013.808365
  254. Alice by Anonymous Coward · · Score: 0

    Try Alice:

    http://www.alice.org/

    It's somewhat more engaging that just plain old Basic like we all learned on, and teaches both procedural and OO concepts.

  255. Effing Magic by Keeper+Of+Keys · · Score: 4, Insightful

    You've hit on something there. I started messing around with computers when I was 12, and got such a kick out of getting them to do the simplest things, like print messages on the screen. And I can't say the thrill of getting one of these dumb lumps of matter to do what I want it to has never really gone away.

    I think Python would be an excellent starting point, but the language I would choose for a kid's first taste of programming is javascript. They're already familiar with browsers, and within seconds they can be bossing one around, leveraging all its graphical power.

    1. Re:Effing Magic by bhima · · Score: 1

      Hah! These days I'm mostly an embedded developer and the part of my job I enjoy most is doing the hardware shakedown code... nothing like making the lights blink and motors whir. Maybe it's just me but I find the massive IDE used for today's development really off-putting and prefer to just use vi and a cross compiler... or at least I find it far more clear just what in the hell I am doing in that sort of environment, rather than today's full on IDEs.

      --
      Nothing in the world is more dangerous than sincere ignorance and conscientious stupidity.
    2. Re:Effing Magic by minister+of+funk · · Score: 2, Insightful

      I've had many conversations with various peers around the question, "What do you think is a good first-language?"

      When I was first exploring computers, I was using Basic, Pascal and Logo. I don't remember Pascal, and I can't forget Basic or Logo. My first big passion-driven project was developing a Choose-Your-Own-Adventure engine in Basic. It got me into abstraction, simple databases, and eventually graphics.

      I think JavaScript is a GREAT learning tool. You can simulate writing to files using text areas or new windows and Firebug is an excellent debugging tool. The language is very approachable and forgiving. Maybe using a strongly-typed language as a first language encourages disciplines that are missing in new programmers, but inference-typed languages offer tremendous power and can lower frustration levels.

    3. Re:Effing Magic by LeafOnTheWind · · Score: 1

      I learned Python as my first language when I was 10 and moved on to C++ at 11 and 12, where I moved to learn C, Perl, and Java, Scheme, etc, etc.

      My advice:
      Don't be a teacher. When your son is stuck or needs a pointer here and there, be there to move things along, but don't be a teacher. After seeing some fellow CS students who don't have any interest outside of class and only learned in class, I started to realize that I had the most respect for those who taught themselves.

      Providing pointers will allow your son to progress quickly (not getting bogged down in annoying conventions) but not taking away the fun of innovation. There used to be an old school mentality of crappy documentation, code snippets, dial-up internet, and late night hacking which has quickly deteriorated. Teach your son to teach himself and I will be thrilled to work with him. :)

    4. Re:Effing Magic by soliloqy · · Score: 1

      My very first program (in Apple Basic, hah) was a Mad Libs type program for my little brother. It would ask him to type in a noun, verb, color, whatever, and then output a story using those words. Later I modified it to ask him if he wanted to play again. Then I added more possible stories (I was copying them out of a Mad Libs book) and added a "Do you want to play again with the same story or a different story?" at the end. Extremely basic, taught me the foundation of programming concepts, and was fun.

    5. Re:Effing Magic by Draek · · Score: 1

      The problem with javascript is, it doesn't have the l337 CLI c00ln3ss of Python and Ruby. Making things appear on your browser is web design, making things appear on a white-on-black terminal is stuff that only hackers do ;)

      Besides that, though, I think that the initial language is pretty much irrelevant with a good online tutorial and someone to ask questions to. I learned in friggin' C++, which I still consider the most complex programming language known to mankind, but having a friend and my dad to ask when I got confused negated any possible drawback of the language, IMHO.

      --
      No problem is insoluble in all conceivable circumstances.
    6. Re:Effing Magic by betterunixthanunix · · Score: 1

      I personally started with C++, and I was programming little (terrible) games on DOS using DJGPP. To be quite honest, I had never been more excited than when I managed to get a magenta dot to appear on my screen, by directly accessing video memory. If I had started with Python, I would have missed out on that.

      Then again, writing directly to the screen in this day and age is a bit trickier.

      --
      Palm trees and 8
    7. Re:Effing Magic by T3Tech · · Score: 1

      I also do embedded development, but I started using Eclipse a couple months ago to see if I liked it. However, I still use a command line make cross compile so don't really use it so much as a full IDE as I do a glorified text editor with a couple useful extras. So far, I like Eclipse much better than KDevelop which I've used for some basic stuff in the past mostly because it was already installed with KDE and I figured WTH.

      I've still never gotten completely used to vi/vim even though I still often use vi because in some cases it's the only editor available on a box and I did use gvim (still do occasionally) for quite a while to do coding. Almost the same thing with emacs. I used it all the time when my primary machine was an Amiga, and have on occasion since then but I never really got into using it enough to take advantage of even half its features. For basic quick text editing I prefer to use pico. Yeah, I'm strange.

      --
      Of course I didn't RTFA... why would I do that? You really are new here aren't you? Don't let my UID fool you.
    8. Re:Effing Magic by inline_four · · Score: 1

      To be quite honest, I had never been more excited than when I managed to get a magenta dot to appear on my screen, by directly accessing video memory.

      I can relate. I'm not very unique in having started with BASIC, Pascal, C/C++, and Perl. What might be a little more unique is that I started programming with roughly 1 hr of computer lab time per week. That was back in Russia in the early 1990's. At that time, reading a book, experimenting, writing some code to manipulate video memory or the like and seeing that stupid dot on the screen was definitely magic. But maybe not so much now for a modern kid growing up surrounded by mobile devices and other clever gadgets, who probably can't even imagine a computer not connected to the internet.

      What made the dot on the screen magic to us was that something grabbed our fancy and drew us in resulting in an early self-motivated interest in learning to program. The principle I'm sure is still valid today, but maybe the initial stimulus might have to be fine tuned. I don't have kids, so I'm kind of guessing here, but what I like about the Javascript idea is that it could allow a teen to start messing around with things that can

      1. be used to construct things like what is relevant now (interesting web pages, games, rich(er) web apps);
      2. be easily shared, shown off, reused, and continuously maintained; and
      3. serve as a gateway to learning about server-side programming, networking, and other facets of modern computing.
      --
      Alexey
  256. Ruby, HTML and JavaScript by Tulitiikeri · · Score: 1

    I would go for Ruby. It's one of the simplest programming languages (you can understand code if you understand english). It could be, however, even better to first learn basic HTML and maybe some JavaScript tricks.

  257. Re:The interesting part of the problem. by jamesivie · · Score: 1

    Absolutely. If he has any aptitude for programming, GameMaker will bring it out and get him thinking like a programmer. The next step towards real development would probably be Flash. After that, most other mainstream languages will not be too hard.

    --
    "O'Connor, smash the window." "Why me, Bigboote?" "It might be boobie-trapped!" "Oh!"<smash> -Buckaroo Banzai
  258. Buy them a scribbler.... by summetj · · Score: 1

    Buy them a $150 scribbler robot with Bluetooth camera module that you program in Python, and turn them loose on our free online textbook.

    Robot: http://www.georgiarobotics.com/roboteducation/products-1.html

    Textbook: http://wiki.roboteducation.org/Learning_Computing_With_Robots

    Disclaimer: I teach this class, and work for IPRE ( http://www.roboteducation.org/ )

  259. Re:PHP will ruin your mind by Anonymous Coward · · Score: 5, Funny

    Hey, I learned PHP as a first language you insensiti-Warning: Cannot modify header information - headers already sent by (output started at /home/a9286564/public_html/x/forum/bb-settings.php:169) in /home/a9286564/public_html/x/forum/bb-admin/install.php on line 10

  260. Young Teen, huh? by jeffsenter · · Score: 1

    Well for the parent of a young teen, the best way to intrigue a young teen in a topic is to make it forbidden.

    BAN your son from programming!

    Sure enough soon he'll be sneaking out of his bed at night to code on his own.

    1. Re:Young Teen, huh? by kbielefe · · Score: 1

      I know everyone's trying for a funny mod with this joke but seriously, that's a pretty low representation of teens. They mostly want to be allowed the independence to exercise their own judgment and creativity, and recognized when they do it well. Of course, the easiest way to be certain you aren't merely mimicing your parents is to do something you know they do not approve of, but that isn't the primary goal. Assuming that your kids do everything to either please or displease you is a very ego-centric view.

      If you want to encourage teens to do something, it needs to be their idea, then it doesn't matter if you approve or not. You can guide that decision as much as you want, providing information they are not aware of, helping them to see the longer term ramifications of their decision, but the final "click" of the idea has to come from them.

      For example, the stereotypical "teen wants to wear weird clothes" scenario. You can say, "Well, that's certainly not a style I'd choose for myself, but it's an interesting choice. What attracted you to it?" That emphasizes their independent thought, and shows you are interested in their point of view before you pass judgment.

      You might follow that up with, "Like it or not, people make assumptions about others based on the clothes they wear. What assumptions do you think people will make about you if you wear that kind of clothing?" Again, focusing more on their ideas than your own.

      "When I was in high school, most people I knew who dressed like that didn't do drugs, but enough did that a lot of people still assumed they were into drugs. How do you plan to handle that if it comes up?" You are giving them information they may not have thought of, not accusing them, but showing you think they are capable of coming up with a solution. If they really aren't prepared, you'll find out at this point.

      In the end, they still might decide to go a different way than you would prefer, but your concerns are addressed and they are prepared to handle the consequences of their own decision. If you do decide to "lay down the line" (which is stupid for something as trivial as clothing in my opinion) at least they will fully understand your reasoning behind it, and hopefully at least feel you don't outright hate them, but merely are utterly incapable of ever understanding them.

      From the perspective of cultivating an interest in programming, the OP's teen has obviously already shown that interest. All the parent has to do is find out what the teen wants to accomplish with it, make sure he understands that sometimes you have to slough through some boring stuff in order to have enough skills to do the fun stuff, and make sure he has all the tools, resources, and guidance to succeed.

      --
      This space intentionally left blank.
  261. itch to scratch by acroyear · · Score: 1

    Part of the hacker mind is that whole idea of getting noticed, and for me, feeling noticed was getting my stuff out there where it could be seen - i went into user interfaces.

    so rather than trying to force-feed him into low level unix hacking, start from the top - set up a http/php/mysql environment and give him something to do like, say, make an app that catalogs the dvd and cd collection.

    with that, you should see the "don't repeat yourself" start to come into play - as you start the boring job of entering data, you figure there's got to be a way to automate that, and then you can encourage them into looking at ajax and freedb's web services to auto-populate the fields on cd insert and other hacks like that.

    the hack is the short-cut that works better than the real solution, but in order to appreciate the hack (and come up with your own), you have to at least start making the real solution first.

    --
    "But remember, most lynch mobs aren't this nice." (H.Simpson)
    -- Joe
    1. Re:itch to scratch by sjhalasz · · Score: 1

      If you've got a young teen (or younger) (or older) with an itch to scratch, try the "Scratch" programming environment from MIT: scratch.mit.edu It's fabulous.

  262. Personal Experience by LEMONedIScream · · Score: 1

    The worst thing you can do is force it out of him. My dad tried the same thing by pulling his own whatsamacallit-tiny-thing-with-no-nonvolatile-memory-and-16k-ram-or-something. I can sort of remember the word "variable" out of an hour long conversation where he tries to explain the basics. Granted, he did buy me a book and I was reading through it but... what I really needed at that point was just basic "programming" stuff, not methodologies, techniques and correctness tips.

    It wasn't until a few years later that I really got into it, I picked it up myself, out of my own accord and I fuelled myself forward. OK, so I was trying to program in a Microsoft Word 97 vb macro utilities but I was young. So so young.

    What your son really needs is to find a reason to do it himself. The project needs to be large. My first real program was in C, writing cheats for online games. It was a vast undertaking, including grabbing a http page, parsing it enough to find certain things, calculating the next thing along to do.

    The most important thing was that I kept myself going on this part. At this point, if I asked my dad for help, he'd look over something and point out an obvious but anything specific he'd just mutter "I can't remember, I'd have to look it up, why don't you do that?" or something similar. This would be down to simple things such as, "how do I use function pointers" or something.

    Well, fortunately I can now use libraries and their documentation and know how to look things up in a grown up "all by myself" way. Unfortunately I learnt through going through every online tutorial on C available. They like to gloss over the why and reasons for doing something but between about 5-10 (following one, looking up the topics in others), they'll kind of explain the topic between them. My desire to work out what's "good" and "bad" in programming seemed to naturally calculate things and work themselves out. Then I learnt the formal approach to patterns, consistency, etc.

    If your son is in high school, this would be the perfect time and approach. After the whole affair, everything I ever learnt at all was turned upside down for the better.

    Anyway, to your son: good luck and have fun!

  263. Re:PHP will ruin your mind by SimHacker · · Score: 5, Informative

    If you're a PHP programmer, you're irresponsible if you're not already aware of its flaws, because you have not educated yourself by reading any of the following well publicized articles. Once you understand the flaws of PHP, you can't honestly make the statement that it's a well designed language suitable for teaching programming to kids.

    First there is this classic article, Edwin Martin's "What I don't Like about PHP", which goes into detail about the following fundamental flaws:

    1. Bad recursion
    2. Many PHP-modules are not thread safe
    3. PHP is crippled for commercial reasons
    4. No namespaces
    5. Non-standard date format characters
    6. Confusing licenses
    7. Inconsequent function naming convention
    8. Magic quotes hell
    9. Framework seldom used
    10. No Unicode
    11. Slow

    Then there is the mind-set of the PHP language designers and community, which is deeply flawed. Ian Bicking's "PHP Ghetto" article sums up the problem with PHP's design and community pretty well:

    I think the Broken Windows theory applies here. PHP is such a load of crap, right down to the standard library, that it creates a culture where it's acceptable to write horrible code. The bugs and security holes are so common, it doesn't seem so important to keep everything in order and audited. Fixes get applied wholesale, with monstrosities like magic quotes. It's like a shoot-first-ask-questions-later policing policy -- sure some apps get messed up, but maybe you catch a few attacks in the process. It's what happened when the language designers gave up. Maybe with PHP 5 they are trying to clean up the neighborhood, but that doesn't change the fact when you program in PHP you are programming in a dump.

    Jonathan Ellis' "Why PHP sucks" article makes a lot of good points and links to many other sites with more information to back up the claim that PHP sucks.

    He perfectly summarizes the yapping of the PHP apologists when he says: Basically these all boil down to, "I don't have enough experience to recognize PHP's flaws because I haven't used anything better."

    He summarizes:

    In short, PHP sucks because, PHP's authors are prone to confuse "pragmatism" (a fine design goal, if done well) with "adding random features without considering how they impact the language as a whole." Thus, its authors have found it necessary to correct obvious flaws in both minor and major releases, with the result that the recent PHP5 breaks with the past to an unprecedented degree while still leaving many fundamental flaws un-addressed. I don't know if this is because they didn't recognize those flaws, or more likely, because they were willing to impose "requires a lot of pain to upgrade" but not "requires a complete re-write."

    There is also a lot of great stuff about why PHP is so bad on http://www.ranting-wolf.info/category/technology/programming/php/ including a concise description of why the "Smarty" templating system is such a horribly ill conceive and terribly implemented idea.

    And if you're still not convinced the design of PHP is deeply flawed, because language design is HARD and should only be attempted on purpose by experienced people, here's what the Father of PHP Rasmus Lerdorf himself said in an ITConversations interview, quoted in "Why PHP sucks, Part III":

    "I don't know how to stop it, there was never any intend to writ

    --
    Take a look and feel free: http://www.PieMenu.com
  264. Flash ActionScript by berlindx · · Score: 1

    I got a great beginning by learning Flash. This worked well for me because initially, I got immediate gratification from seeing my colored shapes tween around the screen. Once I got bored with that, I was able to make more involved projects by learning ActionScript, which is a very well documented and teachable language. Although it limited you to working in Flash, it gave excellent results for not that much work, and it taught me the basics of programming in any language (IFs, loops, functions) Once I wanted to expand my horizons, learning c++ was easy as pie. It also game me a reason to learn things like PHP, mySQL, and JavaScript, to make even more useful and involved projects.

  265. DrScheme is great by dg__83 · · Score: 1

    Hey,

    Try DrScheme; learning Lisp is a lot more palatable for beginners in my experience and DrScheme has a wonderful interface. He can have fun with simple programming and making his own algorithms without having to go through all the tedious memorization and syntax that would comes with a lot of languages.

    My non-techie mom loves puzzles and is a competitive (and damn good) bridge player - I'd always wanted to get her into computer science, but was never able to because having to think about compilers or calling pre-existing packages would just make her eyes glaze over. I finally broke through with DrScheme - now she makes her own programs to crack those puzzles that are in the newspaper each day (and has no idea that that is programming - she assumes programming means something ugly like Java).

    http://www.drscheme.org/

    --
    :)
  266. Visual basic 6 by slimjim8094 · · Score: 1

    No, seriously. You can write some shit code, and it's not very powerful, but it's easy to do stuff with (just not complex stuff)

    I don't like the .NET one, but version 6 learns nicely. It was my first actual language (aside from like HTML).

    The thing that's nice about it is you can draw your window and run it. It'll work, but not do anything. Changing properties is also a GUI - no .setVisible(false) or anything like that.

    Then, when he's made a window that suits him (take two minutes to explain the basics of ergonomics - ok and cancel go bottom-right, etc), have him double-click a button and explain that this will run when you click, etc.

    Very simple to learn and use, and decently useful.

    --
    I have developed a truly marvelous proof of this comment, which this signature is too narrow to contain.
  267. Give him a reason by Anonymous Coward · · Score: 0

    The language is secondary. Start by finding something he wants to make the computer do. It could be new indexing for his flac audio tracks. It could be bypassing porn filters ;). Then help him figure out how to do it. Show him how to break the problem down into little pieces he can build from easy to hard. Show him how to find libraries he needs so he doesn't have to build everything. Once he realizes that what a computer does isn't limited by what you can buy there will be no stopping him.

    1. Re:Give him a reason by Fieryphoenix · · Score: 1

      Absolutely spot on. The reason comes first, the means after. I first learned to program because I wanted to play the computer games published in computer magazines. Since they were mostly written in BASIC for Apple and I had a PC, I had to learn how to modify them for PC. Likewise, I learned to configure my PC because I needed to get the damn games I bought to run.

  268. Teach him C++ by Anonymous Coward · · Score: 0

    Teach him C++, most current programming languages have the syntax of C, and he will learn an approach to OO. Afterward, he can go with better languages.

  269. how i got in by Joe+the+Lesser · · Score: 1

    The seed of my love of programming was implanted by a BASIC programming course in 7th grade. I never coded BASIC again, but the thrill of it stayed with me and in High School I took a C++ course, received top honors, and declared CS early decision that year.

    I wasn't even very good with computers...didn't know DOS or UNIX before college... but the logic of the programming was seducing.

    --
    "I only speak the truth"
    Karma: null(Mostly affected by an unassigned variable)
  270. Something cool by Anonymous Coward · · Score: 0

    I absolutely second what Chineseyes said about not pushing your child.

    Anyway, if he is really interested, let him do something that is considered 'cool' by kids of his age. How about the iPhone? AFAIK, that would combine modern development techniques with a BSD base (if he developed on OS X). Probably too expensive and definitely not OSS.

  271. Check out Alice by Hemingray42 · · Score: 1

    Here's an idea: http://www.alice.org/index.php?page=what_is_alice/what_is_alice It's a great intro to object oriented programming and would probably draw the video game types.

  272. Not just games by Hierophant7 · · Score: 1

    In order to prompt him to program something other than games (and there's nothing wrong with that,) ban Windows from the house and suggest that he install Gentoo. Then he'll have all the source for all the software on his computer at his fingertips. It'd help him find things other than games, maybe he'd develop an interest in a particular area.

  273. My Father Was a Programmer by Anonymous Coward · · Score: 0

    I am in the final year of being nominally a teenager, but, since I seem to be on the younger side from what the comments show, perhaps I can share what happened in my life that made me become a CS major.

    I used computers since around the age of three, before I'd even heard of the Internet (and before I thought it == AOL!). My personal computer, a budding 486, ran MS-DOS, into which I knew to enter the command "mbm" to bring up a text-based graphical environment my father wrote. From there I would play Math Blaster, some spelling/grammar games, BusyTown, and FireRescue, and that was pretty much it.

    However, my father, whose terminal I could see from my seat, used UNIX. I knew this because I asked him why his screen was white and mine was black, and he told me. He loved UNIX, but he refused to push it on me. He let me obliviously use DOS, and then Windows 95, 98, 2000, XP, until I finally learned on my own that there was something better and switched completely to Fedora Core 6 in the middle of high school. Only then did he let me know that he had a bunch of Red Hat servers in the basement, and that he been using this great technology I was just discovering for many years.

    What confuses me about the OP's question is that my father, a computer programmer for many years, /never/ evangelized how great computers were. He /never/ taught me a programming language. Even when I asked him to, he refused. Instead, he would always tell me that if I really wanted something, I should go and learn it for myself. I didn't do that for a while; I wasted my time playing games, but all that just built up curiosity on my part. Eventually I asked my father for a copy of Visual Studio, and taught myself Visual Basic. I spent the entire Summer of my first year in high school coding, then I learned C, then PHP, then decided I couldn't deal with PHP's internal inconsistencies, then switched to Python.

    My father would never teach me programming, but he was always around to answer my questions, and to read my code. On a few occasions he gave me little projects, one which I remember very well: I basically invented Riemann Sums when I was young to solve an integration function he wanted me to write, before I knew what any of that meant. Everything he asked me to code had a purpose, though: it was always going to be used by him, and so I was really proud that he wanted my help. When I wrote garbage, he called me on it, and I learned how to improve.

    My school would never teach me programming, but I found like-minded friends and we competed for who could bring to life the coolest idea. For example, who created a signal strength map of the high school before SKYNET was cool? Right here.

    My point is, don't force anything down your kids' throats. If my father had ever tried to sit me down and teach me C syntax, I probably would have just gotten bored. Please remember that everything in life should be done for a purpose, and that it's the end, not the means, that drives everyone. Until programming actually fulfills some need that your child has, he's not going to waste time learning it. This need, of course, can be personal satisfaction as well :)

  274. You want to do what?? by Anonymous Coward · · Score: 0

    How cruel! Why would you want to do that?

    But... if you insist. Sell your house. Get some land w/ a cave, a deep dark cave. Move into the cave. Don't buy any lights for the cave!! Just a really big computer monitor. Then... promise him a big allowance if he studies hard. When he does... send his allowance to India. Oh... and absolutely forbid him from any social life. Maybe homeschool him.

    Keep doing this until it's all he knows and he'll just naturally fall into a programming career.

  275. Airwolf Episode by sesshomaru · · Score: 2, Interesting
    Well, how about this Episode of Airwolf?

    Moffett's Ghost

    Hey it worked on me when I was a kid!

    --
    "MIT betrayed all of its basic principles."
  276. Do as little as possible by Anonymous Coward · · Score: 0

    Remember that many of us are self-taught (at least to some extent). Answer his questions. Show him what's possible, but don't lecture. Let his interest guide you and support what he's doing rather than trying to direct the process.

    The stuff you're interested in (i.e., kernel hacking and the more advanced aspects of the shell) WILL bore him - at least until he needs to use them.

    And ignore everything that anybody here says about picking a language for him. Tell him that there are lots of languages out there. Some are good for building some types of programs and others are good for building others. Let him sort out which one he likes best.

  277. Games got me hooked by ninjacheeseburger · · Score: 1

    I am also a teen programmer who has only just started learning, with C. Although I am interested with computing and what a career programming what really got me hooked was games. Although it will be a while before I can write anything good, Ive written a few Pokemon style battle programs as they are easy and simple. I use a really informative book "Absolute beginners guide to C" which you can get on Amazon. Your a programmer yourself so it at least if h has any questions you should know the answer where I just had to keep trying until it works.

  278. you should let him decide... by hvulin · · Score: 1

    You should let him decide! Don't push him, let him come to you and ask... Maybe it will catch on, maybe not! If not, just accept that we are not all born to be hackers, programmers or whatever our parents wish...
    Just make sure you answer his questions regardless how simple they seem...

  279. Re:PHP will ruin your mind by dargaud · · Score: 1
    I already flamed someone for suggesting C++, and indeed I have ambivalent attitudes about PHP. It's easy to get started, it allows for efficient web pages (which may interest a kid so he can show his skills to friends "look at my cool webpage"), but I agree that it certainly corrupts the mind like Basic did.

    Having now read more messages in this thread, I think too few people are mentioning specialized description languages like PovRay or even game description languages. Probably a lot more fun than trying to do a fractal in basic nowadays...

    --
    Non-Linux Penguins ?
  280. if statement by Anonymous Coward · · Score: 0

    I remember I was 9 and a family friend wrote a very simple BASIC program for me that involved an if statement that was based on user input. I felt it deep for the first time that computers can make decisions. That was the turning moment for me.
    Since I was also interested in math, I had a moment of extreme excitement when I wrote a program to convert numbers in different bases.
    A mixture of math and programming worked very well with me, i.e., one fueling the other.

  281. Programming from the ground up by walshy007 · · Score: 1

    here

    let him learn assembly, just as I'm sure you probably would have, only this time he has these handy things called system calls for useful things :)

    programming from the ground up will help his knowledge of how computers work also, so when he codes in c, he can know what it's actually being compiled into.

  282. You want something practical and fun, probably by Anonymous Coward · · Score: 0

    Get a programming environment that shows satisfying results, whatever that might entail. Web platform maybe? I made many command line games with BASIC when I was first starting out in lonely lunchtimes at school (I never had a computer at home til the last year of high school but when I did I went from Pascal to C armed with a tonne of Apple GUI programming books, and wrote myself lots and lots of Mac programs. After a brief detour through university-level physics I eventually did a Comp Sci degree and was in the majority of snotty geeks who'd already learnt C by the time we came to study it.)

    Oh and don't put too many expectations on your son. Encourage him but if he's not wired the weird weird way that programmers are, he's not going to stick with it of his own free will, staying up all night just for the joy of making something WORK.

  283. Push him into it! by elrous0 · · Score: 4, Funny

    If you're going to pursue this dream for your son, I suggest the "stage mother" approach. Force him to program, drag him to computer conventions and force him to take computer classes, and when he starts to cry tell him you're going to put his dog to sleep if he doesn't perform. It may sound harsh, but if you're ever going to exploit and live vicariously through your kid. It's the time-tested way.

    Granted, to date, it's mostly been used for singers and actors. But there is no reason it couldn't work for other professions as well. Just be careful to dodge the whiskey bottles when he gets older.

    --
    SJW: Someone who has run out of real oppression, and has to fake it.
    1. Re:Push him into it! by 19thNervousBreakdown · · Score: 4, Funny

      I was going to suggest dressing him in unmatching polyester outfits and knocking his books out of his hands and telling him to "pick it up, faggot." Maybe find a pretty girl to laugh at this occasionally. In my experience, this is almost certain to drive someone to program.

      Maybe combining the two would create the perfect uber-coder.

      --
      <xml><I><am><so><damn>Web 2.0</damn></so></am></I></xml>
    2. Re:Push him into it! by Anonymous Coward · · Score: 0

      as a teen, I indefinitely know that that isn't how to get a kid to cooperate. the more you to that, even thought it may the 'the time-tested way', the kid'll most likely fall into a niche and shut you out, however persistent you are.
      If s/he actually wants to learn, then they'll not complain about you dragging them to computer classes, etc. But if they're not interested, then don't bother. Sometimes it's just a flyby interest.

  284. Tools for learning by Anonymous Coward · · Score: 0

    Alice
    http://www.alice.org/

    Turings Craft
    http://www.turingscraft.com/

    These are both great tools for beginners. They are set up in such a way that each discovery or lesson the programmer learns it encourages them to dive deeper.

  285. The resources are already out there for teaching by east+coast · · Score: 1

    The teaching resources are already out there. Maybe a bit heavy for a kid learning the ropes but he doesn't have to cram a course into 15 or so weeks.

    My concern would be that if I just let him do a project that he wants to do he may not learn the overall picture. Maybe I'm wrong but I'd sooner have a rounded understanding of what's all there. I recall as a n00b with a fantastic Vic 20 that I just did what I wanted to do without following that fine manual page for page and while I learned a lot I also missed a lot. it wasn't until I got a C=64 and some intermediate programing guides that I found that some of the stuff I was doing was doing it the hard way.

    But I didn't have anyone who knew how to code to help lead the way either. I was really in the dark with a candle, trying to find my way around.

    --
    Dedicated Cthulhu Cultist since 4523 BC.
  286. book on programming aimed at teens by ncmathsadist · · Score: 1

    I am working on a book based on the programming curriculum at the North Carolina School of Science and Mathematics. It addresses programming from the LINUX viewpoint using Python then DrJava. The intended audience is a bright, creative person (especially a teen) who wants to learn how to program.

  287. PC Demoscene by Anonymous Coward · · Score: 0

    Show him PC demos. The art, the music, and the code behind it will inspire anybody. Give these a shot:

    Second Reality by Future Crew
    Panic by Future Crew
    The Good, The Bad, The Ugly by Surprise! Productions
    Crystal Dreams II by Triton

    There are tons of videos of demos for the PC, Amiga, C64 on YouTube and from pouet.net if you can't actually run some of these older ones.

  288. Give hime something tangible... by novalis112 · · Score: 1

    Set up a simple OpenGL/OSG/Direct3D/etc. framework for him and show him a few quick ways to modify it. If he's at all interested in programming, he'll figure the rest out on his own. The key thing is that he needs something that shows him the "fruits of his labors" quickly and easily. I started with Logo myself, but I think that current 3d APIs have become sufficiently sophisticated that the basics can be done with relatively little knowledge of programming or 3D graphics in general.

  289. Games with SDKs by Anonymous Coward · · Score: 0

    Find 4 or 5 games that have SDKs readily available. Figure out which game he likes, let him play awhile, then show him the SDK. An old Neverwinter Nights game is what got my son interested. The game was only semi-interesting, but once he realized he could manipulate the game and create something different, he was hooked. He wanted more power and control over his environments, so he moved on to more powerful languages which gave him what he wanted. Presenting a curious mind with many interesting (to him, not you) problems to solve is the best way to encourage learning. Starting them out with a simple toolset (the SDK) and letting them work their way down seems to work extremely well. The best part is, they will naturally work their way down when they are ready, and they learn that all the various levels have their uses. Assembly, C, C++, and PERL are all just tools and all have appropriate and inappropriate uses.

  290. Scratch by Innova · · Score: 1

    I'm surprised no one has mentioned Scratch yet. It gives quick results and teaches the basics of program flow.

  291. Why would you want to? by cjonslashdot · · Score: 1

    Programming's days are numbered. Do you really think people are going to be hacking away at procedural code in 20 years? I don't. I have my thoughts about the direction things will take, as do others. But I am sure that we will rise out of this procedural "programming" rut.

    1. Re:Why would you want to? by ledow · · Score: 1

      I've yet to see a computer program itself. In fact, I've yet to see a computer do anything more than *exactly what it's told* by the programmer/operator. And it does things perfectly in the order you give it. From a limited set of instructions. Mmm. Damn, that sounds like procedural programming is still necessary to me.

      However, we are quite likely to move onto more "unusual" languages, such as massively parallel ones for a start (which are still procedural, but just procedural across many "computers" simultaneously). Ignore the paradigms like OO etc. because they are just pretty ways to do procedural programming in shorthand. That's the human element, not any massive "change" in computing. The underlying code is and always will be procedural. Therefore, even if it's only the GCC team, someone will be hacking procedural code.

      "Do you really think people are going to be hacking away at procedural code in 20 years?" Yes. People said this 20 years ago and it's still true. In fact, people were saying this nearly 30 years ago and it's still true. Possibly even 40.

      The fact is that, without a massive change in the way computers work, procedural code is here to stay. When we get onto computers that don't operate on the basis of performing sets of a single operations one after the other, then procedural programming will die. This is basically the "quantum" era, although I suspect something else may well appear before we have that practically available to the masses. We are probably a lot more than 20 years away from quantum computing. Twenty years ago computing was identical is all but scale. In fact, the last "big change" was from hard-coded to "programmable" computers and that was DECADES ago.

      Even then, the world's software will mostly work the same way - you still have to wait for the user before you can do anything etc. and so ordinary procedural code isn't going to go anywhere even then. What'll happen is that you'll have two different types of computer in one... an "ordinary" one to allow the user to talk to the "weird" one so it can get its answer straight away, or transmit that information securely. The fact is that you've got to change a significant proportion of the userbase, developer base and equipment away before procedural code dies entirely. In a world now entirely dependent on things to carry on working as they are. 20 years ain't enough time for that. In twenty years the basic home PC still hasn't changed its core instruction set, let alone the way it's programmed or works.

    2. Re:Why would you want to? by Talonius · · Score: 1

      Seriously?

      I don't see anyone attempting to move away from procedural programming. I see tons and tons of new languages aimed at new methods of expressing the same ideas and concepts.

      Considering COBOL still has a huge developer base in our world, do you SERIOUSLY think corporations are going to let their existing code base go simply to chase some new paradigm?

      --
      My reality check bounced.
    3. Re:Why would you want to? by cjonslashdot · · Score: 1

      Hi. Thanks for your thoughtful response. However, I must respectfully disagree with you. I feel that procedural programming is not here to stay. I have programmed compilers that took functions as input and generated highly concurrent procedural code (microcode). The input was not procedural; the output was. There is no reason why humans must define procedures. Humans can define programs in non-procedural ways, and the benefit is that there are non-procedural programming paradigms that lend themselves to expressing more of the intention of the human rather than a particular procedure. Procedural programming leads to errors in parallel processing, it is fundamentally insecure, and a procedure defines an implementation rather than an intention. It is fundamentally flawed in so many ways. And there are alternatives. I believe that we would be better off with a combination of functional languages to express behavior, and structural design languages to express structure for defining security boundaries, data conduits, and trust models.

      Also, please note that the fundamental architecture of computers is in fact about to change. Massively parallel systems are just the beginning. We are headed toward machines that do not have pre-defined instruction sets, and in which applications choose the hardware architecture that is most appropriate for the application, dynamically. This is not too far away, and is enabled by new classes of electronics that have been developed. The compilers for these systems will not need to be procedural at all (even on the output side) because the underlying substrate will not have a fixed instruction set: it can be a data flow machine or whatever is appropriate for each application, and can be changed at memory access speed. This technology has been written about in many credible sources. You have made some good points about "we have heard that before" and it is true. But we must not become complacent just because little has changed: a time will come again when a sea change in computing will occur.

    4. Re:Why would you want to? by cjonslashdot · · Score: 1

      Hi. You should look at functional languages, such as Haskel (which is fairly new).

      Yes, I do seriously think corporations will chase a new paradigm. It is a matter of CIOs being concerned with constant technology churn and getting poor productivity out of IT in spite of all the "new" languages and tools. (Ruby is new - NOT. Ruby introduces new concepts - NOT. XML is a step forward - NOT - and introduces new concepts - NOT.) My job is to consult to CIOs, so I know what they think. IT leadership is starting to look more closely at HOW things are developed and not leave it to the whims of programmers as they have in the past. Programmers are going to have to get more serious about things that matter to the corporation, such as assurance, maintainability, and transparency into why particular solutions are chosen over others.

  292. Don't teach him anything by Anonymous Coward · · Score: 0

    Don't teach him anything. Really.

    If he's worthy hacker material, he'll figure shit out. I know I did, and I didn't even have the benefit of the intarweb tubes.

    If I had a dad telling me what to do back when I was 12-13, I wouldn't have experienced the thrill of figuring out shit by myself and prolly would've lost interest.

    1. Re:Don't teach him anything by Anonymous Coward · · Score: 0

      I had a friend whose father wanted him to become a programmer. He made my friend sit and read programming manuals and try things out, and he had to spend so and so much time every day on this. He hated it with a passion and couldn't accomplish anything. Meanwhile, his brother became interested in computers and started to experiment with programming whenever the computer was available. He did some fun and creative things, and loved showing it off, but his father didn't seem to encourage him much, and would often expel him from the computer when he wanted to use it.

      Today, many years later, my friend is working nowhere near computers, while his brother is enjoying a well-paying programming job after getting his computer science major. I think you're right.

  293. Vintage computer by Creedo · · Score: 1

    A lot of people mentioned how they started off learning to program on old 8-bit machines. Why not just go to eBay and grab one of those? I have several Ti 99-4A computers, a Commodore and a couple of Tandys, with the odd Timex thrown in. My kids picked up the instruction manuals and started hacking. They are 7 and 8, by the way. Once I showed them sprites on the TI, they were off and running.

    --
    All that is necessary for the triumph of good is that evil men do nothing.
    1. Re:Vintage computer by Talonius · · Score: 1

      I think this would depend on the kid. As well, learning how to work a C= 64 simply taught me a lot of lessons I had to unlearn later. ;)

      --
      My reality check bounced.
  294. Anonymous Coward by Anonymous Coward · · Score: 0

    Hackety Hack, is a Ruby- and Mozilla- based environment used to teach programming.

    "A seven lesson tutorial guides the newcomer through the basics, which involve simple activities like asking for a name and printing it out, and more complex ones like writing your own blogging engine and downloading files from the internet."

    A teenager might warm up to that.

  295. Just start them with the basics by JoeCommodore · · Score: 1

    If the kid is interested they will start learning more.

    The best thing you can do is help them get set up in whatever language: Show them how to get the editor running, write a simple program compile (or whatever) and show them how to run it. Hand them an introductory guide (one with some type-in examples would be a good start) and let them go at it for a while. Answer questions but also keep it simple till they get the hang of it.

    If they get into it you will see the complexity level of questions jump (usually they thought of something that they want to write themselves), then you can work on getting better ideas and practices in their head.

    --
    "Enjoy what you're doing! If it becomes drudgery, you're doing it wrong!" - Jim Butterfield
  296. Back off and jsut guide the kid by Anonymous Coward · · Score: 0

    I just graduated with a computer science degree and know that the best language to start with is not easy to find. There (as seen above) a million different opinions about this and so far no correct answer.

    My suggestion is keep doing what you have been, just back off a bit and let him find his own niche. Guide him, talk to him, please explain to him that the outdoors and friends are important too! Natural light is a good thing and socializing will increase his chances of meeting someone to spend his life with without a last name of *NIX.

    Ok back to programming. You have already done the correct steps because he is interested. Talk to him, encourage him to learn all platforms because knowing Microsoft and Apple will make him 10x more $$ out of college. Being well rounded will come with time, you have already sparked his interest, good job!

  297. Arduino by Anonymous Coward · · Score: 0

    Wow, I am scrolling through all these PHP, Python, C++, blah blah blah posts, thinking, how did I get into computers? Right, eight bits!

    Buy an Arduino, or a Boarduino. Buy a cheap Atmel compatible USB programmer. There are lots of great tools out there to get you doing very simple stuff very quickly.

    For a teenager, blinky lights are just one step away from POV imaging. Add a cheap accelerometer and you have controlled POV. Add a magnetic sensor and attach it to the wheels of his bike and when he (or she, dammit!) rides at night their wheels will make pictures!

    Python! Bah, I laugh at your silly snake.

  298. My experiences... by Anonymous Coward · · Score: 0

    Hi there, I just graduated from high school this spring, and am going to college (a good one, don't worry) this fall as a computer science major.

    I got into programming because it looked cool and interesting. I took a basic 3-week class in Java one summer, realized what I was getting myself into, and thought that the logic part was actually pretty neat. In addition to that course, by now, I've taken my school's only programming class (AP AB Comp Sci... Java) and have done two independent studies, one in Algorithms (SO DRY OH JESUS) and one in Game Programming, which was a lot of JOGL, ray casting, etc., which was pretty fun.

    What I want you to take away from this, though, is that the whole thing was very much of a self-motivated exploration, which had absolutely nothing to do with my parents, whether they loved it or hated it. They could care less.

    You have to leave your kid alone, and let him do the things that he wants. He HAS to take programming classes in high school if he wants to do it in college, and he WILL if he wants to do it ever. If he doesn't take a class, the apple fell too far from the tree. If he does, he'll probably get pretty interested, and then he'll start coming to you with questions and advice on his own explorations. Pretty soon, he'll know all this extra linux crap, and be the cool kid in school (well, at least, as far as us nerds are concerned), and all will be jolly well and fun.

    But, the worst thing you can do is try to force knowledge down his throat :)

    I hope all goes well

  299. How about robotics? by OG · · Score: 1

    As others have noted, finding a problem that he's interested in solving is pretty key. If he's interested in games, help him find a gaming project. Something else I'd consider, however, is some kind of basic robotics project. Get him a kit that he can hook up to his computer and use a BASIC-style language to control. It sounds like he's already inclined towards "geek" projects, and this gets him both some software and hardware experience in one go, and he can see three-dimensional results of his programming.

  300. Introduce him to topcoder by Binder · · Score: 1

    Especially if he's competitive topcoder may appeal to him.
    It has alot of practice problems which are hard enough he would need to learn something, and he'll have a score as some feedback.

  301. meow by Anonymous Coward · · Score: 0

    i would find something that he likes, whether it be a game or something and encourage him to build something for it. for example: any online multiplayer game, try to find ways to manipulate data being sent to the sever etc. then build a client or something ( like a trainer, most "lower end" games are easy to manipulate ). this teaches alot of things at once while peaking an interest into the 'backend' of things. some people might say that's rather advanced but, would you rather risk the complexity of the challenge with something that they like or start with something they have no interest in.

    Quote SimHacker "PHP is a HORRIBLE first language" -> how? if you're learning the fundamentals: while loops, variables, if-then-else and the basic logic for functions, any language is good even, dare i say mIRC scripting.

    there's plenty of routes you could go, if you son has an online clan ( i don't believe his age was specified ), i would defiantly try to teach him php for his clans website or something. i mean, nothing is more rewarding to a kid then to have something to show for what they've done.

    as a programmer for 10years with a son on the way, i would try to do any/everything to build my son's confidence in himself and believe it or not, this is a very good way.

    you have to find something that he's interested in. you can go over a million c++ tutorials but, if they don't have a set scope for something that they are interested, there's nothing to inspire them to continue.

    - sean ( threeZ )

  302. What worked for me... by yup2000 · · Score: 1

    I had a TI-89 graphing calculator and tigcc ( tigcc.ticalc.org ). It's a great way to learn C. You can crash your calculator all day long at school (which is great debugging practice, it also provides motivation to go home and fix said bugs at night).

    Lots of kids do games, or teach their calculator how to be a little better at math ;) Of course, I'd encourage making simple games, and maybe working up to a 3D rpg :)

  303. immediate gratification by bazonic · · Score: 1

    It seems to me that the youth of our (US) society respond best to that which is instant. Instead of having him spend two hours trying to compile something that will return Hello world!, start him out with web languages, where he will be able to see the results, and modifications immediately. By learning some interface coding (HTML, JavaScript, PHP, etc) he will open doors that could lead to a number of places.
     
    He may become fascinated with web infrastructure, or databases, or routing, or security, or more complex programming. Working the web would also allow him to persue other passions - for expamle, installing and configuring an OSS CMS, then tweaking the interface for a local skateboard park or chess club or whatever. Social networking web tools might be a fun place for a kid to start hacking.
     
    The key is to keep it simple and instantly rewarding in the beginning. And what will give a kid more cred with his buddies - building an app that figures out phone charges across time zones (exercise 2, after Hello world! in my 101 class) in C++ or really pimping out his MySpace page? Had I started with C++ I would not have gone much further. But that's me. Some of y'all are crazy that way.

  304. Try with Hackerteen project by linuzer · · Score: 1

    Have a look to hackerteen project: http://www.hackerteen.com/ What's hackerteen Project: "Hackerteen is an educational project that trains teenagers to work with computer security. With an innovative and fun methodology, young people learn how to protect companies - not to break into them - while reducing time spent on computer games, MSN and MySpace."

  305. what's on teens minds by doti · · Score: 1

    I'd also be especially interested in what younger people think, in particular those who are currently in college or high school.

    Sex.
    They think about sex all the time.

    --
    factor 966971: 966971
  306. I suggest QT by Anonymous Coward · · Score: 0

    How about writing a little graphical application with QT designer, that way you are cross platform and up & running in no time.

  307. Gaming Languages by Anonymous Coward · · Score: 0

    NWScript as part of NWN1/2 is a very compelling structured "language" that teaches good technique while allowing for instantly gratifying results. (good for teenagers!)

    The Orange Box (from Valve) includes the Source SDK that's free and allows for a tremendously powerful FPS development environment that again, can produce instantly gratifying results with a huge online community of support.

    The basic concept here is that you can show someone a game (NeverWinter Nights, Team Fortress 2) and then show them HOW they can produce such a thing themselves using the same tools the developers use.

    If I were a teenager again, these would definitely grab my attention for longer than 30 seconds.

  308. Instant Gratification by Hassman · · Score: 1

    As lame (or awesome) as this sounds, get him to do some basic web programming. I know it is mostly just markup stuff, but to do anything complicated or cool, you have to get into the code behind or JavaScript or whatever.

    The benefit is, that you instantly see what you just wrote. Sure it may be basic and not really do anything, but it is there on the screen and he can say, "I did that". After the initial learning curve, it is pretty easy to be able to churn out a blog, or a calendar / datebook, or photo repository. A simple program like that will introduce him to the basics of what programming is all about.

    Hell, it beats copying 1000 lines from a BASIC book to create a text based game. Ahh, memories.

    If he likes that stuff, it won't be a large leap to get into some of the more difficult languages like C++ or C# or Java or whatever. That's when the real fun can begin.

    --
    -Mark
    Dovie'andi se tovya sagain.
  309. Re by threeZ · · Score: 1

    i would find something that he likes, whether it be a game or something and encourage him to build something for it. for example: any online multiplayer game, try to find ways to manipulate data being sent to the sever etc. then build a client or something ( like a trainer, most "lower end" games are easy to manipulate ). this teaches alot of things at once while peaking an interest into the 'backend' of things. some people might say that's rather advanced but, would you rather risk the complexity of the challenge with something that they like or start with something they have no interest in. Quote SimHacker "PHP is a HORRIBLE first language" -> how? if you're learning the fundamentals: while loops, variables, if-then-else and the basic logic for functions, any language is good even, dare i say mIRC scripting. there's plenty of routes you could go, if you son has an online clan ( i don't believe his age was specified ), i would defiantly try to teach him php for his clans website or something. i mean, nothing is more rewarding to a kid then to have something to show for what they've done. as a programmer for 10years with a son on the way, i would try to do any/everything to build my son's confidence in himself and believe it or not, this is a very good way. you have to find something that he's interested in. you can go over a million c++ tutorials but, if they don't have a set scope for something that they are interested, there's nothing to inspire them to continue. - sean ( threeZ )

  310. Python later, Pascal first by V+for+Vendetta · · Score: 1

    Pascal was intended to be a learning language and I consider it to be quite good at it. It enforces good programming practice while at the same time it "spells out" things, which makes it easier for kids to understand. For example BEGIN/END brackets are easier to grok for kids than {}, showing the principal of code blocks better.

    1. Re:Python later, Pascal first by wed128 · · Score: 1

      I don't really know Python, but as far as pascal is concerned, as a C programmer (who learned on BASIC and dabbles in PERL) i find pascal to be too structured and make too many presumptions. for instance, there is too much type-incompatibility, and not enough of the language is transparent as far as what is actually happening in the computer itself.

      If the kid wants to learn how a computer works, i suggest even an assembler and a small embedded development kit (HC12 or similar). (full disclosure: i do embedded development professionally). if they want to learn algorithm design or mathematics, then these high level structured languages are fine.

      if i could do it all over, i would have probably started on PERL, because one can use exactly as much structure as you know how, but are not forced to learn things like Objects before achieving a basic understanding of procedural processing.

  311. Games! by tstripli · · Score: 1

    Give him a game that's written in an easy scripting language and let him play it for a while. Then show him how to modify code in the game to cheat. Hey, it's how I started...

  312. Make sure he obtains... by Talonius · · Score: 1

    ...near instant gratification for the first steps that he takes. Whether that means console programming, or working within another prebuilt environment - few folks at that age want to invest weeks and weeks of time without seeing an immediate (or near immediate) payoff.

    Once he's hooked - on the control, on the ability to do whatever HE can do - let him take on the more advanced stuff that requires an investment of time or resources.

    Finally, make sure the tools he uses and the environment he's working with are *preconfigured* for what he wants to do. Don't make him figure out what patches need to be applied, or what directories need to be in his path - make sure, again, that it's easy for him to begin.

    (I guess my advice is to treat it like a drug. Make it REAL easy to get hooked, then make him work. ;))

    --
    My reality check bounced.
  313. Head First C# (may be a just a touch mature) by Anonymous Coward · · Score: 0

    I have a fourteen year old son, and I can not get him to put down Head First C#. It may be a little old for a younger kid. It is the only book that I have seen that guides you through so much hands-on programming and problem solving, which in my humble opinion is the only way to learn how to write code. He wants to learn video game programming, and I think the promise of writing real video games (here and here) is keeping him going. Which is surprising, because he is quite the ADHD kid most of the time.

  314. Simple by grikdog · · Score: 1

    Recapitulate phylogeny and do for programming what the Rennaissance did for medicine: Institutionalize open source for anyone who can afford the education, drive the charlatans (including Microsoft certification) beyond the pale, and stop wearing funny bird masks in times of pestilence, plague and peril. Train a generation of mothers that "My son, the programmer" means something good.

    --
    ``Tension, apprehension & dissension have begun!'' - Duffy Wyg&, in Alfred Bester's _The Demolished Man_
  315. This is how my son at 12 started by Anonymous Coward · · Score: 0

    We picked up NeverWinter nights. Its all written in C++ and comes with scripting tools and editor so you can produce your own content.

    From here he started with basic scripting tools and self taught himself almost all of C++ using the game as a backround. Now at the age of 16 he and I have taken c++, perl, and visual basic classes and he just picks up on the concepts of each very quickly.

    His suggestion to me was to install and program for NWN so that I could get the basics down, because I suck at programming.

  316. Graphics and sound (demoscene) by Anonymous Coward · · Score: 0

    Learning the first programming language
    will take quite much effort especially when you are still teenager with limited understanding of mathematical/engineering concepts. Therefore the first language should be easy and there should be fast positive feedback which motivates to learn more.

    Suggestions:

    Teach him to program some graphics effects, this way he can get instant visual feedback and see how changes to code affects to results. There are plenty of tutorials for coding traditional demoscene (www.scene.org) effects.

    I started with Turbo Pascal and C++ when I was ~ 10 years old but for total beginner I would suggest learning Adobe Flash or creating Winamp visualizations (some plugins are scriptable).

    Another suggestion would be to try to create chatterbot. There are simply mark up languages (like AIML) which can used to 'program' chatterbots.

    Creating something from scratch isn't that easy either so at the beginning there should be working version which can be changed to see what effects it have on the results.

  317. Give your teen so crappy computer... by Anonymous Coward · · Score: 0

    ..., which runs only some programming language and tetris (in text-mode of course). He will have no choice but to learn programming. ... or grow out of computers and become non-nerd.

    It's a win-win

  318. Start with something that is fun like this by dman32 · · Score: 1

    How I got into programming was probably the easiest and best way for a kid to do it. It started off with my favorite PC game called Duke Nukem 3D and there was a simple map editor. Although it resembled more among the lines of autocad; there were still objects with parameters that you set but it was all relatively simple and object oriented with minor event driven programming. It definitely would be a great start because it would allow him to start in an area where he enjoys it the most; and its not strictly text base coding like most people are suggesting; Kids won't want to do that. However, finding something similar to that now a days may also be a little more difficult; I'm sure if you look around you can find something similar. Have him start creating his own games or maps that he can play in (also try maybe making a flash based game with him) those are easy and won't take long. See if further down the line his school has a technology preparation course or special computer courses that he could attend if he feels he likes it. And keep in mind he's a kid and keep it fun!

  319. DO NOT TEACH HIM CODE! by odin84gk · · Score: 1
    When I was 11, I started becoming curious about computers. My brother gave me an HTML book, and 2 days later I swore I would never become a computer programmer. EVER. A web page would be cool, but I did not have direction or a desire for a final project. It was like a book report on... html... not that interesting. (I know HTML is not the same as C++ or Ruby, but in my young mind it was)

    What started perking my interest was creating a video game mod (Specifically Battlefield Vietnam). At first it was just maps, then I wanted to insert bots, then... My interest kept growing. If it wasn't for that first HTML book I might have gotten into some of the more advanced mods, but I swore that I would never go farther than changing .config files. When I got to college and I was forced to take a programming course, I really enjoyed it. In the end I graduated with a degree in Computer Engineering (Couldn't go full software, too boring :-). If it wasn't for BF:V, I probably would have been a music major (not a joke, I was seriously considering it).

    If he wants to do something specific on the computer ("Hey dad, I want to make my own video game" or "Hey dad, do you know how to make the PC run faster?") then you can do some code. Learning code for the sole purpose of learning how to program is useless and counterproductive at this stage in life.

    The moral of the story is this: Find an end result that He wants to do. It might be as simple as Forge on Halo 3, his own OS, or even a go-kart, but it has to be his idea.

  320. is he a music fan too? by frission · · Score: 1

    if he enjoys music as well, you can do a small project (that I've been meaning to do, but never have). you make make a plug-in visualizer for your favorite music/mp3 player. from what I've seen, they can range from very simple, to very complex (open gl, etc).

  321. not to do with a thing really... by Anonymous Coward · · Score: 0

    - Moving pairs

    Given something like a checkers board, moving pairs would be checkers
    paired together and arranged on the board

    Given something like a checkers board, moving pairs are checker pieces
    said to be paired.
    The pairs don't have to be next to eachother.

    Any way arranged is fair for how this works, but it matters for how they work.

    There's no such thing as an empty space.

    They are the idea of how they move, and the problem with finding how
    to move them.

    - Moving a pair

    Pick a pair to move.

    Each of the pair is to move together at the same time.

    A pair can only move to another pair.

    A pair moves to another pair, and each of the pair becomes paired with
    each of the other pair. So now both pairs are new pairs, with the
    pair that moved to another pair not being a pair anymore, both of the
    pair to move
    becomes a new pair with the pair that has to move for where they move to.

    A pair moves to another pair, but the other pair is what moves away at
    the same time.

    A pair moves to another pair, the pair it moves to has to move at the
    same time to another pair. So when moving a pair to another pair, that
    pair has to move too.

    So the pair to move to another pair becomes a new pair, each of the
    pair to move to another pair
    becomes part of a new pair with the pair that they move to. The pair
    they move to is the pair to move
    to yet another pair at the same time.

    You can't know what any pair's first move is until you know it's last move.

    There's nowhere to think in the way moving pairs can move how it has
    any inbetween to stop moving. It's always that a pair moving is making
    another pair move, and is having a pair move it.

    For any pair there's always one way to move it.

    To think of pairs in the middle of moving is to think of needing to
    know the end and beginning at the same time. Because the pair is
    moving when a pair moved it, and is moving another pair where it's going.

    When a pair moves it's what is moving away from what had to move it,
    and is moving what needs to move at the same time for where it's going.

    Each time a pair is moved, all the pairs involved in moving are
    alternated as pairs.

    You can't know how a pair moves, it's to figure out as the problem
    they have. The last pair to move has to be discovered before the first
    pair to move has a place to move.

    The answer to how to make a pair move is to find how to move the pair,
    that goes to another pair and becomes a new pair, and carries on until
    a pair goes back where the first pair left. That's to know the place
    a pair can move.

    All the pairs have a way to move, but may involve more or less of the
    other pairs to move at the same time.

    So a pair can be moved, but it's to figure out how to make it move.

    So thinking of how a pair moves is to think that a pair is where it's
    at to start, then the pair moves to another pair, the other pair moves
    to another pair and now the first pair to move is not a pair together
    anymore but now each is a pair with each of the other pair where they
    moved to, and at the same time
    the last pair to move is where the first pair left, and that the last
    pair moved to the beginning had a pair move it where it can move to
    the beginning and is now where the first pair moved from had another
    pair move where it left but each is it's own pair. So when a pair
    moves it's for there to not be a pair where they move from anymore,
    but each of a pair.

    So a pair moves, it moves to another pair, that pair moves to another
    pair, and a pair moves to where the first pair was. Each time a pair
    moves, each of the pair becomes a new pair
    with the pair it moves to, and that pair goes somewhere else.

    So for a moving pair the idea is to just find how it can move, it's
    for the way it can move to be figured out by how it can leave to
    another pair, to make that pair move, more pairs move
    to ma

  322. Re:PHP will ruin your mind by tal_mud · · Score: 1

    PHP is a HORRIBLE first language, and a horrible second, third or forth language.

    Even Forth is a horrible forth language

  323. Processing by cdkf92 · · Score: 1

    I would recommend processing: http://www.processing.org/ It's been described as "Java with training wheels" but I think its strength is that it demonstrates programming concepts in a visual way. A person can have a nifty animation up and running in no time. It's a very short hop from Processing to Java. I would also recommend ActionScript. It's finicky but it will give a newbie cool results quickly, and then they're hooked.

  324. Carrot and Stick Approach by Ranger · · Score: 1

    For every X lines of code he gets to watch Y minutes of porn. Be sure he has lots of pizza, Mountain Dew and kleenex.

    --
    "You'll get nothing, and you'll like it!"
  325. The Lure of Programming by thervey · · Score: 1

    Initially it was the idea of programming games that caught my eye back when I was in middle school/high school in the mid-late 90s. I started off making simple games in Basic which provided a great environment to learn the basic. I later graduated to C++ when programming became more of a fun puzzle/problem solving activity than just a means to create games. There are now several pseudo programming languages out there that are specifically geared towards learning programming concepts and creating games. Depending on the age of the child these may be appropriate or they may be too simple.

  326. 3d graphics and/or robotics by isdale · · Score: 1

    Most languages dont give much back quickly. You need something that will catch and hold their attention. 3D graphics and Robotics are cool to kids (and many of us geeks) and actually not that hard to break into. In fact both are used very effectively to introduce middle school and older students to programming - even high level stuff like AI (or autonomous behaviors). And the links below are Open Source!

    Check out Alice.org

    "Alice is an innovative 3D programming environment that makes it easy to create an animation for telling a story, playing an interactive game, or a video to share on the web. Alice is a teaching tool for introductory computing. It uses 3D graphics and a drag-and-drop interface to facilitate a more engaging, less frustrating first programming experience."

    Or how about Robotics?
    Myro and Institute for Robotics Education
    or its pure python predecessor Pyro Robotics

  327. Logo by xtracto · · Score: 1

    I haven't read anyone state the obvious... at least for me.

    My first contact with a computer was, fortunately, my first contact with a programming language. That is, LOGO.

    I would strongly suggest you give a look at Starlogo TNG.

    StarLogo TNG is real graphical programming in that you create programs by stacking boxes together (each box representing a different instruction like, if, then, while, etc). And the result is a 3D Turtle (yup, our beloved Logo turtle) moving in a 3D environment, which can also be modified.

    Regards.

    --
    Ubuntu is an African word meaning 'I can't configure Debian'
  328. It's never too early by technienerd · · Score: 1

    I'm 22 years old now, entering grad school in computer science and I knew I was in love with computers since I was 8 years old. I started programming at age 7 or 8, in BASIC. My mom picked up a BASIC manual, learned the language herself and taught me what she learned (out of family rivalry really because at the time I was the only kid in the family who wasn't a self-proclaimed computer expert). Since then I've been enthralled with computers and algorithms and I'm doing very well in school as a result. About a dozen people in my class also started programming well before the age 10 as well, so it's a relatively common thing. If you can do basic arithmetic and reason about complex or abstract things at that age, you can program to some degree.

  329. C Programming by Anonymous Coward · · Score: 0

    Teach him C. Teach him a manly language. Show him how awesome low level programming is, like kernel hacking, or osdev.

  330. You might try MIT's Scratch by willutah · · Score: 1

    Since you said he is a young teenager, you might try the MIT Media Lab's Scratch project: http://scratch.mit.edu/

  331. Calculator! by Anonymous Coward · · Score: 0

    I first got into programming with the TI-83+ calculator (with included manual).

        It's much less complicated than other computer-based languages and its TI-BASIC language isn't OO so it's pretty straightforward.

        Heh, but that was maybe 7 years or so ago...so who knows?

  332. Robotbattle! by jadin · · Score: 1

    Might I suggest http://www.robotbattle.com/ or similar type game? You use the scripting language (very similar to C? I don't remember) in your text editor of choice to program robots to kill each other with energy missiles. It's a lot of fun and can be really addicting. It can help develop a solid interest in programming. Making your first robot and then starting up the game to watch it get slaughtered and not act as you planned is pretty interesting.

    I bet a lot of slashdotters would enjoy it actually.

  333. As a teacher, I recommend finding the hook. by databoi · · Score: 1

    I taught programming at a design school for seven years, and I tried to turn web designers into web developers, as the pay and opportunities were better. The comments that suggested finding something that the young one wants to do really are on the right track. Game programming with Flash and cool web pages with PHP/MySQL will be the easiest way to get that going. But most of all, as a parent I say enjoy the time with your child, they are so precious. Until they stop being that, of course.

  334. Sorry To Hear That!-(( by littlewink · · Score: 1
    He'll probably end up a poor code monkey all his life.

    Maybe it's time to introduce him to alcohol and social drinking?

  335. I wasn't exactly encouraged... by chrysrobyn · · Score: 1

    I think you should encourage him the same way my dad encouraged me. He left plenty of Basic books around and left me alone with the thing.

    Eventually, when I was about to become an Eagle Scout, in 1991 or so, my father told me he wanted to get me a really special gift, but didn't know what to get me. I told him I wanted something more adult than Basic; was "Fortran good for making graphics?" My father did something that was incredible at the time; we didn't have much money, but we did have a 10 year old IBM PC. He bought me Borland C++. It had a compiler, profiler, debugger, an integrated IDE, all the bells and whistles. Only I wanted to use the compiler and nothing else. I learned an incredible amount from just following the book examples. My mother laughed every time she saw me in front of the television just reading the book that had the listing of the available commands. It felt like I was reading a catalog with someone else's credit card.

    Give the boy the means and the time. Provide a few trips to the local used book store for some examples to just type in and make minor variations. In my experience, that's the best recipe to success for continued interest. Any more involvement and you'll end up with a football player or cheerleader.

    The big thing that I know nothing about current GNU compilers, which is the only thing I'd expect a kernel hacker to provide, is that I don't know about graphics libraries. Motif, GTK and the like are far too much. Just something to draw a pixel or a line is what a growing boy needs.

  336. Baby Steps by Anonymous Coward · · Score: 0

    First thing i learned to program was my calculator. I'm a junior in high school and C++, Flash Action Script, and java have become part of my vocabulary. Like most it was just seeing my Dad do it and wanting to emulate. there is a lot of really cool online classes that for a minimal fee, provide tons of tutorials and videos. great stuff. Just dont push it too hard. It isnt difficult to get frustrated and give up on something as tedious as programming.

  337. Interactive Fiction and book suggestions by Gulthek · · Score: 1

    How about writing Interactive Fiction? Download Inform and he can go through the manual coding alongside it. It's not a traditional programming language, but the concepts are there and easily accessible. Graham's writing really shines in the manual and he explains a lot of complex programming very nicely.

    If your kid isn't so much into the writing (or the text only, which is understandable) then I'd start him off with Learn to Program.

    Although your kid is probably too old for many of the exercises and activities, but Computer Science Unplugged is a fantastic resource.

  338. The pragmatic way... by Anonymous Coward · · Score: 0

    http://pragprog.com/titles/fr_ltp/learn-to-program

  339. A website by Anonymous Coward · · Score: 0

    A good way to get results relatively fast is to create some website about a hobby he already has.

    Start with some POSIX that has Apache and make him read documentation to install it himself. Help him whenever needed, and do not force him to optimize everything perfectly right away. Its just too boring if you really do not grasp the why to optimize. Now comes the important part..

    Try to make him have ideas that require writing of a custom apache module in C or some other language. It is not that difficult, really. Show HTML, PHP and even JavaScript. Show him some good old cgi-bin just to give him a chance for perl and python as well. You are going to need to give a lot of choices so that he can learn languages that enterntain him the most.

    Maybe he manages to create an exceptional site that others use as well. This requires understanding user experience, logical and useful GUI and a lot of thinking about needs of his audience ("customer"). Sooner or later he does have to learn how to optimize apache, in which case he soon discovers that his code must also be optimized at some point.

  340. Kids need multimedia by synthespian · · Score: 1

    Today's kids need and deserve the full package: multimedia.

    You should change the Unix kernel hacker hat for the Squeak Smalltalk programmer hat.

    http://www.squeak.org/
    http://squeakbyexample.org/

    --
    Main difference between the BSD license and the GPL license: one is from California and the other is from Massachusetts
  341. High Level Languages...Quick-Easy to Learn... by JSThePatriot · · Score: 1

    I would highly recommend having your child learn a high level language. One that I really enjoyed learning more on when I got started was AutoIt. Unfortunately it's only for Windows. Also web programming is a lot of fun and provides quick returns for minimal investment. If after they still are showing interest in programming, then they can then spend a bit more time and learn a few lower level languages.

  342. POV-Ray by reikendo · · Score: 1

    I've always thought POV-Ray would be a great way to teach programming--instant visual results, and initially grasping OOP is probably easier when you're used to describing and instancing primitives with Sphere(...) and such.

  343. Except in 1980s BASIC by Anonymous Coward · · Score: 0

    (unlike Python), you can comment out a couple lines of code without having to reindent 100 unrelated lines of code so that it would still compile. Similiarly in BASIC, it's easy to insert lines of code without having to reindent 100 unrelated lines of code - you just use a line number occuring between the existing lines. And if you run out of line numbers just do a RENUM! Also BASIC won't choke when you attempt to print a numeric value without first converting it to a string.

    Clearly 1980s BASIC is a superior language to Python.

  344. Use BlueJ by Anonymous Coward · · Score: 0

    Use the Open Source BlueJ platform for Java.
    It is very simple to use, somewhat point and click. It automatically will teach him UML because the diagrams are autogenerated. So he can see the design as well as the program.
    Also, he won't have to work with the compiler. It just runs your code right there.
    There is a BlueJ book in Amazon that walks one through the language. It doesn't teach all the data structures first like most books (this is boring for the newbie). It teaches them how to code, and they get immediate feedback. I'm going to use it with my 9 yr old.

  345. Lego Mindstorms + Java by dougwhitehead · · Score: 2, Insightful

    Get Lego Mindstorms and download Java for it, called leJos. That way his programs can start simple and still get real feedback.

  346. Some Thoughts by DannyO152 · · Score: 1

    Scheme or SmallTalk (using the Squeak environment). I think javascript/html has its merits for accessibility, but there's an awful lot of casting into and out of String representations, which is a big deal and a security issue. Since the programmer has to be involved with the whys and hows, it's my feeling that such domain-specific hacking, though impressive, is a distraction.

    In the course of learning languages one learns to look not for the specific implementation details (does an expression end with a line break or a semi-colon or...) but the larger concept, i.e., how does the compiler or interpreter know that an expression is complete. We walk up to a new language with expectations, for instance, that there will be a way to do basic output and maybe, we hope, a way to make the output nice looking. Then we look for what the printf is called and how is it used.

    So then, here's my real suggestion: pick a language you'd like to learn and and learn it together with your child. You'd see the language through experienced eyes and can call out things that are idiosyncratic and things that are fundamental and can demonstrate how much of the problem solving occurs before the coding starts. Plus, if you're lucky and your child is engaging with all their curiosity, you'll have to field a whole lot of "Why" questions and formulating the explanation will be recreational, in all senses of the word. I expect your explanations will be better if you, too, are navigating new seas.

  347. Good idea, I'd start with simpler language by failedlogic · · Score: 1

    Disclaimer of sorts: I studied Computer Science at university. I was turned off by programming as I found it boring (C, C++, java). The product that comes about, I always find interesting. I've moved to more overall functional and easier to learn/use language for my personal use. I won't mention langauge ... no flamewar. ;) I think getting a former programmer-in-training as opposed to a site loaded with professionals might help.

    I'd say let your son learn a language. I started with BASIC on the C64. It was fun and I was 8 yrs old at the time. If your son knows HTML, I good place to start might be PHP or Ruby. I think syntatically (as a now-nonprogrammer) its probably the easiest to learn.

    IMHO, after about a year of programming, assuming he's not completely turned off, have him do some much more complicated tasks (within "reason"). Have him do it in C or C++ (given time to learn it). I'm serious about this. If he wants to continue to post-secondary education, better to find out if he REALLY wants to do programming, or if he's doing it 'cause dad does it. You or he can save having to plunk down a couple grand (or more) for one semester or one year of tuition. My dad is a doctor. I wasn't pressured to do it either. I thought I would be really interested in it as well. I wasn't.

  348. teaching programming by Anonymous Coward · · Score: 0

    I think DarkBasic (thegamecreators.com) is a wonderful way to start--you can create a 3D program of a spinning cube in five minutes. Its easy game-based focus will immediately have a videogame savvy teenager thinking about creating his own games--the immediate visual feedback will instill excitement like no other. Move him to DGDK (C++) when he wants more performance and is ready for a more modern language. I cant see starting someone with Python--it wont do much for a teenager. I liked somebody's suggestion about Java, HTML, etc--that's also giving immediate visual feedback, and reaches a teen where they are at (but is less of a lowlevel programming environment).

    Agemoz

  349. This was designed by a professor for this purpose. by acarbs12 · · Score: 1
  350. Micro Adventures by Anonymous Coward · · Score: 0

    The Micro Adventures books (http://en.wikipedia.org/wiki/Micro_Adventure) are a good place to start. You have guidance, a reason to write code, and occasionally even some fun output to play with.

    Now you just have to find them at a second hand bookshop.

  351. How I cut my teeth on programming. by shypht · · Score: 1

    I'm lazy - and I really got into programming by realizing "Hey, I can write code to automate repetitive tasks". I was running a BBS in grade 7 or so, and I had a habit of frequently switching software / re-designing my BBS from the ground up and having to re-import everything. After about the 100th time doing it, and getting sick of tedious tasks such as manually re-typing the description of text files - I started to write programs to automate this for me. My first tool that gave me a 'wow' factor, was a simple thing that would embed a file_id.diz into a text file, and pull it out when I re-uploaded it into the newest incarnation of my BBS. Sure, it's not as glitzy as game programming, but stuff like that is what got me excited about writing code. So, going along that lines - is your son really into say, organizing his MP3s? what about showing him how to write a program that can read ID3 tags, and organize his MP3 file structure accordingly. (Even with ID3 tags and modern media libraries, I have a bit of an OCD habit of having a logical file structure to organize my files also) Or, show him how to make a simple RSS reader for his favorite sites / etc. I geek out over utility/automation programming - and many of them can be very simple things that you can bust out in a few hours and get instant results.

  352. Silly animations caught my eyes ... by puddles · · Score: 1

    ... I didn't have a computer at the time (1982-ish) so I read the BASIC code and tried to figure out how the program worked, what the statements did, and how the program managed to put up the animation of a burning cigarette (yes, leave it to a teenage boy to be curious about smoking, among other things).

    I'd say, find something that's likely to spark his interest and get him started with interpretive language. Instant gratification is important in early stages. I'd get him to try these:

    Bash scripting, quick and dirty, use with sed / awk to get going quickly with text-based problems (ciphers, puzzles, etc.)

    Logo for quick romp around with the turtle ... and recursion of course

    BASIC for a little bit more control

    Avoid the nitty-gritty details in the beginning. A lot of tools and practices today require a whole bunch of magic incantations at the beginning before you get to do anything fun at all ...

  353. XCode + iPodTouch/iPhone by chochos · · Score: 1

    I think a good way to introduce a teenage kid to program is a cool platform. And the coolest platform for a teenage kid might be to program something for their iPod Touch or iPhone, because they will be able to show off their work to other kids and will really open his eyes to the potential of the device they usually just carry around to listen to music and talk on the phone.
    Plus, they get to use a really cool development platform (XCode + Interface Builder) with a really nice programming language (Objective-C), learn about OOP, can do some stuff in C, there are some really good tutorials on the Apple Developer Connection site.
    Even if he doesn't end up writing an app to put up on the iTunes store, he can just play around with stuff and load it onto his iPod or iPhone. I would have loved to have something like this when I was 13; instead of just writing stuff that only I could use, with no one around to see how cool it was, I would have been able to show it to my friends.

  354. Re:PHP will ruin your mind by Anonymous Coward · · Score: 0

    You should be refactored for suggesting teaching PHP to a kid.

    Fixed it.

  355. Old Teens by Ophion · · Score: 1

    Young teens need little encouragement, but old ones are notoriously stubborn.

  356. Blatant piracy by dave562 · · Score: 1

    The article asks, "What originally got you interested in programming." In my case I picked up x86 assembler so that I could crack copy protection. With regards to the son of the guy who asked the question, I think that the answer should present itself. The kid is obviously interested in computers and programming. There has to be something about programming that speaks to him. I personally hate programming. I think it is one the most tedious things in the world. I definitely enjoyed learning assembly though because to me, it represented the actual working of the computer in terms of directly manipulating what is in memory and being able to step through the lowest level of the code as it executes. That was cool for me. Actually writing a high level program doesn't interest me in the least.

  357. Simple programs to start with by flablader · · Score: 1

    Make sure he knows the basics of keyboard Input and console Output, then encourage him to write programs that do what he's currently being taught in his math classes. It sounds cheap, but I never understood a mathematical concept better than right after I wrote a program to do it for me. Bonus points if the program has to show intermediate steps!

    Language is fairly irrelevant at this stage, it's just the basic interest that has to be fostered. I started programming like this in BASIC, but I've studied a wealth of languages since then. If you can, look for a specialized math/science/computer school that he can attend (some school districts call them "magnet" programs).

    By the way, I'm a graduate of the University of Central Florida's Computer Science program and now "work" professionally as a Software Engineer.

  358. The most important thing to remember. . . by krunk7 · · Score: 1

    Is that the reason he's interested in programming is because your a programmer. I'm sure he finds the topic interesting, not saying that. But if you were an auto-mechanic, an artist, an author, it's likely he'd find that interesting as well.

    The best way to keep him interested and to foster improvement is to stay involved. Pull a good book of your shelf, tell him why you enjoyed it when you were learning, what you found useful about it. Encourage him to sit in the same room while you hack and not to hesitate to ask any questions he may have about the material, take the time to answer those questions. As he improves, work on projects with him and as soon as he's able to contribute to what your doing....work with him.

    Share your enthusiasm, talk about the challenges you had during the day with him and the solutions you found. He may not understand it all at first, but he'll listen, absorb, and gradually start picking it up. And if he loses interest, still talk with him, encourage him to seek his own interests, and emphasize that the most important thing is not *what* he seeks, but that he finds something that inspires the same passion in him that you've found in programming.

  359. My daughters asked me what I do for a living... by PRMan · · Score: 1

    I sat my daughters (10 & 8) down with me and said, "We're going to make a copy of this calculator on the computer."

    They had a lot of fun drawing the buttons, coloring them and double-clicking them to make them put their number on the screen. When it got to the tedium of acutally handling the stack and making the operations work, they were a little less interested. But when they saw it working, they had a really good understanding of what it is that I do.

    Will they be any good at programming or even want to do it? I don't know, and frankly, I don't care. I just want them to find a career doing something that they love, finding a good husband and having a nice family (I'm selfish, I want grandchildren, sue me).

    --
    Peter predicted that you would "deliberately forget" creation 2000 years ago...
  360. Send him to a Computer Camp by Anonymous Coward · · Score: 0

    Look for a Computer Camp in your area and send him there. That way he'll learn a variety of skills and be able to find out what he likes.

  361. How old are you people? by Anonymous Coward · · Score: 0

    I think we're talking about very antiquated ways of learning programming or doing things. Just because you think something is lazy or inefficient, it's also the way things are done and for the better because now the programmer can also be the expert in whatever the goal of the program is, not just some geek in the corner of the server room. I think Microsoft is doing one thing right and that's getting programming interesting for kids (even if they do have an ulterior motive) with the XNA framework. Far and away, I think the Xbox and XNA are going to be the most interesting and instantly gratifying things you can get him onto. Also, it makes you look cool and teaches him logic and some basic math without bogging him down. When he wants to do more (if he wants to do more) he'll look into DirectX or OpenGL and realize, for the moment, he needs C++ and he might then be more like the programmer you want him to be.

  362. Start hands on by Anonymous Coward · · Score: 0

    get Pure Data installed on a linux box and some sort of sensor interface like an Arduino. Get him to monitor the fish tank or something, and program physical control systems. Hands on work will make him excited about computers and he'll move on to C and other languages.

  363. I am not a programer but my 13 year old son... by Anonymous Coward · · Score: 0

    is interested in programming. Alice is a wonderful tool that helps teach introductory programming concepts in a 3d environment.

    alice.org

    A cut and paste from the website explains it best.

    "Alice is an innovative 3D programming environment that makes it easy to create an animation for telling a story, playing an interactive game, or a video to share on the web. Alice is a freely available teaching tool designed to be a student's first exposure to object-oriented programming. It allows students to learn fundamental programming concepts in the context of creating animated movies and simple video games. In Alice, 3-D objects (e.g., people, animals, and vehicles) populate a virtual world and students create a program to animate the objects.

    In Alice's interactive interface, students drag and drop graphic tiles to create a program, where the instructions correspond to standard statements in a production oriented programming language, such as Java, C++, and C#. Alice allows students to immediately see how their animation programs run, enabling them to easily understand the relationship between the programming statements and the behavior of objects in their animation. By manipulating the objects in their virtual world, students gain experience with all the programming constructs typically taught in an introductory programming course."

    It is a free tool that runs on windows, mac and Linux.

    You said you are not a teacher and have a horrible time teaching.

    The Alice team has developed instructional materials to support students. Resources include textbooks, lessons, sample syllabuses, test banks ...

    Anyway give it a try.

  364. My experience by Anonymous Coward · · Score: 0

    Well, I've never formally studied Computer Science. I've had genuine interest in computers since.. around 1999, when I first saw one. I got my first in like 2004 and fiddled around with Windows. 2005 onwards, I messed around with Gentoo, loved it all and eventually started learning bash. Learnt it pretty well and at times had to go dig up the core UNIX concepts as well.

    Now, working on this thing fulltime.. am totally in love with it. Migrating from sysad and learning programming.. perl kicks ass. I totally love it. Hated python for being too boring. I'll probably learn it later this year anyway, but shell scripting > sed + awk > perl kicks serious ass. I love it. But, I'm the sort of fellow who likes `low level' stuff. Perl allows me lots of control and stuff and regex is simply awesome fun for me. Dunno how it goes for anyone else, but yeah..

  365. start simple by Anonymous Coward · · Score: 0

    The absolute best thing to do is to have him learn vb first. Yeah I know it is a horrible language, but it still teaches the fundamentals of programming and lets admit it's very easy. Have him use .net and he will feel instantly gratified because you can build windows ui apps in a snap with those 2 tools (vb, .net) Even if vb is a bad language, it will open the door to any other object oriented language because all the syntax is the same. Especially C# and C++ because he'll already have a powerful IDE to code/learn them in.

    -AJ

  366. Don't teach, enable him to Do by mctanis · · Score: 1

    Attempting to show him how to program, just for the sake of learning to program won't work. He'll get bored.

    What he needs is something that he can 'DO' that requires him to program, then he will be motivated to learn the programming end of it.

    My suggestions include:
    * Game programming - You can use something like Garage Games' game builder suite. It's relatively inexpensive and it works on Linux if thats the way you want him to go, or you can use their XNA version and you son can make his own games for an XBOX 360.

    * LEGOs - Get him a LEGO NXT set and help fund experiments into building robots. The NXT has it's own visual language, but there's also C, Java, C#, python, LUA and other alternative development environments for it.

    * For web programming, look at his other hobbies and see if there's some kind of website that he could create to support or promote that hobby that he could use a LAMP system to develop

  367. ALICE, C, PHP by cyberneurology · · Score: 1

    Carnegie Mellon has an interesting free project called Alice ( http://www.alice.org/ ) that is described as a "scripting and prototyping environment program for 3D object behavior." It is cross-platform and seems to be very easy to learn.

    Getting slightly more adventurous, I'd suggest PHP, HTML, and CSS. They're fun, relatively straightforward, and more or less forgiving, while still being pretty powerful.

    After that, the multitude of desktop programming languages (Java, C, etc.) might be a logical next step.

    Being a C programmer, I'd naturally advise against Ruby, Python, etc., but in all seriousness, since your son is a beginning programmer, the nuances and reasons for the existence of those languages will be lost on him. Sure, they may be easy to learn and use, but if you want him to grow up with a natural love of *NIX, the "C and Perl" route is likely the best eventual course.

    As far as textual material on the topics, Google is by far the best resource. I've taught myself much of what I know, and I've found that, while O'Reilly books make great references and SAMS books make great tutorials, nothing beats a good search engine and the knowledge (and sometimes outright stupidity) of the internet community.

  368. I think this works by Anonymous Coward · · Score: 0

    Hey, I've started learning Delphi, but I Didn't enjoy it, then I had my first contact with Linux, what piqued my curiosity was the Kernel, but I've not known C yet, then I started learn it and now I'm getting better little by little.
    I think if you show him how to do useful things using for example Python with GTK ( or QT if you prefer it ) he will enjoy a lot programming.

    Sorry my bad English, it's not my mother tongue.

  369. Why programming? by Anonymous Coward · · Score: 0

    Programming is a field similar to being a seamstress or meat packer. It was once lucrative, but these days, one can get complete code blocks custom written from an offshore company that are well reviewed and audited for security leaks for 1/10 the cost of it takes to have even a single experienced employee on the payroll.

    Programming may be a great hobby, but its just like being a car mechanic, or sewing clothes. Its a hobby that will result in an existence of barely scraping by, with the job prospects becoming bleaker every day as the economy collapses. More companies these days are hiring offshore consultant agencies like Tata who can guarantee the quality of a code base for a tiny fraction of the cost of having a dedicated programmer on the rolls.

    So, of course, the OP's son can be a programmer. Career-wise, expect a life of pink slips, minimum wage or barely above, and no job security in life if he does go this route.

  370. Take the utilitarian approach by xouumalperxe · · Score: 1

    Before you can get creative and derive actual pleasure from programming, you first need to be able to do more day-to-day stuff. "Hello world" is great to teach someone what the basic structure of things is like, but that sort of direction gets completely uninteresting within a couple of hours if you're not already academically inclined towards the subject at hand.

    My suggestion is to teach him to Get Things Done. Like you said, people take computers to mean "point and click" today, so you first have to get rid of the mentality that what is superficially easy is, in fact, the easiest way to do things.

    So start with the shell, show him how freaking powerful shell scripts are. Start with the basics, like "mv *.mp3 /to/some/place" rather than having to sort the files by type, select the mp3 files by hand, drag somewhere else. That shows him some basic pattern matching. Want to find out which of a dozen files contains a specific phrase? Show him the following snipet:
    for $file in *; do echo === $file ===; grep file "phrase goes here";done; (check for errors, haven't used this stuff in a while and don't have a proper shell handy). Hooray for loops!

    Once you have that sort of thing going, give him a "real" programming language. I'd say a scripting language is best. That'll steer him towards good algorithms over stupid "one less instruction" optimizations. Later on, if/when he starts showing some interest in the behind-the-scenes stuff, give him C.

    At the point in time when you start showing him a "real" language, give him real problems. Does he like Monopoly? Everybody loves park avenue, or whatever the street immediately before "go" is called, because it's so freaking huge and expensive and stuff. But is it really *that* good? Show him how to use a random generator to simulate like ten thousand games with 500 rounds each, and aggregate which squares are the likeliest to land on. (IIRC, the best set is the orange, best odds*price value). Next step up, add some more complicated logics to the process. I heard that tennis essentially works as a high-precision instrument, where small differences in average odds to win a single point translates into very high odds of winning a match. So you can adapt your monopoly simulator for a tennis sim and check if that's true. That'll also teach him the value of code reuse, in particular the importance of writing easy to manage code.

    At this point, just plop some documentation on top of him and let him hack away! Show interest, let him know your opinion on how it's looking, share your expertise if he asks for it.

    (Depending on how visually-oriented he is, one thing that might also work is having him learn POV-Ray. Depending on how much *you* are into that sort of thing as well, and provided you haven't played with POV yourself, learning it together would probably be great fun)

  371. Knowing how to learn by jmdaught · · Score: 1

    It seems to me that the best way for you to help him would be helping him learn how to learn in the programming space. When he hits a problem, help him learn how to search for more information rather than giving him the answer. It might also be worthwhile for you to set up the development environment for whatever it is he wants to build. That way he can jump right in to the code.

  372. curiosity by nategoose · · Score: 1

    His curiosity is the most important thing. He's your son and likely to learn similarly to the way you have, but it seems like you are both trying to make him you and encourage him peruse his own interests at the same time. Be there for him to answer his questions, loan him books, and set up development environments if he needs it. It's just as likely that he'll want to learn about what you are interested in as it is that he will end up learning about stuff you know very little about, so don't feel bad when suddenly he knows more about something than you do. As far as encouraging him, just ask him how he might solve a certain problem. Brain storm with him, even if it's not that difficult of a problem for you. Then occasionally sit down and write a test program or a helper program with him based on the brain storming. I'd avoid Big O problems directly for a while though. Let him get comfortable first. Also, C for Dummies was great to me, but it's slightly Dos/Windows biased, but I've moved on from that now.

  373. Re:PHP will ruin your mind by cyberneurology · · Score: 1

    I find it interesting that many of the complaints listed here against PHP are not so much against PHP as they are against the various extensions people have written to PHP. I will admit that I much prefer PHP4 to PHP5, and the additions that PHP6 will include make me want to vomit.

    Many of the features in the first list are descended more or less directly from Perl. Others of the features are complaints against PEAR, which I don't consider to be a part of PHP. One can use PHP without using PEAR and I do so all the time. I also refuse to use Smarty, as it is a horrific mess of PHP, HTML, and bloat.

  374. Re:PHP will ruin your mind by Anonymous Coward · · Score: 0

    I started with basic and currently work at a company where PHP is the main tool.

    In between those two I have learned C, C++, C#(urgh) had a look at D, some simple bash and python.

    Basic only corrupts those who don't have the ability to say "okay I have used up this language, I need something better, even if I have to start fresh."

    A friend of mine is like that, he still uses VB6 and came crying a few months ago because his good ol' language can't write files that are greater than 4GB.

  375. Coming from a 20 year old. by gubers33 · · Score: 1

    I'm a 20 year old IT student, I'm also an intern and have a job offer already. I agree with many of the people who suggested Python, that is how I got my feet wet in programing, it is pretty easy to pick up and you can find a lot of small programs with walk-throughs online. Mainly the best way to learn is to find programs with some basic instructions and to learn by doing. As for the people who suggested C++, I wouldn't recommend starting here, I took C++ classes, I like it I see the functionality of it, but it isn't one of my favorite languages to program. If you want to get someone hooked on programing give him a Java book. Is about just as easy to learn as C++ and I think it is more fun to write. The various Java games you can write get you hooked. If you want him to get hooked just find him some fun program examples and give him the tools and help him if he asks.

    --
    Just because you are wrong and I called you out on it doesn't mean I am a Troll.
  376. Don't Worry, It's Easy by daveslab · · Score: 1

    Hi,

    So, I was a studying a science in college up until a month ago when I graduated. Mid-way through college, actual computer science started to interest me, as opposed to dinky Matlab simulations I would write for homework. So, I know what can help your son out.

    There is a great, free, online book that I always go back to. It's called "How to Think Like a Computer Scientist." It covers all the basics and gives you a solid theoretical as well as practical framework to learn programming. I would reccommend the Python version to you, as that is the one I learned from.

    Also, I taught a class to my fellow students at college extracurricularly as well as TA'd the intro computer science course (though I had not taken it :) ), so if you have questions, I would be happy to answer them. Just message me.

  377. How I started back in 1979 ... by Anonymous Coward · · Score: 1, Interesting

    I had open access to an apple ]{ at school about 2 hours a week. The others did not know the computer existed (kind of).

    So I learned basic from the documentation. It was rewarding to learn to master it with no outside help.

    I programmed games (pacman, tennis, snake) all with less than 200 lines of basic code.

    I programmed some math programs to plot functions

    And then I programmed my own drawing code to generate bitmap images.

    All this was great for my self esteem.

    Now we are in the year 2008, so here is what I would suggest:

    Coach him just a little bit, point him to the right tools, then let him learn by himself. Just congratulate him on the progress he makes.

    One thing of course is to point him to something modern enough. I would suggest java inside Eclipse (part of linux distributions.

    He can start by using just one object and not use anything object oriented, then he ca nlearn object oriented programming, graphics, network, etc ...
    There are lots of java one page samples ...

    Have fun,

    Georges

  378. Tell him ... by tr9sh · · Score: 1

    ... that you get the girls with leet assembly skills!

  379. If it ain't fun, don't do it by fortyrod · · Score: 1

    Good question, I have two sons, currently 12 and 17, and am going through the same process. Here are some of my experiences.

    We went through Lego Mindstorms a couple of years back and it was very helpful. Not "really" programming, I guess, but great fun and introduces some fairly sophisticated parallel event handling concepts without even trying. I mean, it's a robot, a bunch of stuff HAS to work in parallel, right? The kids, as usual, think it's obvious and go about their business of having fun:

    Adult: "Wow! Nice LabView setup you've got there!"
    Kid: "Can I have my toy back, please?"

    So, first the 12yr-old. And the shameful parenting revelation part. At one point I paid him $10/chapter to work through "Java for Dummies", which he did with much delight. The main difficulty was keeping him from taking on the immediate cloning of WoW before actually understanding variables. He also did some of the C and C++ for Dummies books at other times, so yeah, he knows what a pointer is. So much for youthful innocence.

    Not much happened after that, till he discovered the Warcraft level builder or whatever they call it. Now he's lecturing me on IF statements at the dinner table. Time to let nature take its course, I guess.

    The 17yr-old has done everything from ARM assembler to PHP and Flash at this point. He has done interning at a couple of startups and absolutely gets the programming thing, though certainly with that occasional, and very annoying "I know everything even though I'm a clueless n00b" aura that teens seem to own.

    This summer, he had a very manual, outdoors, sweat-all-day-in-the-heat kind of job. That gig ran out so now he is trying to land a job at an ice cream shop where you have to sing and dance if a customer gives you a nice tip. I think it's a great idea. Kind of a good balance too, if you think about it!

    I don't know if either of my boys will ever use their programing skills in a professional capacity. I DO know that they consider programming to be one of many valuable life skills, and will never be taken aback when confronted with any C-like programming language.

    However, no APL, Forth, or beer until they're 21! At least in my state. I hear tell the Forth age is lower in California ;)

  380. Go meta, avoid early lock-in by Anonymous Coward · · Score: 0

    You might start him on UML and a rigorous course of design patterns. He can choose a language later on when he wants to generate the system from his design.

  381. Be patient by q-the-impaler · · Score: 1

    My Dad was into programming and I was into games. He tried a few times to get me into programming, but I just wasn't focused enough yet. He also introduced me to many scientific studies and side projects ranging from electrostatics, water purifying, model rocketry and solar power. This was back in the late 80s.

    Today I'm into all of that stuff and am a senior developer and software architect as a profession, but I'm sure I seemed less than enthusiastic at the time. He was fairly patient with me and is surprised how much I still remember.

    So, remember, you are doing the right thing, but you may not get immediate results.

    --
    Sierra Tango Foxtrot Uniform
  382. Teach the Fundamentals by Anonymous Coward · · Score: 0

    The key is that he/she learns the fundamentals of Computer Science first. Ideally he should learn UML first since it is the language used to describe and architect software systems. Infact UML will give the learner a good understanding of software systems and how they work, without having them see a line of code or have to understand a language. I would then stress teaching some of the basic concepts (binary trees, queues, heaps, treaps, etc.) since those are abstract concepts that can be taught without a programming language necessarry and when he/she wants to know the implementation, you can show them beautiful psuedocode which trivially everyone can understand. C++ is likely the best language to start teaching someone how to program, but the second you do that is the second your son's mind gets corrupted. Any good training in programming languages should start with functional languages (like Lisp or Scheme), and then move onwards to more archaic (and more often used) languages like C++/Java.

    Just my thoughts.

  383. As a kid by Anonymous Coward · · Score: 0

    I started learning my first programs at about 12. Entirely self taught. I'm relatively young (20), so this was probably around Pentium II - Pentium III era. I too was curious about how computers worked. I played games on them sure, but how did they know what to do? Truthfully my original question was only finally answered after an electrical engineering class at my university, but to start with I learned programming. I checked out a book from the library which described programming in Basic. I asked my mother when I got home if we had a copy of Basic, and she set me up with an ancient copy of BBX Basic she still had. My first programs were text based games. It was always a ton of fun programming. It gave me a great sense of freedom, like I could do anything. I later found out that we had a copy of Quick Basic on an old 486. Quick Basic was probably where I really got into programming. I would highly recommend a copy of dosbox with a copy of quick basic installed for any adolescent interested in learning programming. I cannot express how excited I was the first time I realized how to make pictures move across the screen in QBasic by drawing them in reference to an x and y variable. Quick Basic allows you to really get into programming and do graphics without having to learn about libraries. In addition the help files were excellent in describing for me what every keyword did. This said, it was difficult for me to learn C after Quick Basic because I needed to learn that there are different compilers, that many compilers don't provide an IDE, and that for any real graphic programming you need to learn an API. I have always thought that if I were to teach programming to somebody between 10-13, I would start them off with QBasic in dosbox and then after they had a year or so with that help them move to C or C++ and explain the different complexities of a more low level language.

  384. Student-Centered Learning, FOR THE WIN by Little+Brother · · Score: 1

    The kid, from what I read is already showing interest, yet most posts I've seen here are about how to get the kid interested. What the submitter was asking is how to teach and possibly WHAT to teach.

    I am a substitute teacher, and am slowly working towards my teacher license. The most important thing I can tell you, for teaching one-on-one is to find out how the kid learns.

    Everybody learns best in different ways. If your son learns best by reading books and going with it, you are lucky, your job consists of buying the right books and letting him go at it. If he learns best by watching, you need to do some simple programming yourself, with EXTRA comments, then letting him tweak the source code. If he learns by doing, walk him through the steps of creating a program to do a simple but useful (I use the word loosely) task. (Converting metric to imperial or putting words into pig-latin make good starting projects.)

    Find out how visual vrs conceptual he is. If he enjoys the visual start with a visual IDE. Sadly, I do not know of anything in *nix that is better for this than Windows-only visual studio. If he is more of a mix, go for console-based graphics programming, which requires more conceptual awareness, but still hits the visual areas as well. If he is a pure conceptual person, go for a pure functional console based start.

    What language you use is fundamentally unimportant. Some may be slightly better than others, but he will use what he learns, then decide he dislikes that language and move on to something else. We all do.

    Now, so far as finding out how he learns best, find out what subjects in school he likes most, and which ones he does best in.

    If he loves math, and does well in it, you have a good case for going with abstract instruction. Explain the concepts of functional decompisition, object oriented programming, flow-charts etc.

    If he is an English/Language person, start with the syntax of the language, or better yet, pseudocode. Make projects that manipulate strings, and focus on the language, instead of programming in general.

    If he is an art person, start with graphical manipulation. Something simple, but fun. Fractals are good here.

    If he is an layout/design/yearbook person, I cannot recomend anything better than Visual Studio as it will allow him to START with the layout, then do the work after-wards.

    If he is a science person, dig deeper, does he prefer just knowing scientific "facts" or does he like the quest for empirical experimentation that SHOULD be the underpinning of science. If the former, focus on code snippets that perform specific tasks. I would highly recomend an OO language. If he prefers the experimental aspects, he will actualy probably be more intrested in a lower level language. You might even start with electronics theory, then expand to assembly.

    If he is a music student, I have no clue, but you might want to consider things that deal with timing loops or counters.

    If he is a Gym-jock.. erm uh, hmm.

    Whatever the case, WATCH HIM LEARN. Find out where he is learning fast, and where he is learning slow. Make sure you keep adding more where he is learning fast, but don't cut the slow parts. Just don't add more to the areas he is doing slow in until he masters the previous step. You may well end up with a kid who knows esoteric compiler options before he understands bubble-sort, but he will be constantly learning SOMETHING. He will keep the interest he is already showing. Keep him challenged, without making it hard. That is the perfect level for teaching.

    Do not focus on the language. Do not focus on the program. Do not focus on the computer. Focus on your son. Everything else doesn't matter.

    --

    Little Brother, watching the watchers

  385. At this age, there is only one motivation... by lord_mike · · Score: 1

    ...to write games... after all, what else is there to do with computers? Game programming is how the commodore 64 generation got into computers, and it is still a powerful draw for game addicted kids.

    Try this book to start:

    http://www.amazon.com/Game-Makers-Apprentice-Development-Technology/dp/1590596153

    There isn't any "programming" until the later chapters, but my 12 year old nephew loves the book! It gently guides them into the whole aspect of programming, which is great for those who are experienced using computers, but no.t much else (i.e. most of young America). After finishing this book, there are other books that can guide him into more advanced game programming.

  386. Deprive him of a social life by Anonymous Coward · · Score: 0

    nature will take it's course.

  387. Web Programming by shaitand · · Score: 1

    I would start with web programming. Most agree that html is not a programming language but it contains many of the same elements.

    There are lots of 'languages' to learn in the web world and they all work together. Hit HTML first, your child will be producing results that can be seen within 5 minutes. Next would come CSS, then maybe javascript. After that you could throw in PHP or Perl.

    Web browsers represent a great graphical interface for cross platform compatibility. Every language I just mentioned is cross-platform compatible. More importantly, they are all technologies that teach programming principles and fundementals and yet provide quick rewards that keep you coming back. Of course during this time have him use something like Ubuntu.

    Only then would I bring him back to system level programming. By then he will have a love of building and designing things and will appreciate the classic architecture used by those who built *nix. Time to learn C and C++. After mastering the basics of those languages I would recommend something like Linux From Scratch to give a solid system level understanding. Let him code on *nix type stuff for awhile before throwing him to the wolves with assembly.

    That, or you could give him the idiots guide to vb.net.

  388. Thank You! From the original submitter by Anonymous Coward · · Score: 0

    I'm the original submitter of this question, and I just wanted to say a great big THANK YOU to everyone who has posted! And to the Editors (especially Soulskill) for publishing my question.

    I had submitted this a couple days ago, and was *really* disappointed that it seemed to drop off the radar. Leaving me to handle this blindly on my own. I woke up this morning, went to Slashdot and BOOM! I was completely floored to not only see this on the front page, but 600+ comments and counting!

    Once again, thank you, everyone.

    I also wanted to let you know that I'm reading every single comment here. Yes, even the stuff at -1; I'm used to that, because I read those when I have mod points. So even if you're posting as an Anonymous Coward (ahem) and don't get modded, please know that your comments are indeed being read.

    Much obliged.

  389. See what he likes about *Nix and run with that by mediis · · Score: 1

    There must be a reason why your son wants to start learning about *Nix. Find out what that is, and explore those options. Believe or not my impetus for computers started with scripting. Before then I just liked to play games. I had a computer job doing operations crap, nothing big. I would do some cool things with the work-flow and I used Access to manipulate the data in the Oracle DB but nothing really stood out for me until I started to learn how to script. Once I started to write scripts, I learned how to build, monitor and maintain things at a level I had never imagined. Call it "geek power", I could control a limited universe and I really liked it! That pretty much drove my career into Unix Administration, because you couldn't script on an NT box. I loved playing on computers, creating little programs that helped me do my job. There is a great feeling of accomplishment when someone asks you to do something, expects it to take all day, and you finish it in about 5 minutes. This still drives me in wanting to learn. Right now it's Ruby so I can do Rails. As time goes on, other things will pop up that will drive your son's career in directions you never thought.... in directions he can not even imagine. If I did what my father wanted me to do, I would be an unemployed Novel Netware Administrator.

  390. CG by Anonymous Coward · · Score: 0

    Most of the CG programs offer scripting support. Your kid could write small programs in C#, Python, VBS or JScript and the result would be animated 3D objects doing stuff that cannot happen without programming them. Almost instant quality results without much hard-learning. Once the basic stuff works and he gets to understand the basics of programming, the hard abstract stuff will make more sense.

    Some 3D Programs that offer scripting are XSI and Maya.

    I think XSI has a free version, I don't know if it supports scripting though..

  391. Attempt a program of interest to the student by p5 · · Score: 0

    I think teaching programming is most useful and productive when there is meaningful goal for the program or project. Especially if this is outside of school and there are no grades being handed out.

    Ask him what he would like to create, if it's large, break it down to doable modules. Either way, if you are learning on your own there has to be self-based goal to keep the interest sparked.

  392. Don't! by Anonymous Coward · · Score: 0

    For God's sake, don't encourage him! He still has a chance on a real social life, if only you'd squash these seeds of interest!

  393. Learning Java Through Violence by Anonymous Coward · · Score: 0

    There was a great Slashdot article from Sept 9th, 2001. I've used it to teach young people Java and they always get a thrill from it. Learning Java Through Violence http://slashdot.org/developers/01/09/09/156200.shtml

  394. Re:PHP will ruin your mind by SimHacker · · Score: 1

    For all the complaints about various PHP extensions, there are also many complaints about the PHP language design and implementation itself.

    Take, for example, magic_quotes_gpc. That is the stupidest flaw ever, which should have never been in any rationally designed language in the first place, and it makes programming in PHP a LOT more obnoxious and error prone.

    Don't blame Perl for PHP's mistakes. It was idiotic of the PHP designers to foolishly ape the mistakes of Perl (and later the mistakes of Java, when PHP5 tried to express PHP's dynamic interpreted language's OOP system in the SYNTAX of a Java's static complied language OOP system, resulting in a horrible impedance mismatch, and many subtle inconsistencies and gotchas). That is called "Cargo Cult Programming Language Design".

    The REASON that most of the code in PEAR is crap, is because PHP encourages and supports crappy programming, which is precisely WHY it should not be taught as a first programming language.

    -Don

    --
    Take a look and feel free: http://www.PieMenu.com
  395. KidBasic works fine by Charles+Roth · · Score: 1

    See David Brin's article "Why Johnny Can't Code" at http://www.salon.com/tech/feature/2006/09/14/basic/index.html Then see BASIC-256, nee KidBasic. Available from http://thedance.net/kidbasic. I taught 8 9-year-old-boys elementary programming in 3 one-hour sessions, and they ate it up.

  396. Learn on a Micro Controller by Anonymous Coward · · Score: 0

    Get a micro controller platform like the Arduino. It uses a modified version of C and it lets you create something a little more hands-on than a straight "computer program." It's easy to use and you can create fun gadgets with a minimum of external parts.

  397. Start out with machine code by Anonymous Coward · · Score: 0

    Seriously. Programming to the bare metal is the only way to get a real understanding of computers.

    All these new languages are just "flavors-of-the-day". While useful, they're just far too abstract.

    I am so sick of young "programmers" who have no idea how to program real bare metal. Take away their development environment and high-performance-hardware and they're totally useless. At least if you know how machine code works, you can grok the more abstract languages if and when you have to.

  398. Try finding a book with source code of BASIC games by HycoWhit · · Score: 1

    Way, way back in the day--my dad came home with a TRS-80 Model 1 and a book filled with the source code to a bunch of simple games; Connect Four, Tick Tack Toe, Moon Lander, and I think big game in the book was Lemonade Stand.

    Anyhow I sat down and start punching in the games, line by line. When I would finish there would be a myriad of typos to fix.

    Little did I know I was coding and debugging. About the fourth program I typed, things started to dawn on me. IF THEN, FOR NEXT, GOTO, etc. all started to make sense.

    It wasn't long before I was the one heading to Radio Shack looking for new books. Figured out PEEKs and POKEs next, and before you know it I had my own original game.

    At fifteen I was working on mini's programming RPG3. By sixteen the IBM PC came out I was one of the youngest hires at IBM's Yorktown Research Center.

    Of course the flip side is by 26/27 I was burnt out on coding... Hey but at least my career path was secure!

  399. C++ at 3dbuzz by Anonymous Coward · · Score: 0

    I recommend the video lectures at www.3dbuzz.com

    The Intro to C++ and OpenGL courses are superb. This guy is a great teacher, and, while the course is done in windows, it's easy to follow on linux.

    It's not free, but I think the bundle is about $100, which is very cheap, considering the amount of material it is, and the quality.

  400. Re:Lua and Python will free your mind by SimHacker · · Score: 1

    There are many practical, clean, simple and easy to learn programming languages, much better than PHP, that are great to learn as a first programming language.

    Learning Lua will enable you to write your own World of Warcraft mods, and increase your chances of writing your own game or getting a job in the game industry, as well as enabling you to script all kinds of applications like Adobe Lightroom and WireShark. Lua is an extremely well designed and implemented, efficient and powerful programming language, which will open your mind in the same way Lisp does, instead of corrupting it like PHP and BASIC.

    And of course Python is also extremely useful to learn as a first language, for all the same reasons as Lua, and also the fact that it has a huge library of mature, solid, powerful modules (unlike PHP's PEAR, a collection of buggy, poorly though out modules, hacked together by ametuers).

    -Don

    --
    Take a look and feel free: http://www.PieMenu.com
  401. Because of bragging rights, remember? :P by Moraelin · · Score: 1

    Why not? "Game" isn't synonymous with "First person shooter". An intelligent teenager can learn enough to make games better than half the stuff on Miniclip in less than 6 months.

    Because you want to give the guy some bragging rights (to keep him motivated) and with as little effort as possible (so he doesn't go bored before seeing any results.)

    Sure, if you're already a decent programmer and have at least some minimal graphics skills, by all means, go ahead and start a 6 months project. But if you want to motivate a 12 year old, 6 months before seeing a result is an eternity. It's 1/20 of his entire life so far, or even more if you discount the first years from which he has no memories. It's akin to starting a 2 year project at 40. It may work if it's already on the domain of your hobby, but not as a teaser to see if you like an entirely new domain.

    (I don't know if perception really scales linearly that way, but some studies _do_ show that children perceive time as flowing a lot slower than adults perceive the same interval.)

    If you want to get someone's attention, fast, you'll want to start with something like, "see, you click here and here, and type a bit here, and... taadaa... our automated patrolls in X2 The Threat will buy and use missiles. And, hmm, you know, maybe we could make them call the nearest destroyer to jump in the sector if they run into pirates." Stuff which you can finish in half an hour and upload on some mods site, and actually see a couple of guys saying, "thanks, that's just what I needed."

    Heck, probably the smallest mod I've seen that apparently made a bunch of people happy, was IIRC a one line change in the Creatures 3 script. It's a special case, but it shows how little effort may be needed in some cases and still end up with something useful and a little bragging rights. That's the kind of thing you'll want, to get someone hooked.

    IMHO.

    --
    A polar bear is a cartesian bear after a coordinate transform.
    1. Re:Because of bragging rights, remember? :P by FingerSoup · · Score: 1

      Start them programming simple games... You may forget, but learning how to read code and trace it out, even in a mod for a game, can be a chore, and would intimidate the heck out of many teenagers. Choosing a simple language, with some simple graphics commands built in (BASIC, Turing, whatever), and provide some simple examples of how basic data structures work (If/then/else, Loops) would allow them to learn code at their own rate. having commands like drawBox(), drawLine() and drawCircle() to make graphics easy, speeds up the instant gratification you seek.

    2. Re:Because of bragging rights, remember? :P by pjt33 · · Score: 1

      I should perhaps have been clearer. I didn't mean that you should start him on a 6-month project. Rather I was arguing against the view that games nowadays are so complex that there's no point trying to write one.

      I'm not sure that mods are the best way to start programming either. That one-line change you talk about probably required understanding hundreds of lines of someone else's code.

  402. Re:PHP will ruin your mind by Spy+der+Mann · · Score: 1

    No, PHP is *NOT* a horrible language. It lacks some important object-oriented features (at least PHP 4) and allows horrible programming - which is very different.

    Want a horrible language? Try Foxpro. It's limited, proprietary, ambiguous regarding variables and database fields... ugh.

    But as a learning programming, I wouldn't recommend PHP either. There aren't many things that you can do in PHP other than web portals.

  403. my 2 cents by seededfury · · Score: 1

    i always thought the best way to encourage anyone was to discourage them.... Sex is fun and great but YOU are not allowed to do this. NO No No...

    That's how it all got started for me anyway. I built my empire because someone told me I wasn't allowed to.

  404. Writing a program that people will use by PeterJFraser · · Score: 1

    The BSD's with their anti-GNU bias are missing a whole series of simple tools (i.e stunnel ).
    If someone writes up BSD licensed software that is well written I am sure that their software
    would be adopted and shipped. Nothing give more joy of programming that have others using
    your work. Programming is a complex process the trick is to find simple but useful tasks
    to start with.

  405. BASIC Edutainment Software by Anonymous Coward · · Score: 0

    i'm a high school senior and i have been programming since i was in middle school. the way that i started to program was with BASIC, more specifically this instructional video game/learning CD-ROM http://en.wikipedia.org/wiki/Learn_to_Program_BASIC.
    Donno if you can find it anymore though.

  406. Have them learn how to make games. by triceice · · Score: 1

    http://www.alice.org/ Check this website for all the tools to get them started programming.

  407. Try Helping Him Mod Games by Anonymous Coward · · Score: 0

    I tried to get my brother to learn some programming. First I tried with POGO, but he wasn't interested. Then Python. No Interest. Then Scratch (search for it from MIT), small amount of interest. Then In the Warcraft 3 world editor, and finally some interest. He plays Warcraft 3 a lot already, and he wants to make his own games, so finally the programming is a tool and not something I'm trying to teach him.

    I started learning to program when I was younger in Tintin, a tool used for automating some parts of your interaction with text based online games. (MUDs) Nobody had to force me, I just wanted to be able to do things faster in game.

  408. OpenGL by annihilizard · · Score: 0

    I know that when I was learning how to program, doing video games was what got me really interested, I'm not sure if this site's tutorials are still valid, but http://nehe.gamedev.net/ has a great number of tutorials that may be useful..

  409. Videogames! by Spy+der+Mann · · Score: 1

    I remember when I was had a Commodore 64. My dad used to buy the Compute! and RUN magazines - which included some games source code for you to type (included was the Automatic Proofreader (TM) to make sure you typed the lines correctly). That's how I learned programming.

    WHy don't you get your kid a C++ / IDE combo (like Dev-C++, Codeblocks, or if you're on linux, kdevelop. Personally I prefer Codeblocks) and install the SDL library. Then buy him a game programming book (preferredly with included CD).

    Start with simple things before the games: Loops, if/whiles, and then move to the graphics parts and reading joystick input. Then let him get curious with the book and game examples provided.

    If that's too complicated, why not getting a copy of Adobe Flash and let your kid learn to write flash games. Sprite programming is a piece of cake in Flash.

  410. Simple by DaitanGio · · Score: 1

    If you learn programming:
    + You would be able to dominate the world (see wargame)
    + You will have a lot Money. A lot of money. Do you know Bill Gates?
    Cons:
    + A lot of Shame on you.
    Do you know windooze vista?

    --
    -- Giovanni Daitan Giorgi http://gioorgi.com http://www.siforge.org
  411. Re:PHP will ruin your mind by Anonymous Coward · · Score: 0

    While I agree with you, I don't think I could really put into words *why* php sucks so much. Why exactly is it? I'm not trying to start a flamewar, I just think it's strange how php is so obviously bad, but the reasons aren't really that obvious. One complaint I have is that typos can be difficult to find if the error reporting is set to the default levels. I don't really like some elements of the syntax w/r/t array indexing and objects. And the way its references work is kinda strange. And the interpreter seems to be a big memory beast. Can't really think of anything else, though.

  412. Hardware and software by neuromancer2701 · · Score: 1

    I would go with python was well it is really easy to mess around with and has pretty good documentation online.

    One cool thing that encourages even me to learn new aspects of a language is combine it with other things you enjoy. I did that with learning about xml and python so I could parse the World of Warcraft armory. http://jerdking.blogspot.com/

    If he enjoys working with his hands and likes robotics. I would suggest the http://www.arduino.cc/ It is a little standardized open source hardware platform that has a neat IDE and uses a modified C++ language. I think it is cool to show kids that programming can cause real world actions not just something on your PC screen(not that there is anything wrong with that)

    --
    "If you like Battlestar Galactica, you're probably a huge nerd." -Stephen Colbert
  413. Linden Script Language, JAVA, or C# by Anonymous Coward · · Score: 0

    My suggestion is to stick to something with visual feedback. Anything would do. In fact, a simple way to get him introduced to programming that would be instantly rewarding is the Linden Scripting Language that is right in Second Life.

    I would suggest ALICE if I didn't have firsthand experience with the horrors of what it can do to someone's concept of programming...

    Aside from either of the above, or maybe once he even decides he enjoys the concepts in programming, perhaps JAVA or C# with a concentration on 2D graphics so that he can SEE what he is doing rather than just take the computer's word for it... I cannot stress enough how visual aid will really perk someone's interest in a topic that would otherwise be mundane.

  414. whats wrong with basic... by Anonymous Coward · · Score: 0

    as much as i hate to say, i started with basic(QB 4.5)... then i moved on to assembler, followed by C, and the C++, and then i started learning about html and scripting languages, and all of that...

    My hardest part was learning OOP after learning basic, and assembler(well, i was still pretty young too...)

    But what got me started was i liked games. I found a basic program in a disney magizine for an apple 2e... I asked people i knew how to make it work, they showed me quick basic... (funny thing.. i never did get that code to work on a PC...)

  415. every (typical) teen wants to make video games... by blakieto · · Score: 1

    I suggest you turn him on to the NeHe OpenGL tutorials. He'll get a series of tutorials on how to create basic opengl graphics, animation and the supporting infrastructure logic for making games. That is a great doorway to everything computer science and an endless ladder of geekdom. (Worked for me... [game making that is, I started long before NeHe was around.])

  416. Rising Sophomore by Anonymous Coward · · Score: 0

    I'm a rising sophomore from carnegie mellon university. This university heavily emphasizes everyone at least having an elementary understanding of programming. Before freshman year i knew nothing of programming, now i'm doing computational biology and doing plenty of coding.

    What got me into programming was a simple intro course in java. The thing that made it really stick was the professor, his enthusiasm was infectious. I'd recommend looking for a professor you know, or someone else knows, and just ask for him to have lunch with your son, talk, and that would be a good launching point for a small intro class if he chooses.

  417. Re:PHP will ruin your mind by Firehed · · Score: 1

    As a PHP programmer, I completely agree. I find it very flexible to do what I need, but I also know what to avoid and what I have to undo (like magic_quotes_gpc). But at the end of the day, if you make it easy for newbies to fire off SQL statements, it's inevitable that plenty of them don't know a damn thing about sanitizing user input. Various languages have done various things to attempt to deal with that, obviously with magic quotes being on the wrong end of the "monumental fuckups" scale.

    It's also the reason I simply don't trust anyone else's code. There are so many newbies doing stupid things that I've no idea where it ended up or whether it could be present in code snippets other people have produced. More work for me, but I'd rather write my own forum knowing that there are no SQL injection holes, login security flaws, and all that junk than use someone else's.

    I use it all the time and love it for what it is. But there's a reason I've always got a half-dozen tabs open on php.net when developing. Is it implode($glue, $pieces) or implode($pieces, $glue)? Oh, wait, either works... but "For consistency with explode(), however, it may be less confusing to use the documented order of arguments". Yes, I agree - that's absolutely retarded. Just like how half the functions are called as function_name() and the other half are functionname(), and on odd occasion, '2' is used instead of 'to' (nl2br, etc).

    Do I wish that PHP6 would simply kill all existing naming and syntax inconsistencies (as well as other stupidities like magic quotes) and stick with one thing? Yes. Will they? For a couple things, but by and large, no.

    However, you really can't beat its documentation and the number of guiding examples. Combine that with the number of prebuilt apps out there make it very easy to pick up. But of course, that also makes it very easy to pick up on bad practices - so I, too, would never recommend it as a first language.

    --
    How are sites slashdotted when nobody reads TFAs?
  418. Raptor by Anonymous Coward · · Score: 0

    When I started college in 2005, they introduced us to programming using a program called Raptor - it's good for teaching the fundamentals of program flow. It's a flow-chart oriented language, and we used it to do simple little programs like converting Farenheit to Celsius and such. It actually highlights the portion of the program it is executing as it runs, so a newbie (like I was at the time) can understand how programs flow, how control statements and loops work, and all that fun stuff. Makes a great visualization to use later on down the line. I went straight from there to assembly programming though...which was probably not the intended path...

  419. Programming Your Kid by Keynan · · Score: 1

    Before starting you project please note the below system requirements:
    The Child must have one of the below libraries installed...
    1. Wants to make video games
    2. Wants to understand the magic box
    3. Likes Problem Solving

    NOTE: option 1 is precursive only. Options 2 or 3 must develop if Project is to succeed.

    Several tutorials exist (see above) describing methods of working with option 1 and will not be discussed here.

    To satisfy option 2: C is the best option. mmmm... pointers....

    To satisfy option 3: import to project Ruby Quiz a library providing several logic challenges to challenge the mind (Good for you too).

    To satisfy option 2 & 3 simultaneously: Work in C++ and implement data sets and algorithms. (I personally LOVED the challenge of AVL Trees and the Quick Sort.
    and implement

    I agree Ruby or Python are more fun to program in. but only after using Java/C/C++ so that they can appreciate how easy every thing becomes

  420. find sombody else to help him. by Anonymous Coward · · Score: 0

    honestly. if you can't explain/convey what you know and/or have learned then you really don't understand the concepts yourself.

    do him a favor and find somebody who does.

  421. Because We Can by llamaspit · · Score: 1

    I started programming later than most, and it was because my music career was not going anywhere, and I was tired of being broke. The reason I chose programming is very much the same reason I chose music: because not a lot of people could do it.

    That's right, it was an ego thing. And I think that a lot of people get into programming, or other sciences, because they are geeks and want to be able to do something "special". Vain, I know, but everyone wants their own skill that they are good at and to be able to impress people.

    There is a downside to this, though. I suspect that many of the people who do it for ego purposes are the same to get into unethical hacking. "Because they can". The rush is addictive, and can lead to trouble. I was fortunate in that respect because I was older and wiser than many when they first start programming.

    But with proper guidance, and if you've taught your kid the difference between right and wrong, stroking the ego goes a long way. And if he or she is an "outcast" it can really give them the boost they need in self esteem.

  422. Experiment with 'real-world' apps by migilligan · · Score: 1

    I learned best by buying books and looking online. The other thing that really helps me is to try developing an actual app (or game). I HATE when you're in classes and they have you make these programs that really do nothing. Give him a practical idea to work towards and see if he can achieve it. Say for example you want him to write a [web] app that catalogs your music collection (just an example). I have played with many different languages so far and am still trying to find my "favorite." I'm a junior in college and know quite a bit I think for my age.

  423. Ball Buster by Spatial · · Score: 1
  424. show him how to do something he cares about by notorious+ninja · · Score: 1

    I started to program because I thought designing websites was sooo cool as a preteen and used to work on my blog layout so it would be better than my friend's :/ So I started doing the template in HTML and progressed to javascript and then PHP and went on from there. Regardless, he needs to find something he really wants to do, whether it's to develop a mod for a game he likes to play or build a game, a website, etc. You can't make someone want to do something :) Like maybe you can help him learn how to make a character that looks like him in his favorite game or some kind of online quiz he can send to his friends or something fun without making him wade through all the boring stuff first. Teaching the basics first is nice but not interesting, so teach him what he needs to know and if he likes it he can always pick it up through other things.

  425. Learning about programming by fadethepolice · · Score: 0

    One of the easiest ways to learn is by setting up your own gaming server. You can get open - source software for the entire setup. The kid wants it to work and is into if they like the game and can find friends who want to play. Many kids get sucked into the "bot" culture and then start writing their own private bots, or alternately beefing up security on their server to prevent bot use. The whole setup is similar to running a commercial web site, but more fun do to the game being present. Many different aspects of IT are involved, from picking out the right hardware for your servers and workstations, writing cutom apps, customizing your server and applications, efficient networking, security. That's how I do it, and it has worked in the past.

  426. my CS Prof's motto by Goeland86 · · Score: 1

    While some people suggest you throw him in one language or another, I don't think that there's a benefit to it. A language is essentially just a syntax, a tool for him to communicate instructions to a computer. What you want him to do is, and I shamelessly quote my CS prof. Jeff Ely on this one, "You need to learn problem solving before anything else."

    Jeff taught us that by using a very simplified C language, teaching only if statements and while loops, and throwing simple problems at us, that could be solved using those. Later he introduces arrays, but in CS1, that's all we ever used. His toolkit used only doubles, strings and character variables. And he got us going with that. Another statement I like from him is "The power is in the mind."

    Do NOT, I repeat, do *NOT* start with syntax. It's boring and completely useless as far as educational purpose goes. It's not what computer science is about. Give him a problem like "write a program that, from a number of pennies, can tell me how many coins of each type I have", and let him figure out the language he wants. The fact that he's researching it will teach him TONS more than anything you could throw on his desk, because, and I speak from being in his shoes not so long ago, he's a teenager. He won't want to do everything you say, so dropping a Python, or C or other language book on his desk is only going to frustrate him. Give him a problem, point him to the appropriate section in the library, and step back until he comes at you with questions.
    Just my $0.02 of information on the matter, as a fresh CS grad.

    --
    ---- I am certain of only one thing : I know nothing else.
  427. The Wisdom of the sands by bugs2squash · · Score: 1

    I thought Antoine de Saint-Exupery's books were a little wierd, but the reason my son learned to read was not to read for its own sake, but to get to the fantastic riches that lay within books.

    If you can forget about the mechanics of programming and find some project that will engage your son and, co-incidentally, need programming to make it come about. I think you will have an eager programmer.

    I suggest something cool and physical, like a rocket altimeter, or an electic field sensitive music synthesizer, or a camera trigger to photograph a glass jar smashing or a light display, or something that balances weirdly with one of those solid state gyroscopes. Something the Mythbusters would be proud to do and your son will enjoy.

    And then find a suitable embedded system to implement them in. Perhaps from silabs.com. They have some good cheap systems that will easily sequence lights or measure bubbling potion fluid levels and are inexpensive enough to blow up from time to time ($20 or so).

    --
    Nullius in verba
  428. Heck, if he plays WoW the lua by Tran · · Score: 2, Interesting

    is perfect - immediate gratification as well as using APIs.

  429. Good heavens no. by LWATCDR · · Score: 1

    "4) On the topic of programmer speak show him Slashdot or Digg or something like that. Programmers have started there own culture in these places that he might be interested in seeing."
    I would say that percentage wise there are very few programmers on here. Way too many wanabes that think they know everything.

    You are better off on programing mailing lists or language forums like the Java forum.
    Too bad there isn't a mentors forum anywhere. I would love a forum where nobody ever said RTFM.

    --
    See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    1. Re:Good heavens no. by AmaDaden · · Score: 1

      You have a good point but I was thinking of it more as a culture thing then a learning to program thing. Programmers tend to be interested in select things. Video games, general technology, science, etc. Slashdot and Digg are not very good for me to learn how to program but they both have introduced me to things that I was interested in because I am a programmer. I learned about Firefox, SCO, Python, and many many other things from Slashdot and Digg. It will not teach him how to program but it will teach him some topics that come up among programmers. For about my first year of reading Slashdot there was at least one story a day that contained a term I did not know.

  430. Lego Mindstorms NXT FTW!!! by soapdog · · Score: 1

    I think the best way is by using a robotics kit such as LEGO Mindstorms. If the kid is son of a geek then he probably already know LEGO blocks. Now, IMHO, new coders need to see physical results of their labor to be hooked, if they code a little line following robot and the thing comes alive, BOOM, they will be hooked. They will move quickly from LABView thingy to NQC and soon they will be very good coders. When we were young and all we had was a text interface with the computer, it was way faster to learn and code useful stuff. These days of ubiquitous network, fancy 3D graphics and bad operating systems, it's no wonder kids don't code anymore, look at the learning curve!!!! now, if you make coding a small thing again, with a pleasant learning curve and results they can show to people in awe such as little robots, you have a recipe for success. my 2 cents

    --
    -- Por mais que eu ande no vale das trevas e da morte, meu PowerMac G4 Não Travará!!!
  431. begin with html by Anonymous Coward · · Score: 0

    html (not a programming language I know) -> javascript -> PHP -> PHP-OOP -> java/python.

    then when he knows programming, learn him why we are programming this way, thus
    ASM -> C/C++
    pointers make much more sense when you know assembly.

    (and no, assembly is not dead! )

  432. Get the sampler pack! by AnomaliesAndrew · · Score: 1

    This is roughly how I went through learning to program starting at around the age of 14...

    Start with HTML... it's very forgiving and is pretty straight forward. It's not exactly a "programming" language since it lacks logic among other things, but it's a good introduction and, lets face it, it's probably never going away.

    Then some basic C programming for shell would be good... get him to build a basic text-based game... or some ASCII stuff. Play around with ANSI colors, get some exposure to how the language interacts with the OS and is presented to the user... You could also get him to make a C program that manipulates an HTML file in a few basic ways, like lower-casing, or applying a font style to loose text... etc...

    Then quickly move onto Java or PHP before you get to any of the more complicated things like references and pointers... once the basics are all there with C's flow control and the basics of variables and functions. Perl is also not a bad place to play around briefly for the regular expressions and exposure to more exotic syntax.

    Java and PHP are EXCELLENT proving grounds to learn just about all of the fundamentals of coding. PHP is a lot more forgiving than Java, but Java is the closest thing to C if he wishes to go back and take in all of the more complex practices in C. The thing about PHP is he'll need to learn pretty accurately how a browser and web server interact, and the stateless nature of HTTP.

    Then learn SQL. MySQL will do to start with... then move onto PostgreSQL or MicrosoftSQL.

    Then I'd say dive into C# .NET or build some GUI apps with GTK so he can experience an event-driven model and get introduced to GUI coding.

    I suggest taking a "tour" of the programming world like this because then you know what you're up against and so much knowledge is transferable from one model or language to another. Jumping around lets you avoid biting off more than you can chew. At least, that worked for me.

    If he gets this far, he should expect his first 4 years of college CSE major coursework to be a minimal distraction from his beer pong competitions.

    --
    Move all sig!
  433. Women by Jonboy+X · · Score: 1

    Teenager, eh? Tell him chicks dig computer programmers.

    Actually, if he buys that, he's probably destined for janitorial service anyway.

    --

    "In a 32-bit world, you're a 2-bit user. You've got your own newsgroup, alt.total.loser." -Weird Al
    1. Re:Women by Anonymous Coward · · Score: 0

      Maybe I'm destined for janitorial service but plenty of chicks digs money, as far as I know, and hence (successful) programmers.

  434. Give him his own hardware. by SanityInAnarchy · · Score: 1

    Everyone else has already pointed out my personal favorites -- Shoes, TryRuby, Squeak, Alice, and so on -- so I'm going to give you a piece of general advice:

    He needs his own computer. Maybe more than one, but at least one, entirely to himself. And you don't get root on it unless he needs help.

    He needs the freedom to be able to make his own mistakes, without it affecting anyone else.

    I would even go one step further -- set up some virtual machines. Yes, he still needs to own the real hardware -- if nothing else, there's a psychological component. But virtual machines means he can deliberately sabotage a system without consequences -- what impact does "sudo rm -rf /" really have on a running environment? Let's find out!

    Oh, and be prepared for him to make entirely different choices than you. Hopefully, he'll at least go beyond C -- point is, you'll know you've done your job when he disagrees with you on something -- and he's right.

    --
    Don't thank God, thank a doctor!
  435. Peace On Earth by laejoh · · Score: 1

    Precious bodily fluids if I recall correctly!

    Women uh... women sense my power and they seek the life essence. I, uh... I do not avoid women,

    But I... I do deny them my essence.

  436. It's not the method, it's the goal by A440Hz · · Score: 1

    I learned C in a 400-level computer graphics class in college. I knew that I wanted to learn C and that I wanted to learn more about graphics.

    Have the kid pursue a goal that he's interested in and find a tool to solve the problem/reach the goal. It could be in Excel and VB (for learning purposes! Geesh). It could be Python scripting for Corel's Paint Shop Pro. There are all kinds of tools for all kinds of tasks. It could also be programming a STAMP or a PIC microcontroller kit from an electronics hobby shop. Or MindStorm. Have the programming be a TOOL for solving a cool problem.

  437. Re:PHP will ruin your mind by Hannes2000 · · Score: 1

    To be quite honest, I am terribly wrong.

    There, fixed that for you.

    why do people always recommend PHP at just every fscking occasion, admitting that it's "somewhat ok" and "will be better soon"? heck, if there are other languages around that are better than "somewhat ok" and are so right now, why (the hell) should one pick PHP? And why do you consider a language which looks like C a good language to learn programming with? Not that it's particularly bad, but even nowadays babys don't pop out with a preinstalled sense for C-like syntax.

  438. Web Programming by zuggy40 · · Score: 1

    I would suggest starting with web programming, specifically html, css and php. This gives a wide skill set, php is based off C so it makes the skill set easy to transfer, he'll learn some basic server administration and it gives an instant gratification that you don't always get with other programming languages.

  439. Maybe just let him be? by malevolentjelly · · Score: 1

    For some people, programming is picked up like a passion- for others, it is not. Don't get yourself to thinking that someone is somehow invalid or stupid if they want to live their life as say a business or english major. These are people who have just as much place in the world- do not let an engineering superiority complex tarnish your son's teen years. Not every boy needs to be doomed to the family coal mine.

    I personally am an example of someone whose father, older siblings, etc. are all programmers and much of my family is somehow related to IT- but I'm interested in sociology. What this has done for me is given me a very in depth understanding of technology, but a much stronger understanding of the people who use it and why they use it. Is this really invalid? Maybe your son can take advantage of his experience with a father whose so technology-oriented and apply it in his life elsewhere?

    If it's a question merely of which technology your child needs to learn, that's different. You're not going to like this- but I'd recommend starting him off in the well documented and supported world of Apple Cocoa or Microsoft .NET, where a little bit of code can become brilliantly powerful in good time. The unix world of development is much more discrete, so it's best to learn on a more contained environment before diving in- however, that doesn't necessarily discount Java or C#/Mono in linux as good starter languages. I am just not familiar.

  440. Forget everything a geek might tell you by StaticEngine · · Score: 1

    Don't point your child at a language or a system or a technology. You'll just bore them.

    Instead, ask them what they want to accomplish, or what problem they want to solve. Don't even frame this in a technological sense. It's not "Do you want to build a robot that sorts DVDs?", it's "Do you want to have your DVDs automatically organized?"

    Then, once they have something they're really interested in accomplishing, let them ask questions, and point them in the right direction to figure out the answers. Don't answer the questions yourself, even if you know the answers. "Oh, you think you need to control a robot, huh? How do other people control robots? Have you looked that up?" Check in on their progress every day and reward their effort, not their accomplishments.

    Yes, it will be more painful, but they'll learn far more valuable skills and become much more independant and focused. Then it won't matter if they picked C++ or Python or SNOBOL, they'll have picked the best solution for them to accomplish their goals, and they'll have learned a wide variety of valuable skills, not simply "programming".

  441. Re:PHP will ruin your mind by cyberneurology · · Score: 1

    I don't *blame* Perl, because I happen to like it as a language.

    I also agree with you that PHP5's OOP was a mistake (actually, I believe that OOP itself is a mistake, but that's beside the point), that PEAR is crap because PHP makes is way too easy to program like crap (I enforce strict guidelines on how PHP in my projects is to be written), and that it should not be taught as a first language (I learned PHP after I learned C, so I had some structure and good programming practices drilled into me)

    I have several complaints about PHP and especially with the direction the language is taking (which is why I intentionally ignored some of the comments you listed), so much so that I may even consider using Java and JSTL for web programming. (Ow! I still feel pain every time I say that.)

    To directly address the Subject of this particular comment thread, PHP will only ruin your mind if you don't already have a solid grasp of what good programming is (and when you do, it might give you enough reason to NOT use PHP).

  442. Teaching Programming by TheCycoONE · · Score: 1

    How to best teach a person to program depends a great deal on the person. I myself learned on a Commodore 64 by copying BASIC verbatum from books starting when I was 4, and moving on to experiment and teach myself more and more as I grew older until I went to university and got a computer science degree.

    However I have some experience teaching others as the helpful kid in the class who knew more than the teacher in highschool and as a Teaching Assistant at the university. Not everyone is motivated enough to pick up the Java API or C++ STL Reference and learn the language. Different people find different things satisfying, and you can figure that out fairly quickly through trial and error. I would suggest starting with a console hello world! If they think it's cool than stick with the interpreted console environment, (Python is probably a good choice, I've started people on C with mixed results) and move on to something with variables, flow control, and user input like a number guessing game. If they look at you blankly and ask for graphics maybe a scripting language for a game like RPG Maker or Aurora (Neverwinter Nights) may be a better place to start.

    In general I'd say the key is don't push them; be someone they can come to for questions and sit with them on and off to be a guinea pig. If you have any more specific questions, just ask.

  443. Not enough information by muridae · · Score: 1
    You didn't provide one vital piece of information, why is your son interested in computer programming?

    There is a big difference between kernel hacking, ray-traced graphics, video game graphics, sound synthesis, AI, web 2.0 interaction, robotics, and creating his own programming language. Find a project that he thinks is interesting, and then help him create it. Start small.

    When I started with computers, I didn't have anyone to learn from or even a good library of books. I thought computers were useful, but really didn't care that you could create a database of 10 million entries with one, as no one explained the interesting data structures that could make it faster. Then, someone showed me how to create simple graphics with the Apple ][e. It's been fun ever since.

  444. Re:PHP will ruin your mind by Anonymous Coward · · Score: 0

    Wow, php is soooo terrible and it corrupts minds. Why are you still using drupal for your homepage? You deserve much better than that? :p

  445. Web pages are actually a good start by FingerSoup · · Score: 1

    Reason being, you can teach the person writing it, how files are parsed, which gives some groundwork in basic I/O down the line.

    Further, if your teenager is into blogging, etc... You can have them feed off that aspect... This webpage is your blog. It is the ultimate in customization. Unfortunately you need to write it yourself. Add CSS when they get bored of plain HTML layout stuff.

    Of course, when he gets sick of editing raw HTML to add posts, you can guide them into PHP/Perl/Ruby/.NET or whatever your fancy is. I'd stick to something more basic, like using PHP, and start off simple, like includes for bringing text files in.

    Once they get bored of that, work your way into databases. get them to make an administration page so they can type in things directly into the browser, and have it appear on the page. Basically, it's a place where you can start REALLY SIMPLE, get immediate gratification with the results, and build off projects to infinite degrees.

    I've never been one to coddle kids, especially teenagers. Let them have a blog. Just make sure you teach them how to be safe about it. Explain your rules for privacy, and why they're important. Don't just shelter them from all things evil... They will have to learn how to deal when you're not around. Think of giving them this blog space as learning how to cross the street. Likewise, give them something interesting to do, that will challenge them, to push their limits. Not too challenging as you don't want to scare them away. Male it challenging enough to make learning worthwhile for them...

    Really, the language they learn isn't that important, if it lets them achieve results. I started sphagetti-coding BASIC on a Tandy CoCo. In High school we used a language called Turing. I made a hangman game and a Connect 4 game in my grade 12 year. Last I heard, people still play that connect 4 game at my high school - almost 10 years later. I spent hours on it, and the more people that tried it out, and enjoyed it, the more I worked on it. That led to College, and learning C/C++... As long as you work up to it, keep challenging them at a reasonable rate, you'll give your teen a good grasp on programming. When your teen comes up to you for help and hands you a pile of unformatted code, tell them that you can't read it, and show them how to format to make it easier to read. Get them working first, however you can, then show them how to do it right.

    1. Re:Web pages are actually a good start by Moraelin · · Score: 1

      Really, the language they learn isn't that important, if it lets them achieve results. I started sphagetti-coding BASIC on a Tandy CoCo. In High school we used a language called Turing. I made a hangman game and a Connect 4 game in my grade 12 year. Last I heard, people still play that connect 4 game at my high school - almost 10 years later. I spent hours on it, and the more people that tried it out, and enjoyed it, the more I worked on it.

      Well, IMHO you seem to illustrate just my point: start with a bloody game, not with PHP and databases. (It was years until _I_ had any interest more serious than games, and that was because Prolog seemed like a fascinating insight into logic and thought at the time.) And more importantly: you had instant bragging rights there. Even more importantly: bragging rights for _programming_, not for something entirely orthogonal like having some cute text on a blog. That's what motivates people to keep programming.

      Blogs are the entirely wrong approach IMHO:

      1. Most normal people get tired of blogging fast. It's a minority who thinks that blogging is the alpha and omega, and OMG it makes them more important than all kinds of press combined. Normal people post a few posts, get bored, and give up. So chances are that that teenager will get bored and unmotivated there long before you get to guide him into PHP.

      2. There's no rational reason to go that route. Blogs have been done before and done better. If I want a more customizable blog, I don't edit HTML and CSS myself, much less get into PHP and databases just for it. I just pick one of the sites which already offer what I need. And that's from someone who's already into programming. If I were just starting? Why on Earth would I want to learn programming just for _that_?

      3. There are no bragging rights to be had for the _programming_ part of it. As I was saying, it's been done before and done better. You'd have to work really hard to end up with a site that's even up to par, and a hell of a lot more where someone would even notice that yours is better in any way. The short and easy way to fame and glory there is just to post something interesting, not the programming part. It channels the motivation in an entirely orthogonal direction.

      --
      A polar bear is a cartesian bear after a coordinate transform.
    2. Re:Web pages are actually a good start by FingerSoup · · Score: 1

      Speaking as someone who works with teenagers, Instant gratification is the driving force. If your kid likes building web pages - let him build web pages. It has a low entry level of knowledge, and can be expanded to infinite levels.

      Making simple games is also a good option (as I mentioned that quote). Modding a game without understanding fundamentals of programming logic is an education in futility.

      Basically, take whatever your kid is interested in, start at an easy point, with a way to give instant gratification (C would not be a good choice for most beginners), then have them build their skills at their own pace, offering them challenges along the way to get them to the point of doing it right. If web pages are it, then web pages are it. Flash is a good choice for teaching game programming, because it writes the code itself for simple stuff, but you have to understand the code to do more complex tasks...

      Whoever mentioned that OpenGL would be a good start, obviously was either a very smart kid when they did it themselves, or they don't remember what it was like to learn programming as a teenager.

  446. teen help by d4ktu · · Score: 1

    I'm a 19 year old comp sci major going into my sophomore year in college. I took 3 years of computer courses at my high school that really helped me develop programming skills. I learned C++ first, then Java; I thought Java was easier to program on, but you might want to expose C++ to him first. Here is the syllabus for my C++ high school class: http://teacher.uscsd.k12.pa.us/ollendyke//ProgLang1.html [k12.pa.us] And my Java: http://teacher.uscsd.k12.pa.us/ollendyke//ProgLang2.html [k12.pa.us] Each section explains the topic pretty well, then gives 3-5 medium difficulty programs to write. This taught me up to OOP and got me very well prepared for college. As far as sparking his interest and getting him to want to program, I did it for the career choice. Everyone needs programmers and I want to see the dollar signs. You can also spark his hacker interest by hacking a cell phone, ipod, or xbox if he has one. Install linux on it, mod it, etc. Hope this helped.

  447. Irrelevant by SuperKendall · · Score: 1

    And do you think the loose typing and automatic typecasting is a plus or a negative, in terms of first languages to learn?

    I don't think that matters at all. I think what matters most in a fist language is immediacy of results and power of expression, which Javascript in a browser has in spades over a "real" language or writing a desktop app. Plus he can put it up on the web to show off to friends.

    Given the whole Power thing I'd also start him off with one of the better Javascript UI frameworks so he can have cooler looking stuff quicker. probably any would do.

    If he takes to Javascript desktop development could follow.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  448. Being a teenager who like programming myself... by Mouldy · · Score: 1

    I'd suggest web programming. That's what got me into it, I know that it has all been done before, but what is your kid interested into? For me at the time, I liked GTA, so I made a fan site. Made a news system, expanded it so that people could post comments, expanded it so it had a simple user system, user privileges, admin panel etc. It just grew as my knowledge did. While it had been done before, there were other bigger GTA fan sites, there were news systems and downloads systems I could have used, I found it more fun to make my own. Why are you asking us what your kid is interested in? Ask him :p

  449. Some of the Code Jam programming contest problems by Anonymous Coward · · Score: 0

    Many of the CodeJam programming contest problems are interesting enough to get him hooked. There many other problems out there that may inspire him.

    However, the bottom line (IMHO) is that programming is a task not every person will enjoy doing (even if problems are interesting enough, which does not happen very often).

    My kids did not get a lot of interest in programming after all, so very likely you better forget about anything I said.

  450. iPhone or Touch - for real by SuperKendall · · Score: 1

    You know what I currently consider to be the best starting development area for a kid? The iPhone (or Touch). Seriously, nothing else will get you such impressive looking stuff you can show off so quickly, with things that kids like such as easy access to animation and a good GUI builder. The language is easy to learn to start, and the frameworks for the phone/Touch are paired down a bit from the Mac frmaeworks and really well thought out but not so daunting is scope. It's even a great way to ease into 3D development with a lightweight OpenGL.

    Being a developer is only $99 and that's a cheap price to pay to get someone hooked on programming.

    My second choice would be Javascript along with some kind of GUI framework, for similar reasons - really easy to get into, and write powerful cool looking stuff that he/she could show off to friends. The iPhone/Touch would be more portable though.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  451. Just Don't... by cruachan · · Score: 1

    Don't, really, just don't.

    You yourself should know that coding is an aptitude - if your kid wants to learn how to code then they will despite you, if they don't then no amount 'encouragement' will produce anything other than resentment.

    Make sure your motive isn't 'I want to encourage my kid to code so they can appreciate what a clever and cool guy I am'. Your keenness to show off your kernal hacking skillz suggest there might be just a whisper of this in there. Be honest with yourself and your motives first.

    Right, that said there's no reason why if your kid does have aptitude then you shouldn't facilitate things. Myself I have two kids of mid to late teen years. Both are completely computer user literate and virtually live on the net with IM, Social Networking, Gaming etc. Both have unrestricted access to their own PCs (in the home office tho - don't believe in PCs in kids bedrooms). For both of them I've dangled the interesting stuff where they can see it so they can pick it if they want too - interesting stuff is access to coding software, graphics software, game moding software, their own domain with complete access, pointers to interesting sites - slashdot and others, pointers to articles good articles and videos about tech, gadgets and coding etc. Nothing heavyhanded, I just dangle it for the picking.

    The result is that my son just isn't interested. Sure he knows it's there but he's heading off to uni to study Earth Sciences and tech to him is a tool. My daughter otoh has the apptitude - she likes seeing how things work, likes taking stuff apart and tweaking it, and when I dangle stuff picks it up and runs with the bits she likes. It's unclear at the moment where her actual interests really lie - she does graphics to skin her social networking sites, writes bits of code to tweak toys and widgets, and likes modelling 3D objects a lot, but I figure what she does is up to her. If she wants to write more serious code then I'll help her and make the best tools for what she wants to do available, or more serious graphics then I'll make sure she has the software and knows where to go, but she's in the driving seat.

    Oh and interesting bonus is my daughter has decided being a Geekgirl is cool and a great way to be an individual at school. Oestregen earrings for christmas from Fractalspin were an absolute hit!

  452. keep it high-level by TacoTaster · · Score: 1

    Yeah, let him tinker with a high-level language. I would think a younger person would get bored with something low-level because they couldn't do anything "useful" with it. I know it became interesting for me when I reached the point where I realized I could write something that I found useful. That was VB6 then, I'd guess some sort of web technology would be the better counterpart these days.

  453. Processing by Squiggle · · Score: 1

    If I was going to encourage someone to start programming today I'd probably show them Processing:
    http://processing.org/
    From their site: "Processing is an open source programming language and environment for people who want to program images, animation, and interactions. It is used by students, artists, designers, researchers, and hobbyists for learning, prototyping, and production. It is created to teach fundamentals of computer programming within a visual context and to serve as a software sketchbook and professional production tool. Processing is an alternative to proprietary software tools in the same domain."

    The other nice thing is that Processing is basically just a Java library so it is simple to move beyond simple visualizations, etc and do more serious Java programming.

    I've been having great fun with it, I'm able to do professional work with it (using Eclipse as an IDE, etc) and there is a growing and quite vibrant community of artists and coders developing around it.

    Some other possibilities:

    - Python-based text adventure as a first (big) program.

    - Python and PyGame based game/app for the OLPC

    --
    Complexity Happens
  454. let him get motivated by kkc01 · · Score: 1

    There are so many programming languages used for so many purposes that choosing a particular language and forcing it down the throat of the guy may not be a good idea. Nobody would want them to be forced onto doing something they are not interested in. The best way to make him learn programming would be maybe ask him to take few computer courses in schools, get him interested/motivated in computer programs, help him identify what he would like to do with his computer and hope that whatever language he programs in it would be for open source.

  455. Scratch from MIT by Anonymous Coward · · Score: 0

    scratch.mit.edu

    I hope this has already been suggested, but I did not check.

    Scratch is a programming tool for kids. It picks up where Logo left off. You use normal programming construct like control blocks and variables, but everything is drag and drop.

    The easiest things to make with Scratch are little interactive games and short animated stories. Both very rewarding things for beginning programmers, with immediate visual feedback.

  456. Followup plan to really get him moving by SuperKendall · · Score: 1

    As a followup to my last post, I thought of an ever better way to get the ball rolling - have him develop for the simulator first. It's free to download the dev kit with simulator. Then say, if he can make something that impresses you enough you'll buy a Touch (or iPhone) and a license to develop. Then he has some motivation to really explore programming in depth enough to really learn something.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  457. Is teaching him programming a good idea? by Anonymous Coward · · Score: 0

    No matter what, he's competing with low-wage offshore workers. The money is in law, medicine, finance - anything that can't be moved offshore easily. Do you really want to orient him to a profession where he's competing with people making $10/hr without benefits?

  458. Same boat.. by mobsmf · · Score: 1

    I am actually in the same boat, however, my son is only 10! He want's to program because it's a big part of what I do.. but, while building stored procedure to traverse billions of records in a database is fun and challenging for me, it's going to bore him to tears.

    I've thought about C, but, I think that's a bit to complex for a 10 year old. I'm really excited about Vala, but again, maybe thats a bit much for him still? (again, I want to KEEP him interested) Perl, eh.. easier, but I still fear it wont be interesting enough.

    Soo.. my thought. Unreal Tournament. Once you understand program flow, most other languages will become easier to understand. Maybe he gets good at building new weapons, new game types, whatever.. and later says to himself, man, I really wish I had a tool that did this or that. Someone without any background, might not even go there.. but with even a little background he may say, how tough can it be?

    anyway.. just my $.02

  459. The same way you get a teenager to do anything... by smithmc · · Score: 1

    Tell him that he'd better not ever do it, and that if you catch him doing it, he's grounded for a year.

    --
    Downmodding is the refuge of the weak. Don't downmod, make a better argument!
  460. Not ImageMagick... use GIMP by Anonymous Coward · · Score: 0

    I think it depends upon interest. Scheme may be a good answer. Scheme is used to extend GIMP. So if you want to see various forms of pretty pictures, GIMP is the way to go. Logo would be better, but that is harder top find on a Linux distro.

  461. web development all the way by Anonymous Coward · · Score: 0

    I know, most internet languages are "bad"...
    Here's the thing, though:
    Web development is fast and easy to start learning, fun to do, and exposes a developer to many aspects of programing.
    C is great, Java is useful, but PHP or C# is quick and easy to learn. If you want your child to write code, give them something they can see quick results with small amounts of effort at first.
    Start with the web to gain the interest, then move on to lower-level languages once the passion is there and the ability to grasp the advanced concepts has been primed.

  462. Evil way... by Anonymous Coward · · Score: 0

    1) refuse to buy games
    2) tell that only way to get games is to build them yourself
    3) provide compilers :)

  463. MIT's Sketch by Anonymous Coward · · Score: 0

    I taught my son to use "sketch" http://sketch.mit.edu which has him understanding the concepts used in programming. I even wrote a few games myself.

  464. JavaScript by Anonymous Coward · · Score: 0

    I'm not sure if this is the optimal approach, but when I was a seventh grader and already had knowledge of HTML, I taught myself JavaScript out of the Wrox book. As a first programming language it's simple -- you don't even have to worry about compiling, your changes take effect instantly -- and it's fun, you can create things that you can share with friends very easily. And it'll teach you all the basics of programming.

    I went on to learn C++, PHP, SQL, Java and C#.NET/ASP, in that order, after that, and ended up with a great job every summer starting freshman year of high school (it's nice to get paid a whole lot more than your peers for a desk job).

  465. I disagree! by Xtifr · · Score: 1

    I disagree! I learned $crusty_old_language back when computers had six bits and were lucky to get 'em, and I see no reason why anyone else should benefit from the research and development that's taken place in the last forty years. A pox on all these $trendy_new_language advocates who want to replace my ancient $crusty_old_language-based systems with something that's actually readable and maintainable! I say, force the kids to start with $crusty_old_language like I did, and hopefully most of them will be discouraged from entering the field and competing with my out-of-date skills, and the few that actually manage to persevere will be so traumatized by the pain of learning $crusty_old_language that they'll be completely insane and will want to help me maintain my stale, fragile, unreadable pride-and-joy. Now, where'd I put that deck of punch cards?...

  466. Fun Programming by Anonymous Coward · · Score: 0

    I remember punching in codes out of the back of Compute's Gazette, tring to get games to run on my C64... I remember writing an artillary game with my neighbor friend. What I remember most abou tmy houth was doing programs that were siply 'fun'. I would suggest tring to make some sort of simple game together, then moving into more and more complex things.

  467. K&R by Anonymous Coward · · Score: 0

    Give him K&R ;)

  468. From a teen... by Codex_of_Wisdom · · Score: 1

    I'm going into 12th grade, so I'll inject my opinion and help:
    First off, to everyone else- the zillions of comments are helpful to me as well.
    Now, I started with a 5th grade teacher who taught us HTML, so I got lucky in that sense, and all the adults around me are computer nerds (my godfather works for LSI). I got into computers early, and now I'm trying to learn to program.
    I started with the "Teach Yourself in 24 Hours" books (I tried both Visual Basic and C). No. They are dull and cannot capture attention. Few books are useful for me, the "C++ for Dummies" I'm trying now isn't too bad, but it is hard to get motivated learning from a dull book for teens (even those of us who like to read).
    Long have I wished for SOMEONE to teach me, not someTHING. Now, if you find a good book, that's one thing, but it's also very rare. So I recomend teaching him one-on-one. Even if you teach out of a book, you can make it more interesting, and you can change the book's teaching to fit his likes and styles.
    The point is, the best way for today's teens to learn something abstract like languages is from another person. Everybody learns differently, and a book cannot compensate. Nor can it answer specific questions ("so, what does this '#include' thing actually do?").

    I just thought you'd like an opinion from somebody who understands the situation.

  469. How I started program by Doug52392 · · Score: 1

    I got my first computer when I was about 5 years old (a Dell XPS D333, I actually still have it somewhere). I loved it, I would play those educational games on it, then I started using the Internet. As I got older (around 9-10 years old), I wanted to know how this fascinating machine worked. So I started reading about computers, how they worked, the operating system manuals, etc.

    Around this time, when I was about 12, my grandmother, being a huge packrat who can't throw anything out, had been given 2 very old IBM PS/2 PCs that her office was about to throw out. These computers ran Windows for Workgroups 3.11. We would go to my grandmother's house every weekend, so I spent a lot of time on this old computer. Then I found a very interesting program, qbasic.exe, QuickBASIC, as I would later learn. I had no idea what it did, so I pressed the HELP button and read the entire help menu. So I started playing with it, entering commands and codes that I learned in the HELP Menu.

    Soon I had made dozens of programs, including a program that played music, a program that had a paint-like drawing board, and dozens of separate misc programs. Then I thought "how can I do this on my home PC?". So I talked my mom into buying me some programming books, which included a few BASIC-based programming environments, and learned even more.

    Now I'm 16, I know how to program in BASIC, Visual Basic, C++, PHP, LUA, and some C, and use Linux.

  470. Re:PHP will ruin your mind by CrazyTalk · · Score: 1

    Could be worse - my first programming language was APL (yes, THAT APL). Believe it or not, that was the programming language that my high school tought back in 1979.

  471. All it took and I was hooked right in by Anonymous Coward · · Score: 0

    The two programs that got me interested in programming on the Apple II:

    10 PRINT "I AM THE BEST"
    20 GOTO 10

    And something like...

    10 HGR2
    20 X = 0
    30 HPLOT X,10 to X,100
    40 X = X + 1
    50 IF X 100 THEN GOTO 30

  472. Start him out on an Atari 800/C64 8-bit by AxMstrLP · · Score: 1

    Maybe it sounds cheesy to us, but between my own kids and my nieces and nephews, I find they're totally infatuated with my Atari 130XE. BASIC obviously has its flaws, but BASIC serves its purpose well: BEGINNERS all purpose.... IMHO, your teenager could learn the fundamentals of programming and logic. Learn a little history, gain an appreciation for the difference between 128K and 4GB, etc. And if you can structure code well in BASIC, you're set for life! :) As a side benefit, you could also have fun playing some vintage games when you're not hacking away...

  473. Drop linux, show games by Dunge · · Score: 0

    Drop linux, show graphical games

  474. How I got started... by Cr4wford · · Score: 1

    Well, I'm not a programmer, or a *nix kernel hacker, just a front-end web developer and designer. I got into computers from an early age because my dad showed me video games on them... then, when I was 11, I wanted to create a website for a StarCraft gaming clan (lollums). It was really cool creating something like that, and I enjoyed the challenge.

    I messed around with that for a while, but I really started to get into it when I was 16 and couldn't find a job. I thought that maybe I should try doing freelance web design.

    Now at 19 I'm pretty much financially self sufficient, I work at an ad agency and freelance on the side, and am also in school. Tell your son that he could be making $50/hr freelancing during college. It's rewarding and challenging, and it will sure beat his friends' restaurant jobs.

    --
    Freelance Web Designer - Portfolio
  475. Re:This was designed by a professor for this purpo by Shemmie · · Score: 1

    Someone please mod parent up - Robocode was designed specifically to get younger people into coding.

    I work at a University, and we often get classes of 14-16 yo's in to "sample the University experience". We sit them down to do a little coding, using Robocode. A quick tutorial on the basics of coding in Java (Robocode's set up to provide the basic commands of Logo, but with the ability to do much more complex coding as well - some of the Robot AI out there is very impressive.

    It's graphical, it's robots killing each other, and it's teaching the fundamentals of programming and OO.

    The Robocode class always gets high marks from the youngsters for the fun value.

  476. only on /. by j01123 · · Score: 1

    "I'm in a bit of a bind. My young teenage son is starting to get curious about ____, and in particular, ____.

    Only on /. would those blanks be filled in with the words "computers" and "programming".

  477. Don't focus too close by marcus · · Score: 1

    It's not just about readability. Take a look at this.

    It is quite readable, logical, easy to follow. It is still an abominable example of really bad/broken code. Especially since it is presented as an example of good code.

    --
    Good judgement comes from experience, and experience comes from bad judgement.
    - W. Wriston, former Citibank CEO
  478. Humble Opinion by Anonymous Coward · · Score: 0

    Hi...I'm a Senior Computer Engineering Major at Purdue University. It would help if I knew your son's age but assuming he's at least in grade 5, I'd recommend computer books which teach programming as part of an activity, not as the primary objective. For e.g., get him a book on implementing his own game, or a book that teaches AI, or web-spidering. I do not believe that any one language is better suited for beginning programming. Heck, I learned to program in C, moved onto C++, a little x86 asm and then to php/mysql. Following the books will quell the discussion/debate on choosing languages anyway; he'll just follow what the books demand.

    Another idea would be to bring in some sense of goal-setting. Once he's through with a few simple projects(will take a few months, maybe up to a year), he'd have developed inflections toward one or another programming language; then encourage him to participate in "USA Computing Olympiad" Merely perusing problem sets and practicing is all the impetus you need give him to help him "fly away from the nest".

    Hope this helps.
    Gud luck to you and your son.
    Agent Smash.

  479. Lego Mindstorms NXT by Anonymous Coward · · Score: 0

    Though it isn't using nix tools, lego can be fun to play with, you can use the basic programming tool then move on to explicit programming.

    It is great because you can see the results, you can use interested extensions, such as an ir camera, bluetooth, proximity detecter, etc, or you can build your own...

    anyways, they are designed for beginners, but i am at least an intermediate programmer and I have a lot of fun with it.

  480. Language & OS not so important for beginners by xtrafe · · Score: 1

    I have no idea how your son is, but for me, the jump was when I figured that I might be able to make something I was interested in by coding. Actually, I think this happened to me several times, first with logo when I was about 6, then text games in basic, hacking bbs'es, and later on OO, higher level languages to produce games, lower level languages to write drivers, etc.

    Agewise, I'm a little in-between with regards to your post: I'm in university, but old enough to have used a bbs. Sometimes I wonder how I would have gotten interested in many aspects of development, seeing as there's a lot more layers of abstraction to dig down through than there used to be. Its not like you can just drop some inline assembly into your c program and start writing graphics drivers anymore. In many coding applications, learning curve to producing something 'professional' looking is considerably longer than it used to be, and I'd imagine that this would be the biggest challenge to motivation.

    One immediate upside I can think of, though, is that a lot of games now come with development toolkits, and working with these can involve playing with fairly advanced scripting languages. Try Neverwinter Nights, perhaps. This might be a place to start if your son is into games.

    Or maybe he's into websites, or maybe he's into business concepts, or maybe he's into visual effects, or math, or whatever. The point is that he'll start teaching himself if he thinks coding can help him accomplish something he's interested in.

    We fetishize coding & languages because we want to solve problems & work efficiently, but coding will probably always be a means to an ends... So far as I know there are no art galleries hanging up beautiful segments of code on the walls. So if you start geeking out on the advantages of linux, shell scripts, OO, GOF patterns, pointers, automatic garbage collection, this language vs. that, etc., there's a good shot you'll lose him.

    If he thinks coding will help him create something cool, he'll learn to code. Once he starts this process, then he'll come to you for information when he needs it, and you'll have a lot to offer. At that point you should give him only enough information so that he doesn't get stuck, and generally figures things out by himself.

  481. OLPC by mrboyd · · Score: 1
    I am surprised no one managed to mention OLPC.

    It's purpose is that. Teach a kid how to use a computer and eventually do some programming, it's there right on the website:

    We will support five programming environments on the laptop: (1) Python, from which we have built our user interface and our activity model; (2) Javascript for browser-based scripting; (3) Csound, a programmable music and audio environment; (4) Squeak, a version of Smalltalk embedded into a media-rich authoring environment; and (5) Logo. We will also provide some support for Java and Flash.

    You may have to relocate in a bario outside of Rio to get one though. :)

  482. Re:PHP will ruin your mind by Anonymous Coward · · Score: 0

    I started learning PHP when I was 17 years old because I had a serious need to manipulate the Internet. I had trouble in my ADD youth trying to learn C/Java even though I already knew I wanted to learn to program... I couldn't learn something that didn't have immediate pride-based benefits.

    As soon as I got my hands on a database, and a web hosting solution, I went crazy! I created all sorts of (yes, horrible programming solutions) amazing features and experiences that I could *immediately* share with my friends.

    Whether you think Python, Ruby, PHP, or whatever is the *best* language, I think that for teenagers and for anyone really, learning how to OWN and MANIPULATE the INTERNET is the most valuable tech skill you can have in this day and age. It puts you in the position of CREATOR, and gives you the biggest reach you could possibly imagine to share your creations.

    Making a video game is not going to compete, making a software program or hacking a video game is not going to compete, but teach him how to build dynamic database driven websites and he could be a billionaire before he's 18.

    To be honest I started on a C64 with my dad when I was about 8, but it wasn't until 16 that I actually wrote a functional line of code for myself.

    Sara/28/Female

  483. Ideas by tthomas48 · · Score: 1

    You might try working through an OpenSocial plugin. It would be something that he and his peers would understand. It's fairly simple, broken up into bite-sized pieces, and it teaches the basics of asynchronous/event driven programming, javascript, and the DOM. While it's certainly not hard-core programming, I think it lives somewhat nicely in between useless toy programming and the real world.

    Word of warning. I'd steer clear of the Facebook API. It has a flow that could really frustrate and turn off someone trying to do something simple.

  484. sls1j by sls1j · · Score: 1

    The best way to encourage programming is be excited about it yourself. I'll warn you against trying to push your children into it though. They will resist and hate it. Instead, I assume your already excited about programming. Share your excitement with them. Look for cool stuff to program /*little self promotion -- http://bee-eee.com/ */ Tell them about your successes. Show them the stuff your think is cool. When they show interest I'd set them up with C# Express as I think it's the quickest way for them to do something beyond printing "Hello World" on the screen. Have fun, and don't require them but inspire them. Trust me if your excited about it they will in time show interest.

    1. Re:sls1j by FreeFull · · Score: 1

      C#? On Linux/BSD/Whatever *nix he is running?

      --
      No ascii art.
  485. Modding Games by Slugster · · Score: 1

    Modding games is probably the easiest way to get into programming, and it has a very quick level of gratification which keeps kids interested. It starts out as modeling/skinning, and can extend to AI and complete modding, which can involve quite a bit of typing.

    It's tempting to want to expose kids to "real programming" right off, but quite frankly, anything they could quickly do on their own isn't that interesting--and it's debatable if it's even that wise of a prospective career choice nowadays.

    If they have the desire, then Java is free and a literal layout manager is easy to understand.... -but when I was in school, I remember most people reacting most positively to Visual Basic classes, I think because of the drag & drop environment--it was easiest to turn out a program that did something that they could actually imagine being useful. ASM courses (with their file-copying-program and file-batch renaming-program assignments) did not seem to get the same level of enthusiasm.

    And I dare say,,,, more people got jobs doing something closer to Visual Basic than they did doing ASM.......
    ~

  486. As a teenager with some interest in programming by pxc · · Score: 1

    I would advise you to give him interesting or rewarding problems to solve. If it's programming, once he learns the basic syntax, have him tackle classic logic puzzles like Towers of Hanoi or something similar.

    There was a problem I remember from my computer science class a couple of years ago (I took all of the CS courses my high school had to offer my freshman and sophomore years) where you started in one corner of a grid and had to reach the opposite corner. In between were obstacles and bonus squares of different numeric values called "cookies". The assignment was to write the code to create the grid and then navigate it (the GUI code was taken care of, thankfully). That was one of my favorite assignments.

    For general technical knowledge, you could always do what my dad did to me: he offered me a broken laptop. I didn't have a laptop at the time (and I don't have one anymore since that one really broke recently), and he offered me an old ThinkPad T22 (Pentium III class, this was in 2005). What was wrong with it? The BIOS had something wrong with it that messed with the power management features. The result is that Windows locked up whenever you unplugged it from the AC adapter. So he threw Xandros at me and let me have it. After that, it wasn't long before I started downloading every distribution I could get my hands on.

  487. Drop your biases by Anonymous Coward · · Score: 0

    to the OP: Let go of your own geeky biases and get a feel for what interests your son. I love programming, but only games and visuals. If at 13 I thought that what I learned would lead to programming information management, protocols and other boring shit like that, I would have stopped learning then and there.

    Back in yesteryear, kids' first exposure to programming was via visual language tools like 'LOGO' where you learned the basics that a few sequential commands resulted in the "turtle" doing A, B, C, and drawing lines, etc.

    Next was something compilerless like BASIC where all you had to do was type 'RUN' and see "Hello World".

    I would recommend Flash actually. There's way more "pay off" and fun to learning programming through that environment and your sun can contribute to the wonderful crapfest that is NewGrounds. ;-)

  488. Starting out by Anonymous Coward · · Score: 0

    I started programming with TI-BASIC in 7th grade because I learned that it helped me solve repetitive problems very quickly (even though after accounting the time it took me to write it and the understanding of the process I needed it ended up being the same education in a different form).

    Then everyone who learned TI-BASIC started programming TI-83+ assembly, and I never got around to learning that. Now two of three of them are in MIT.

    I took AP Computer Science this past year and liked it, I hadn't programmed anything for so long. It was in Java, and we learned pretty much only the basics, but that's a very solid foundation for just about any OO language...

    1. If your kid is truly interested, give him documentation and help him out when he gets stuck. A prep book for the APCS test might be documentation enough.
    2. Documentation also includes other people's code. The guys who are at MIT never took a computer class but learned from copying others' code.
    3. If he gets stuck or disinterested write a simple program that does something awesome like flash colors repetitively or a shoot cannonballs at different speeds and angles and calculates the x,y,dx,dy in live outputs. Then show him the code and be like "well if you change the gravity variable here look at what happens... oh you can add sideways gravity too I guess... and make the cannonballs bounce off the walls..."

  489. The only tools he'll ever need by Anonymous Coward · · Score: 0

    teach him how to use google and tell him to read slashdot - that's all he'll ever need (well, maybe an iRC client, but he can use google for that :D)

  490. Here is my list... by Anonymous Coward · · Score: 0

    I have a 5 year old and a 9 year old. Last year I started them both out on alice.org (actually storytellingalice). I have tried scratch but they prefer alice. I am now starting to move my 9 year old over to python and a litle lua. He loves online games and I am using that angle. Pygame is also useful.

    my .2 cents
    johnmwillis.com

  491. Re:python (not) by DrVomact · · Score: 1

    I think you're on the right track teaching him C (absolutely not C++, because it's so anally retentive that he will decide programming is the most boring thing in the world). You know C, and it has all the features a programming language needs—and no more. C also resembles many newer programming languages enough so that once he learns C, he shouldn't have any trouble picking up languages like Python, Perl, Java or C++. I would say that guidance is absolutely necessary—teach him to write unobfuscated code (e.g., do not be impressed when he tries to show you how much he can do in a single line of code), and encourage him to comment abundantly. I'd stay away from pointers—stick to the high level aspects of C; low-level programming is for a few specialists nowadays, and chances are he will never have any practical need to use such techniques. (If he does, he will learn.)

    Another possibility is to teach him HTML and Javascript. I'd do this after laying down the fundamentals with some C programming—but the gratification of seeing the effects of his code immediately on the screen might be a powerful motivator—especially if he's visually oriented.

    --
    Great men are almost always bad men--Lord Acton's Corollary
  492. Begin with analyzing a little bit by Anonymous Coward · · Score: 0

    I think a great way of learning how to program is to learn him to discover what functionality that could solve a real/virtual world problem.
    Ex.
    1) How to displays news on a webpage
    - Break down the steps into small issues
    - Setup a (L/W)AMP site
    - Take some code examples from php.net
    2) Build a budget/accounting app for his household economy
    - Database setup
    - Income controlling with frequency
    - Expense controlling
    - Status view
    - Build prediction reports

    What language, database or what ever should be of whatever is easiest, flexible to work with.
    I myself started with very basic Perl and found it to hard and went on to ASP/VBscript and Visual Basic and today I only work with C# and .NET.
    Why? Because I work with programmering webservices, websites, e-commerce sites, integration bits and pieces and C# and .NET makes my day a work :)

    1. Re:Begin with analyzing a little bit by TemporalBeing · · Score: 1

      what functionality that could solve a real/virtual world problem.

      I wouldn't necessarily say it would have to be reflective of real-world problems. Of the classes I had in high school, the books for the 3 different languages overlapped in the problem sets quite a bit, and they were nearly never real-world associated - a lot of things were like:

      1) For Loop based Fibonacci generator
      2) While Loop based Fibonacci generator
      3) Do Loop based Fibonacci generator
      4) Recursive Fibonacci generator

      Or other similar kinds of things (factorials, lowest common denominators, etc.). A lot of math related stuff, some in other areas - like draw a snowman (Qbasic), draw a series of cars driving across the screen (C++), or do something else.

      Ultimately there was a lot of different tasks, but each built on something; the primary thing was that we could achieve the task our own way - for example, when I had to do a calendar I used a button class I had created to build a quick interface; I reused that class again later when creating my own version of the game MasterMind. Creative is key.

      --
      Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
  493. logo by Anonymous Coward · · Score: 0

    start with logo, it was designed for children - and basic programmers [just kidding]

  494. Re:Basic Lives again - FreeBasic by qubezz · · Score: 1

    FreeBasic is a project that started just a few years ago and it is now more than mature. You can compile win32 programs from the command line (not interpreted or bytecode), use c dll's and the windows api and just about anything you can imagine (you can even program OO techniques if you want). The freebasic compiler is written in freebasic.

    Of course its still BASIC, so the program above (minus the line numbers and with the comma gone from the end of the print statement) will compile and run just as well as it did 30 years ago.

    In addition, there is not only a lot of example code with the distribution, but a community that is available to share with and learn from.
    http://www.freebasic.net/forum/

  495. This Thread Is Pathetic... by RobDude · · Score: 1

    I'd expect this crap from a former high school football star or something...but seriously, this is pathetic.

    If your kid LIKES computers, he'll be interested in them. Your attempt to poke, prod, force him into liking your particular brand of fun is...well...pathetic.

    Don't do anything. He'll either learn it or he won't. If he's interested, he knows he can ask you for help.

    1. Re:This Thread Is Pathetic... by gujo-odori · · Score: 1

      Thank you, I was going to write that myself. When I was in my early teens and getting interested in computers, no one had to *encourage* me or any of the other guys (and yes, I mean guys - there were no girls in my middle school computer club) to learn programming or anything else about computers. The hard part was getting us away from the computer to do anything else. This was in the mid-seventies, and we would ride our bikes a few miles to the nearest computer store - a few miles - to ogle things like IMSAI machines. We were using an HP 2000 Access system on dial-up through terminals, and more than a few of us saved up our allowance money to buy the BASIC manual for those systems. Accomplished by riding our bikes a couple of miles to the San Diego HP office (which is no longer an HP office) that was on Aero Drive.

  496. Agree with P and GP by Krishnoid · · Score: 1

    C++ primer plus by stephen prata.

    I don't usually write flaming posts, but C++ as a teaching language ?!?

    I agree with both of these points. C++ is not that great as a teaching language, but I've found C Primer Plus and C++ Primer Plus to be excellently written, beautifully expositional books. The way I describe it to people is

    • the book is thick because it's not dense
    • you can skip over stuff you do understand
    • for stuff that's more difficult for you, the friendly, thorough explanation is available -- in my case, pointers was where C Primer Plus really shined
    • the distance between where you are right now and complete mastery of the foundation of the language is about 2 inches of paper.

    With so many books out there, picking one good book that will reliably educate a variety of novices is a minefield. You could commit to a book, really sacrifice your time and attention to the material, and find out only a week later that it wasn't worth the effort. These two books are the only two I've come across that properly reward that sacrifice for the novice, with mastery of what it sets out to teach. Learning C or even C++ from these books provide a strong foundation in expressing concepts in a programming language, and with the complete command of those concepts in that language, it becomes possible to make the bridge over to new languages -- where you'll invariably have to rely on less well-written books.

    And when you do, you can take the poorly-conveyed concepts in those, whack them against your solid foundation in C and C++, and watch what parts of them fall apart as poor or wrong description of the new language's features; and which hold together as something to learn and internalize. Without that solid foundation, whacking both bodies of knowledge against each other will make them both fall apart in your head.

    The only thing these books are not good for is preparing the novice for the general quality of instructional books out there. But then I'll recommend the poster gently break Sturgeon's Law to his son.

    1. Re:Agree with P and GP by blahplusplus · · Score: 1

      "I agree with both of these points. C++ is not that great as a teaching language, but I've found C Primer Plus and C++ Primer Plus to be excellently written, beautifully expositional books."

      But if you combine the books with C++ then you can get a teaching language, check out the reviews of the primer on amazon.com, I wish people would actually read the book, and the reviews before they post. I speak from experience myself, the biggest point in Mr Prata's favor is he knows how to conceptualize his thoughts clearly and express them in words that are clear, simple and precise. He goes into the detail necessary for an absolute no nothing about programming. Despite what professional programmers might have against such a book, they never had to or tried to teach themselves from ground zero.

      There's a reason why Prata's book is in a 5th edition, is because it's a darn good place for auto-didacts, anyone interested in a gateway to understanding programming could easily start there as anywhere else.

      I think Mr Prat's book would be even better if he put the whole thing up on a website for free, and into a wiki and let people edit it. Mr Prata has a gift for communicating, and I wish most other book writers had his gift for clarity.

  497. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  498. scratch.mit.edu by namespan · · Score: 1

    I don't think typing in BASIC games (or pages and pages of hex dumps) from a magazine works for kids today

    Well, there's no reason it couldn't, but there's also better stuff out there.

    In particular, Scratch (http://scratch.mit.edu ) shows a lot of thought and promise.

    And if that's too simple, a kid may as well be doing work in Flash or something nice a media friendly....

    --
    Libertarianism is rich wolves and poor sheep playing gambler's ruin for dinner.
  499. Keep it fun & competitive... by TemporalBeing · · Score: 1

    Several ground rules:
    1) Keep the class fun.
    2) Keep it competitive - let the students challenge each other.
    3) Keep it challenging.
    4) Allow the students to reuse code from each other - as long as it is not central to that particular assignment.

    Note on #4: I.e. if the program is suppose to accomplish a specific task, so what if the students re-use each other's code for generating a mouse cursor, button, etc? What really matters is that they wrote the code/logic that achieves that particular task, can demonstrate it, and explain it. Let the periphery be just that.

    Honestly, a lot of the above is what got me into programming. I had a great teacher who let us go at the assignments. As long as we got the assignments done, and wrote the core code ourselves it didn't matter. We shared code for buttons, mouse/keyboard drivers, video drivers, etc; but we still wrote the central functionality ourselves. It ended up becoming a challenge to see who could outdo who, at least among the top of the class (and everyone else got to enjoy the show too!).

    Let them write games, and other things as well; and challenge them to come up with new solutions. Teach the real heart of education - how to learn - as well as the core material - the actual programming language.

    The kids will enjoy it; and their own sociological structures will keep feeding it as well. And best of all - you won't get bored teaching it since the kids will always come up with something new. ;-)

    --
    Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
  500. Two words: Game Mods by Weasel+Boy · · Score: 1

    Suggest he learn Lua and make a World of Warcraft plugin.

  501. Please mod parent up by Krishnoid · · Score: 1

    Again this isn't to say I don't love my dad, or appreciate time spent with him, but I would much rather go sailing, skiing, talk about investing, or just about anything else besides work on math problems with him. It seems this could be a similar situation, a veteran kernel hacker with poor teaching skills could really turn off someone to programming because their insights, ability to see through problems and solve them without needing to express what their brain is actually doing can be extremely detrimental to the learning process and therefore ongoing interest in a subject.

    I wish I had modpoints -- argh. This paragraph really beautifully states what a dad's relationship is with his son, and what a teacher's relationship is with a pupil. Being able to teach has something to do with being able to externalize and communicate the thought process between both parties, and for the teacher to be able to temporarily (if not a professional instructor) unlearn enough to be at the student's level.

    I think it's both a rare talent and a valuable gift to provide a child. My dad either had the talent or stretched himself to do it -- and I recognize that as an incredibly precious thing both to give and receive.

  502. Have you considered second life? by Francis · · Score: 1

    If you're not familiar, Second Life is a virtual world you can log into and play around with, for free. In this world, you can create things, such as virtual houses, cars, spaceships, whatever you can imagine. The key thing is that it has its own embedded toy programming language called LSL.

    I recently taught an undergrad course, targetted at non-comp sci students, to teach them programming.

    http://www.francischang.com/professional/games/

    Our thinking was that a lot of us got interested in computers, and then programming, is because we liked video games. We're trying to motivate learning by having people go through the basics of Second Life content creation. I think it's a bit more rewarding when you can say "Hey mom, look I made this game" as opposed to learning the formalities of typing and writing maintainable code. These things can come later.

    It scales out a little bit too - you can make a few dollars in Second Life in various ways, one is by selling and creating new content. Possibly your teen can earn a bit of a summer income from what they learn in SL - a great way to develop their entrepreneurship skills.

    And hey, if you're not familiar with Second Life, maybe you and your son can explore and learn it together. Of course, there are drawbacks to letting them explore - For instance you will no doubt encounter objectionable/pornographic content eventually.

    On a completely different note, another fun way to learn the basics might be to play around with Flash or Phrogram.

    --

    --
    #include <malloc.h>
    free(your.mind);
  503. Re:PHP will ruin your mind by Anonymous Coward · · Score: 0

    What would you suggest as a good server-side language alternative?

  504. Gadgets or widgets by Anonymous Coward · · Score: 0

    I would go for the gadget/widget type development (Google, Yahoo!, Mac OS X) which I think just require HTML/CSS and JavaScript.

    It's probably the fastest way to get something functioning that looks good and works well and with the added benefit of being easy to demonstrate online and share with friends.

    Friends' feedback of how something is cool and probably worth just as much as your dad saying how groovy your kernel hack was.

  505. How programmers are borned by diegocn · · Score: 1

    Give him a Windows machine and let him experience all the painful experience with spyware, drivers, and the friendly BSoD. Then show him Linux and how easily things can be done from a powerful shell. In no time he will love to write shell scripts to get things done quickly. The next thing you know is he picking up python by himself. Eventually he realized the performance issue with scripting language and move on to something like C++.

    At least that's how I ended up getting into programming.

  506. Python 3.0 in months, bad time for teaching Python by leftie · · Score: 1, Informative

    This is the wrong time to pick Python for teaching. Python 3.0 is coming out in months. It's going to be incompatible with all the 2.x versions. There's going to be major changes that effect everything all the way down to "Hello World."

    That sounds like a big confusing mess to deal with explaining to a student.

    Link to python 3.0 info...
    http://www.python.org/download/releases/3.0/

  507. Torque Game Builder by Anonymous Coward · · Score: 0

    How about picking him up a copy of Torque Game Builder, or at least trying the demo. The scripting language is loosely typed and easy to pick up, with C-like syntax.
    TGB

  508. focusing on the coding is the wrong approach by buddyglass · · Score: 1

    Coding should be taught as a means to an end, not as an end unto itself. That end being the expression of abstract ideas. Get the kid excited about an idea that requires coding in order to express, or test out.

    When I was in high school, there were two side projects I worked on that really piqued my interest. One was a "contest" of sorts I got into with another kid, where we tried to see who could develop the fastest sorting algorithm. At the time, neither of us realized that this wasn't a particularly fruitful area of investigation. I extended my coding ability not for its own sake, but because it was necessary to express (and optimize) the algorithms I was coming up with.

    The other project was a tool for designing autos in Steve Jackson's "Car Wars" table-top game. So there was a problem, and I was attempting to leverage the computer to create a solution. I didn't learn to code because coding is inherently satisfying; I learned to code because creating elegant solutions to interesting problems is inherently satisfying.

  509. My experience by againjj · · Score: 1

    I was in fifth grade (twenty years ago, wow!), and I was given a book about computers, which had in it an example BASIC program which was something like this (pseudocode, I never properly learned BASIC):

    print "What is my name?"
    read name
    print "What color am I?"
    read color
    print "How tall am I?"
    read height
    print "Hello, I am " name "."
    print "I am a " color " color."
    print "I am " height " feet tall."

    I brought this to my Dad and asked if I could get our computer to do this. He said that we could, but we would do it in a different language (we did not have BASIC on our Mac). He coded it up in a Pascal interpreter. One great feature that it had was auto pretty printing and error highlighting, so proper formatting was indeligably imprinted on my mind, and errors were easily found.

    After playing with the program for a while and enjoying it thoroughly, I was told that I could do programming instead of math for school (I was home schooled at the time). I jumped at the chance. My Dad would simply give me new tools to play with (loops, arrays) and puzzles to solve (add n numbers where n is specified at runtime, print ASCII graphics, play shoot the wumpus).

    Eventually, I got to the point where I had learned the basics, and he introduced me to the Mac drawing primitives. I then drew faces and such, with ears, ears, hair, etc. Then I switched to a real compiler and went on to create a whole application, with menus and options dialogs to choose how you wanted your face drawn, and all the basic stuff for an application. I remember one of the final things to do was to have an option for glasses, and an option for curly hair (a series of circles; my Dad told me about sine and cosine to do that nicely) -- this was to mimic my Dad, who had glasses and curly hair.

    At this point, it was the end of the year, and I was then allowed to run loose and do whatever I wanted, and I learned to use the documentation to find out what I needed. I never looked back.

  510. Make him need to program. by Anonymous Coward · · Score: 0

    Not that you're going to see this comment, but.

    Programming is learned as a necessity to get something done.

    Put a task in front of him that you know is going to require him to program to accomplish it.

    Language is immaterial. He'll find tools to accomplish his goal.

    He might start out just running data through piped shell commands, he might use PERL, he might even fiddle around with SQL statements.

    Eventually, he'll program.

    Or, he won't.

  511. Math or hardware? by Logic+and+Reason · · Score: 1

    There are basically two ways to approach things: from the hardware side, or from the math side. The spectrum of languages is something like: machine code -> assembly -> C/Fortran -> C++/Java -> Python/Ruby -> Lisp/Smalltalk -> lambda calculus.

    If your son is interested in abstract math, you'd be hard-pressed to find a better teaching language than Scheme (with SICP, of course).

    If he's more into concrete, hands-on stuff, why not assembly? It isn't all that hard, and will teach him a lot about how computers work.

    Of course, you could pick a language somewhere in between those extremes; but I think sticking to one end of the spectrum or the other is better for teaching and learning, since there are fewer distractions.

  512. Anonymous Coward by Anonymous Coward · · Score: 0

    Everybody can teach, those who say they can't haven't tried hard enough....He is your child, take charge and be a dad not just a biological father. He will enjoy learning from you more than anyone else. Good Luck

  513. Bare Linux/BSD by Anonymous Coward · · Score: 0

    So, you're a kernel guy, give him a computer with just Bash, gcc and vi:
    "Dad, this doesn't have anything?"
    "You want MySpace and Messenger? Do it by yourself! Start with a Windowing system" :D

    Nah! Just kidding, why don't you start with something simple that is fast and graphic, like HTML and JS. No compilation, and very basic data structures that can do a lot of stuff.

    Then, if he's truly interested he'll decide on his own... let's hope he chooses the OSS way.

  514. Easy by onkelonkel · · Score: 1

    Tell him he's not allowed to program.

    --
    None of them can see the clouds; The polished wings don't care.
  515. How about Ruby Widgets? by cabazorro · · Score: 1

    I created a small project that uses Ruby Tk. Is not Quake Arena, but you get the point.

    http://winlearnseries.sourceforge.net/

    I don't agree with the idea of dumb-down development.

    Programming is about rules, lots of rules.

    Programming is like comedy, either you dig it or you don't.

    My litmus test is the rubik cube. Give a teenager a rubik cube.

    If she/he toys w/ it for a while and then tosses it. Don't waste your time.

    If she/he tries for a while and then asks for directions. Good news, she/he is ready to learn programming.

    If she/he tries, fails and then returns tomorrow with the cube solved, you have in your hands a kernel developer.

    If she/he already knows how to solve it and you have not bought her/him a laptop yet you are wasting precious time.

    If you don't know how to solve the Rubik cube, you clicked the wrong link, this is Slashdot, not Digg.

    --
    - these are not the droids you are looking for -
  516. traceroute by Anonymous Coward · · Score: 0

    one word - traceroute. This is the thing that caught my eye. To see the interconnections of nodes across the internet that make it possible for me to visit some xyz.com website... I was sold by hop 3.
    Been a net-junkie ever since.

  517. This is what did it for me by Anonymous Coward · · Score: 1, Insightful

    When I was a wee lad, I came across and read "Peter Norton Programmer's Guide to the IBM-PC". That book hooked me on all things PC.

    It detailed the intricate workings of the PC and the "revolutionary" concept of BIOS interrupts.

    Years later, when interviewing candidates for programming positions, I would ask them "When you press the letter 'A' on the keyboard, what happens ?". Their answer would usually be along the lines of "An 'A' shows up on the screen". I would then ask "Why?". If they were able to articulate anything better than "because", they would usually get the job.

    I'm now an old person, and I know my views of what programmers should and shouldn't be are probably dated, but I think the worst part about his latest crop of programmers is the total disregard for what actually happens at the machine level. This is what contributes to the crappy, inefficient and unintelligible code that we see being produced today.

    Imbue in your son the basics about what a computer is and how it does what it does, and you will be doing him a great favor if this is the profession he chooses to pursue.

    I am not advocating that every programmer needs to know how to write a BIOS and put it on an EPROM and replace the one they have in their computer, but at least know what the BIOS is and why it is so important in the grand scheme of things. Nowadays, people learn VB.NET and think they are gurus because they can make a form pop up on the screen. I'd like to see them dive into Microsoft DOS technical documentation and make heads or tails out of Microsoft's "List of Lists" to be able to recover data from an accidentally formatted hard drive.

    I'm ranting... just my two cents...

  518. iPhone for the win? by bledwhite · · Score: 1

    If i was ever going to learn to program besides a rough understanding of BASIC etc.. although thats where most people would start initially, then i would definitely go for the Apple SDK. Everything is there provided you have a mac which seems to be the trend amongst teenagers these days anyway. For free you get the SDK, a simulator to test it on and all the hardcore optimization programs. It is in objective C, which is harder to program but the market seems to be coming up pretty big these days for that because of Apple so if you are a newstarter with a fresh mind would it be that much more difficult? I mean for even a (relatively)simple project you could perhaps make some money or at least get a free app on the iTunes Apps page, now how cool would that be for a teen amongst his/her pals. I reckon this would be a winner. Some apps so far are extremely simple but popular. The hold button was in the top twenty at least which is basically hold the button for as long as you can without letting go, ala get a high score. Simply put a start stop timer button recording the highest variable. Now thats an easy program but on the iPhone/iPod Touch very very cool and fun!! p.s. i haven't found a way to cheat on it yet either gggrrrr.......

  519. Why not a simple OOP? by Anonymous Coward · · Score: 0

    I started my programming with some old DOS based OOP programs, like ZZT and Megazeux. It's for a much more specific purpose (games) but it's a good way to start understanding if-then-do and other logical components of programming.

    And Megazeux is also open sourced (and now available for every friggin' OS out there), so once you're tired of its limitations, you can expand them. :)

    http://sourceforge.net/projects/megazeux/

    sw

  520. Java is a good start by Erus · · Score: 1

    Java was my first computer language therefore I recommend it; "A First Book of Java" by Gary J. Bronson, contains great info to get you started with Java. The two languages they teach at my school are C++ & Java...

  521. Do it my way by jrdemasi · · Score: 1

    Well I'm 14, and I never got into programming, but I've always wanted a website. My brother is a programmer and he told me to pick a language to use and learn it, he said I had to learn on my own. I picked up on PHP very quickly and I'm on my way to obtaining my own blog. Progress is slow, and it takes time, but the urge to want the final completed project is what keeps me going. www.smuckingfart.com is the product of how far I've gotten.

  522. My first program by greatslack · · Score: 1

    I first learned to program on a TI-83 calculator. Start with simple programs like "Press 2 to win" and move on to creating moving objects. Or, if your kid likes Legos, then get him a Lego Mindstorms kit.

  523. Create something desighned around Porn by Anonymous Coward · · Score: 0

    He is a teen age boy... create show him how to do something that will catch his intrests...usually porn.
    I started learning hoping to do the superman 3 trick, 10 years later I have not comprimised any system in that way, but have learned enought to get me a crappy job that pays the bills

  524. If he is visually oriented by kosan · · Score: 1

    teach him Processing; it is a programming environment build upon Java; specially developped for visual artists. I use this environment for my students of an art school (16-18 years old) and they love it ! They are not specially "programming minded" but they like the simpleness of it and the beautiful images you can create with simple code !

  525. Make it point and click by Anonymous Coward · · Score: 0

    JavaBeans IDE. Job Done.

  526. my experience by Anonymous Coward · · Score: 0

    I started learning 'programming' at about 14 (in 23 now) and started with VB apps that did malicious things to AOL users via instant messages/chat rooms.
    In highschool, I took a few classes that taught basic and a little bit of C.
    In college (CS Major), it started with Java (which I think was very bennificial) and moved to C/OpenGL/C++/etc.
    Note: no scripting (perl/python/php/etc) until after college - also important.

    The things that I remember the most, was when there was an outcome. For example, VB apps that crashed someones computer - really cool. In highschool, an animation in basic. In college, the OpenGL game written in Java.

    Basically, if there is a cool outcome, then I wanted to learn it... Now I am in the security field - everything is a cool outcome (exploit = root, etc).

    I also mentioned that in college they started me with Java. I think its worked well because you dont need to learn the dirty details (memory management, heap, stack, garbage, desctuctors) that you need when it comes to c/c++. You get the basics of Object Oriented first, then you can learn about the 'dirty details'.

  527. Re:PHP will ruin your mind by Anonymous Coward · · Score: 0

    Geeze...what, did PHP rape your mother?

  528. Programming Contests by Anonymous Coward · · Score: 0

    Programming contests are a great way to learn, have fun, and get job offers. My personal favorite is TopCoper.

  529. The visual cortex is huge! by TerranFury · · Score: 1

    What to teach? Video games and graphics.

    In a nutshell: Point him to,

    Gamedev.net (The forums are the best I've found anywhere.)

    cprogramming.com (Going through the C tutorials is a great, grea way to get started with the language.

    Also give him one (or both) of these:

    1 - A pointer to the framebuffer.

    2 - Nice OpenGL initialization code.

    In fact, I'd say that there is almost nothing as rewarding as starting with just a "putpixel(x, y, color)" function and finishing with a 3d cube spinning around. Programming graphics teaches so much: Math [motivation to learn linear algebra! A concrete way to understand parametric functions... and calculus (If you start coding before you take Calc I, you will reinvent Euler integration yourself)... and functions... and recursion/induction... and... well, everything...], abstraction (putpixel is inside drawscanline which is inside drawtriangle which is inside drawmodel which is inside drawbadguys which is inside...), etc, etc, etc. And since it requires speed (you want to run at interactive framerates), it'll motivate efficient algorithms, too.

    And -- I should really emphasize this -- people are visual. Nothing taught me math like watching it draw pictures. Concepts that confused my classmates came intuitively to me (me! The kid who couldn't memorize his times tables in third grade! The kid who kept making sign errors! The kid who everyone thought was bad at math! The kid who's now a PhD student in Control Theory!) -- because I'd seen them draw pictures. The visual cortex is a huge part of our brains, and harnessing it does incredible things. So teaching graphics programming is bigger than just teaching graphics programming: It's making connections so that your son can visualize math. And that is huge.

    Graphics and games. Give your son a pointer to the framebuffer. The rest will follow.

  530. Not a programming language, but still useful by ksd1337 · · Score: 1

    I know, I know, it's not a programming language. But he could learn HTML/CSS, preferably the standards-compliant kind, not the IE, tagsoupy FrontPage-generated garbage. I feel it could help a programmer(-to-be) in various ways.

  531. How I got into programming by Vanyali · · Score: 1

    In my middle school years I started dabbling with web design and learned HTML and CSS. However, I soon wanted to be able to create dynamic sites, so I picked up PHP. This was the first real (albeit a bad) programming language that I learned. I don't think it caused me brain damage or whatever, but it prevented me from transitioning to other languages for a bit. When I got into high school I picked up a few books on Lisp, decided it was much better than PHP, and did some stuff with it. However, I hadn't learned much actual programming yet. What really got me into programming was the USA Computing Olypmiad (http://usaco.org). This is a programming contest for high school students that forces you to write efficient programs to solve some very difficult problems (just about all programs have to run in under one second). The contest makers have also created an excellent training site that has plenty of problems and lectures to learn from. When I started the training pages, I could barely program in C, but after about 40 problems or so I can program almost anything in it or in C++. Since then I've also learned Ruby and Python, the two being a breath of fresh air after C/C++ and PHP. Because of this, I was able to take the AP Computer Science AB (which should be called AP Java :/) exam and got a 5 in freshman year, without ever having taken a computer science course in my life. You just need to challenge your son with problems like those in the USACO, and if he's ever be interested in programming, he'll learn on his own in order to solve them.

  532. Programming, or how to ownz0r teh sp0t cr3am set.. by VoidCrow · · Score: 1

    I managed to get my closest friend's kid into computing because I started when he was 3 years old by introducing him to games, and teaching him to type his name. Subsequently, I supplied him with new computers as he grew, bought him a Logo package and book, and showed him how to draw simple geometrical shapes and/or pretty patterns. He's now a geek, and he wants to do Computing with Physics at Uni. He's better at maths than I am.

    I interested my nephew and nieces in computing by showing them how to world build for Quake 3 and Unreal Tournament in 3D editing packages, and wound some programming into the mix via UnrealScript, a Java-like language included with all of the Unreal engines. This was cool for them because they could build the world, and then *play* it. Obviously I pWned them most cruelly (they are teh suX0rs - they can get their revenge when my teeth are in a jar). My nephew's the only one who showed any ongoing interest, but they all enjoyed the activities.

    I think the key thing is to find something that they can *play* with. This is how I got into programming.

    I can see the point of didactic learning under some circumstances, but IMHO (speaking as a consumer) too many teachers (particularly maths teachers) heavily overuse this style of teaching. IANAT, btw.

  533. Bribe/pay him by syousef · · Score: 1

    Offer to pay him for programming work he does.

    Find something not too difficult but that will actually require some effort and learning to accomplish. Then offer him a modest one off increase to his pocket money or some new toy or gadget he wants, on the condition that he complete a task. The key is to pick a task that a beginner can handle but that will take him time and have him learning. It may sound frivolous, or like bad parenting, but a lot of good programmers only do it because they're paid. The beauty is he'll learn on his own if motivated. Once he's seen how complex it is, he'll either take it up as an interest himself, or decide it ain't worth the money. This is also a good way to teach him not to rely on being spoon fed by teachers etc.

    Btw can I have some help with kernel hacking. Looking at kernels for the first time in about 12 years, and it took me a lot longer to get a kernel compiled than I remember it taking me when I was last looking a Linux seriously. When did it become so damn hard to install the tool chain?

    --
    These posts express my own personal views, not those of my employer
  534. Re:PHP will ruin your mind by Anonymous Coward · · Score: 0

    I've been programming for 2 years (since I was 12) and through the last 6 months, I've been programming in PHP. Not only PHP but HTML, CSS, XML, JS etc...
    PHP is not a beginners language, but I started with LibertyBASIC/JustBASIC. It's a great language to start out with.

  535. AppJet to introduce him to web app development by simpolman · · Score: 1

    The best way to make programming interesting is to make it relevant. Everyone uses dynamic websites so I suggest teaching him to program for the web. There's no better teaching tool for how web-apps work, than AppJet.com IMO. You don't have to install anything to get started coding, not even a text-editor. Javascript is the only language he'll need to learn to use it. No SQL, no HTML, no Apache configs, just Javascript, a C based language with agile loose typing, and great OO capabilities. The AppJet developers have built a very minimalistic but stil powerful framework that covers all the fundamentals of web development; HTTP request/response handling, persistent storage, and sending emails, among many others. The forum has a friendly community of amateur developers to help him learn. He'll be writing web-apps that he can show his friends in no time! Give it a shot; http://appjet.com/ and check out something I built with it at http://juxtafier.com/

  536. A great book to learn with by Illumine · · Score: 1

    I highly recommend the book Learn to Program. http://pragprog.com/titles/fr_ltp/learn-to-program My teenage brother started with this book and loved it because it was clear and easy to understand and wasn't boring. Even my dad started to get into it.

  537. Make it Fun by Anonymous Coward · · Score: 0

    The best teachers to kids are people who can convey the sheer joy of doing an activity. I had a music teacher who was fantastic not only because she was a world renowned concert musician in her own right and could share secrets that only real pros know, but because she was able to focus on the real beauty in music and how exciting that is.

    So, share some of the excitement with him when you think it's appropriate, and make it fun.

  538. Some younger advice by triplepoint217 · · Score: 1

    I haven't seen many posts by youngish people, so I thought I would throw my $0.02 in. I am 22, and learned how to program in 10th grade, after a few earlier false starts.

    In my case, I tried basic in elementary school and visual basic in middle school. In both cases I never really connected, I don't know whether it was the simplistic languages or just my lack of maturity.

    When I actually succeeded in getting started I got "Learn to Program using Python" by Alan Gould and worked through a bit of that, and then moved up to "C++ programming for scientists Engineers and Mathematicians" by D. M. Capper (I am science inclined, currently starting a Ph.D. in physics). I learned mostly from these books. If he has the desire to work through a book, it is a good way to learn, they are good teachers even if you are not.

    The other thing that helped me was that I did this as an independent study for school which forced me to spend 10 hours a week on it for a semester. It was a little painful, but being forced to just keep slogging got me to the point where I knew enough to be able to write programs that were complex enough to be interesting to me. I don't know if there is a way to replicate that effect (I wouldn't suggest forcing him to do it unless he wants to, but maybe come to an agreement that if he does x hours a week for n months you get him his own computer or something else he wants).

    I would also second the suggestions of games. If he is programming something he thinks is cool it will be a lot more fun for him.

  539. Anonymous Coward by Anonymous Coward · · Score: 0

    Mod his Xbox, and show him how cool the shit you can do with it is. I know where your coming from, my dad is an engineer and him teaching is hell. Just show him the cool shit you do, dont try and get to technical with it, he already likes what ur interested in, just relate it to his interests. peace homie, and good luck.

  540. Anonymous Teen by Anonymous Coward · · Score: 0

    Best idea is to get him started on HTML, then JavaScript. If you use Firefox and Firebug extension then this should provide a decent base for him to work from.

    Next logical step is to tackle a server side scripting language (ie PHP). Get him to produce something worthwhile in this, but not too large, as his code design will be limited.

    Then progress onto a 'hard' language, I recommend C++. Teach him to use the standard library (this should be provide a starting base so he can get some output without messing around with pointers) and then look into pointers, proper data types and classes.

  541. Greenfoot by Anonymous Coward · · Score: 0

    Many people in this thread seem to be concerned about the programming language, but i don't think that matters.

    Greenfoot (http://www.greenfoot.org/) allows you to create some game like program in Java, and have the kid add extra stuff. the tutorials on the site are really good.

  542. Show how it can help them by Dylos · · Score: 1

    I remember when I first became interested in programming in early high school/late middle school. It was when someone showed me their IT-83 calculator that had a program on it to compute the quadratic formula by just giving it the variables. Some of you may regard this as encouraging cheating, but besides using it on a test if you were to spend the time to make a program to perform some equation you should have a better than average understanding of the equation itself. The reason this is such a good place to start is that it shows how useful programming can be and it gives someone real problems to work on it that seem easy, but pose their own problems that the programmer will need to figure out. (Dont have to program these on a calculator, you could use your favorite "easier" to learn language)

  543. Game Maker by mdblake · · Score: 1


    If your son is a fan of computer games then Game Maker is a great place to start.

    It combines a gentle introduction to programming logic with a high reward component from creating his own graphic computer games - games that can look and play as good as anything on the casual game market.

    An interested teen with this Game Maker book, The Game Maker's Apprentice, and help from a programming mentor can get a solid introduction to a complete development process, including aspects like weaving sound and graphic assets together to create a complete software package - aspects of development that often aren't covered at an introductory level.

    The Game Maker's Apprentice is structured as a series of projects, starting with the most basic and gradually increasing in complexity to cover rudimentary AI concepts by the end. The projects are fun, with clear direction and plenty of opportunity to play and explore beyond the specified project.

    The "series of projects" structure can also help you out as you teach too. You'll have the insight to see what's new with each project, what ideas to help emphasize, and they'll serve as guideposts to give an idea what level of concepts are being taught at each point along the way.

  544. You want to ENCOURAGE them to program? by CrazyTalk · · Score: 1

    Average salary for programmer - $60k/yr. Avereage salary for city bus driver - $100k/yr. I'm not sure I would encourage anyone to go into programming.

  545. Use whatever gets your son's interest by Elenthalion · · Score: 0

    I actually got my start in Turtle, that silly drawing application that was so popular in the 80s and early 90s in elementary school and middle school. I learned the satisfaction of seeing words I typed on a screen DO something cool! (Even if it was just drawing a series of boxes and making them move around the screen)

    I then moved on to QBASIC and hacked some QBASIC games I'd found to create my own games.

    From there it was graphics in QBASIC. That's when I really started to appreciate the puzzling challenges that programming provides and began to feel good about myself and the clever ways I came up with to solve these problems.

    The follow on at that point was C++ and I've never looked back.

    I'd say that you know your son the best. If he's the kind who likes SEEING the results of what he can do, maybe starting with something simple with graphics would work. If he's more cerebral then maybe that isn't important. :-)

  546. Proper motovation by Anonymous Coward · · Score: 0

    Teenage boy? Easy.

    Setup a computer on the network with a lot of porn on it.

    "secure" the computer against all attacks

    Leave a printout near the computer that details an attack that the computer is vulnerable to, that he would have to write an exploit to.

    Then just give the boy some private time and let nature take it's course.

  547. Re:PHP will ruin your mind by Anonymous Coward · · Score: 0

    I don't think it matters what language is learned first. If the kid has the curiosity, they will keep pushing their boundaries. PHP will lend itself to Perl. Perl will lend itself to Linux. Linux will lend itself to C. C will lend itself to assembly. assembly will lend itself to transistors. Transistor will lend itself to weapon design. weapon design will lend itself to nuclear bombs.

    Seriously though, I could imagine a few worse language to teach a kid. Examples include fortran and cobol. PHP definitely has a cool factor because a kid can create a web page and show it to their friend. Ideally though, a kid should move on after learning PHP, like such fine languages as Lisp, or OCaml. Show them tail recursion and continuations, then watch their mind blow up.

  548. Re:PHP will ruin your mind by eddy+the+lip · · Score: 1

    My bread and butter is also PHP, and I would never recommend it as a teaching language for all the reasons you mentioned. One thing that was implicit in your post, but I think is worth noting, is that the large quantity of class-A screwups rampant in PHP libraries and applications are another strike against it as a first language. The first language I got serious about was perl, and love it or hate it, there is a community there that's very quality oriented. (Yes, you need to dig through the usual chaff.) One thing that was critical to my learning was being able to read large quantities of well written, well documented code.

    The background I gained from other languages made it possible for me to see PHP's flaws and work around them. I shudder to think what would have become of my programming practices if it was where I started.

    (For the record, I also write almost all my own framework code for PHP as a result. Some of the more recent stuff that's come out might very well be decent, but a) the tolerance for terrible APIs that PHP itself engenders leaks into much of it, b) I've been bitten by PEAR one too many times, and c) out of necessity, I've written enough of the basics that I don't have a compelling need for them anymore. I sometimes question the NIHness of this, so it's nice to know I'm not the only one ;)

    --

    This is the voice of World Control. I bring you Peace.

  549. SQL 4TW! by Roman+Coder · · Score: 1

    My 16 year old son just asked me to show him how to program, with an eye towards getting a good paying job when he enters the job market.

    I'm starting him off on SQL, then once he's got that down, on to something like Java (the basics, not J2EE).

    Not sure if that is the best way to go, but I figured he can't go wrong learning SQL first. Plus no matter what programming language he uses in his career, he'll always need SQL, and its a good introduction to a programming "mind set".

    --
    "The future can only affect the present if there is room to write its influence off as a mistake." - Yakir Aharonov
  550. Real life applications, applications... by Anonymous Coward · · Score: 0

    I believe that what keeps people more interested in programming is always to keep in view real life applications of what youre learning...
    In my case if it involved some kind of hacking example I would go do research and learn lots about what im learning...

  551. Re: Topic by Anonymous Coward · · Score: 0

    Hey Buddy! how about give your kid a job. I mean give some part of your job (for sure, start from basic one) to him. Show him that he can help you. Show him that he can do it in the real world and also give him salary. Suggest that children don't have long concentration. You may set his little project period to, let say, a week. Also, make it challenge and fun!!! Cheers!

  552. Maybe scripting for an existing game? by Anonymous Coward · · Score: 0

    I'm rather young (still in my 20s) and learned the wrong way with PHP, but I had a great experience of fun and learning developing a persistant world for an online game called Neverwinter Nights. It has its own SDK, its own C-like scripting language and a big community. It could be a cool way to start because you can get straight to scripting behaviour on a 3D game.

  553. Anonymous Coward by Anonymous Coward · · Score: 0

    I would recommend teaching him how to mod PC games. It gave a tremendous boost to my interest.

  554. Leave a compiler lying around. by JPEWdev · · Score: 1

    That's how I got started. My dad left his Borland Delphi III disk lying on his desk with a copy of "Teach yourself Delphi III in 28 days", so I took it and installed it on my computer. Eventually I got bored just drawing pretty windows, so I ask my dad how to "do stuff", and he introduced me to pointers, linked lists, stacks, and all sorts of wonderful data structures. The rest, as they say, is history.

  555. Or write a robot by Anonymous Coward · · Score: 0

    Maybe try looking at it another way. The 8-bit generation are generally good programmers because we had intimate knowledge of the machine. I agree you need something user-level, however today's user-level is too high-level.

    Perhaps starting with 8-bit the same way many of us did and moving up is the way to go. It doesn't need to be abstract though. Many of the 8-bit platforms for robotics and hobby electronics are ideal... have a look around at http://www.sparkfun.com - they have a range of really engaging development platforms and a great community.

    The tools for the Basic stamps, and from Microchip, GCC for AVR and ARM (WinARM etc) combined with some cool projects will not only be incredibly rewarding, but also provide a 'real' introduction to programming... not to mention a simultaneous introduction to electronics which is a valuable backdrop. ... and get a copy of 'The Pattern On The Stone', which explains how logic works using tinker toys.

  556. Instant Gratification. by NoobixCube · · Score: 2, Informative

    Try teaching something that will instantly set off the endorphin rewards. You certainly know a whole lot more about what makes him tick than anyone on Slashdot, but most teenagers, myself included (though I'm 20 now...) play games. Get him started on Python and PyOpenGL, that way he can easily get some 3D graphics on screen.

    For some reading on education in general, in case you're curious, Dimensions of Learning is a good place to start. It's a relatively current teaching model. I have the textbook on it, but you can find general outlines of it everywhere; though, curiously, it doesn't have it's own Wikipedia page. I might need to do something about that, unless it's in another article.

    --
    Admit it. You post strawman arguments as AC so you get modded Insightful for refuting them, rather than Troll
  557. You don't. by statemachine · · Score: 1

    By that, I mean that I learned on my own because I wanted to learn. He has to want to learn. Maybe he likes something else. Are you afraid that he'll want to be a fire fighter, lawyer, or some other profession you might not like?

    What does he like to do? Try encouraging that. But don't discourage.

  558. Re:PHP will ruin your mind by MisterBlueSky · · Score: 1
    modperl
    • It's faster
    • Loads of modules available
    • Direct access to Apache's API and data
    • Working unicode support
    • Support for tainted data
    • Native regex support
    • Namespaces
    • Not written by idiots (*)
    • You can use the same language to do both web and non-web programming
    • A community with people who know what they are doing

    Of course, there is the readability-issue with Perl, but when you come from PHP it is always an improvement. But if you don't like Perl, there is also mod_python and some other alternatives.

    (*) Just kidding

  559. Simple, but not-so-obvious, problems by Anonymous Coward · · Score: 0

    I always felt that the best way to learn programming was to simply tackle a problem. Connect programming with problem-solving in the student's mind, and encourage creativity.

    There are a million simple problems out there - some great ones from junior programming competitions (Google programming contest questions.)

    Alternatively, talk with your son and come up with a goal - start complicated (a game) and (through discussion) reduce it down to one or two key elements that can be easily demonstrated.

  560. Problem solving first by EmbeddedJanitor · · Score: 1

    Try Castlemouse:http://www.castlemouse.com/

    --
    Engineering is the art of compromise.
  561. cell phone - or TI calculator by Stradivarius · · Score: 1

    I got my start programming the TI-85 (and later TI-92) calculators we used in our math classes. It's easy to learn, lets you automate some of the calculations in science classes, and if you make games you can share them with your friends. :-)

    Then you can move on to programming more complicated things, like cell phones or computers.

  562. Criticism on C++ Primer Plus by adah · · Score: 1

    This book is often criticized, and it should not be confused with the C++ Primer by Stanley Lippman, a real C++ expert. I found two reviews on ACCU:

    http://accu.org/index.php/book_reviews?url=view.xqy?review=cp003131
    http://accu.org/index.php/book_reviews?url=view.xqy?review=cp001702

    Neither review recommends this book. Francis Glassborow even said "there is nothing in this book that is appropriate to the needs of someone learning C++ in the twenty-first century". Brian Bramer was kinder, and said "this a very readable book with clear up-to-date explanations ... Suitable for beginner self- teaching who finds the more academic books hard to read", but he also mentioned it was heavily C-based, and did not talk enough about STL. In fact, the author also wrote C Primer Plus, and that may explain something.

  563. Robocode by Anonymous Coward · · Score: 0

    See if he's interested in robocode http://testwiki.roborumble.org/w/index.php?title=Robocode http://robocode.sourceforge.net/

    You start with a combat robot written in Java. You subclass the robot and change the code to see if you can get your robot to be better than the other robots. The base robot class the battlefield, etc are all provided, so you don't have to do much to have a full featured game, but the better your programming the better your results.

    If he gets into it he will have a lot of fun and learn of lot of Java while he's doing it.

  564. Physical Computing by Anonymous Coward · · Score: 0

    If you aren't so hung up on Unix/Linux, consider using a micro-controller and building something that operates in the physical world. I have been looking at the Arduino http://en.wikipedia.org/wiki/Arduino. This is a very small and inexpensive open source hardware/software board based on an Atmel Mega168 chip. You can buy a kit for around $15 US or an assembled unit for around $25 US from here http://www.moderndevice.com/ or from here http://www.ladyada.net/make/boarduino/index.html.

    The software is free, and runs on Windows/OS X/Linus/Unix. You code it in C, and there are driver calls for all the on chip I/O devices. It can easily control DC motors and servos, so once you get those going there are a lot of robotic projects to explore.

    There are a lot of on-line examples, so you have something to start with even if you are not hardware inclined. http://www.arduino.cc/playground/.

  565. well what do teens want more of- money. by auspiv · · Score: 1

    my current motivation for learning programming is to make money. as you may or may not know, the financial markets are dominated by automated trading machines. so i figure, "hmm.. it can't be too hard to write a profitable system." ha. it is very hard, but a great project. i'm currently using ninjatrader to write basic strategies in c# to trade futures. oil, the s&p 500, wheat, corn, hogs.. its all tradable if you notice patterns that occur over and over again. the systems can be as simple or as hard as you make it. of course, the more simple ones aren't as profitable, so as the desire to make money increases, so does the complexity of the program. in short, i'm writing strategies in c# for ninjatrader to make money. give your son a go at this and he'll learn it all himself. and who knows.. maybe he'll come up with some novel concept and make himself more money than he knows what to do with.

  566. Have you considered Python? by jrminter · · Score: 1

    I would start a newbie with Python. Python is Open Source, multi-platform, and object oriented. There are many, many extension packages. Lots of tutorials too...

  567. Embedded Programming! by Anonymous Coward · · Score: 0

    One motivator which got me into programming (I'm now a university lecturer in EE/CS) was learning embedded C for microcontrollers - and actually being able to do hardware things. AVR's are cheap these days, easy to program and you can use them to make all sorts of little projects - including robots!

  568. Learning programming... by l3ool · · Score: 1

    My own encouragement came from curiousity about how computers and programs worked, but as far as encouraging someone either they will be interested in learning or they will not. As a programmer for the last 23 years I'd have to say teaching the importance of RTFM'ing is a good place to start. C is an ideal language to start with, it will show them many valuable programming concepts. Also, shell scripting shouldmake them comfortable with the commandline along with those all important 'programming concepts'. Unix/Linux/BSD is the best place to learn the art of coding (in my opinion)...Manpages are there to RTFM. One last thing, make sure their first IDE is VI, GCC and Make. ;-)

  569. BlackBox CP by Anonymous Coward · · Score: 0

    I atended a technical school before college, and there was required to program first in pascal and later c... and was awfully boring

    What really got me into programing was modula2 first course, it was like love at first sight: more clear and simple than pascal, and as powerfull as c but without their pitfalls (modula3 its even better)

    Today i believe the best introductory programing language is Oberon-F (Oberon2 + Framework) For it there is an open-source RAD that runs well on wine, called BlackBox Component Pascal. Best of worlds: compiled, typed, dinamic, clean, patterned, component oriented, text drived, open... just great!

    Sadly nowadays mostly do all my code in .Net (a couple of years ago in java) But if i could, would ratter do it in Critical-Mass again any day.

  570. BASIC Computer Games by Anonymous Coward · · Score: 0

    The thing that got me started in programming back in the 5th grade was a book I got with the old 32k CPM computer my parents purchased for me. The book was titled BASIC Computer Games, with a sequel called More BASIC Computer Games by David H. Ahl (of Creative Computing fame). I would spend hours typing these programs into the computer. While I believe that BASIC is one of the worst languages to start in as far as proper coding methods/structure, it was the best way for me to program. I am in the process now of preparing to write a new version of this type of book in a modern language and hope that it will help someone else like your son learn to love coding as much as I do.

  571. Why UNIX? by SpoonStomper · · Score: 1

    Kids want to do something that is cool. IMHO Silverlight is the fastest and best way to do it. Yeah it's not UNIX but who cares. I'm pretty happy that I grew out of my UNIX phase. I make a lot more money with dot net. Mainly because it boosts development performance and efficiency. Why force him into UNIX because of some lingering ideals peddled by your college instructors.

  572. Game Maker. by GMThomas · · Score: 1

    Quite simply: Game Maker. This is how I got into programming at age 12.

    What Game Maker does is

    1) It makes programming fun and gratifying. You see your results instantly. With a few commands you can see exactly what you caused your game to do, and because of the nature of some of the functions (for instance, functions that calculate trigonometry and other more complicated math formulas) you don't need a huge understanding of math.

    In addition, it takes out the "Yay, I spent three days on this, now I can draw images on the screen!" For instance, in three days I had coded movement, some netcode, and made maps for an MMORPG I was making. In another language you would simply not be nearly this far. So basically, you don't get bored by "stupid stuff." If you have a game idea, you can get that into a program in a few hours, instead of worrying about really low-level things.

    2) Perfect for beginners. It's even being taught in schools. You can start with a simple drag-and-drop interface and slowly work into code. It's all object-oriented, and it's very scalable. You can make a simple maze game or have an MMORPG that reads binary files and has super advanced graphic scripts.

    3) Like I said earlier, he'll learn OOP and not even know it, since the entire GUI is based around objects. You can't put anything into your game without it being an object.

    4) It's free. And it's a small program. It has a huge community (I am a huge tutorial contributor and mentor) with tons of tutorials, and plenty of people to get help from.

    5) Its syntactically average and lenient. Code you write in it looks like code you write in Java, for instance. It's lenient: You don't have to declare variable types.

    6) Debugging an error is not as frustrating as other languages. The debugger tells you exactly where the error is. Still can't figure it out? Run the game in debug mode and monitor every variable, object, etc.

    7) Reward. Think up and code a really good game and you can be admired by tons of GM community members! Wouldn't you want to work for that?

    --
    You are now manually breathing.
  573. neat programs by Anonymous Coward · · Score: 0

    Make sure you teach him to write neat programs, cleaning up after yourself etc. I'm amazed when I talk to java programmers and they just let the garbage collector do the clean up. If you want to really learn how to write small fast programs pick a low level language like C, or even assembler. When I did CS at Uni they taught Pascal first, its not to bad to get your head around some basic concepts. And as others have commented, BASIC is a good starting point.

  574. I haven't turned out that bad by Gutwroth · · Score: 1

    About 2 years ago, I picked up a book on HTML/CSS (HTML, mind you, I would come to hate it for disrespecting XHTML) and read through it one weekend, making an example webpage for each lesson. The natural step after that was JavaScript which I learned with glee. Of course, then I needed some server side-scripting, so I grabbed PHP. I have come to dislike now and wouldn't touch it with a 20 meter pole, but at that time it was a great gateway to other parts of computing.

    Since then, I've learned Python and I love it. In fact, I'm a Python core developer (yes, with commit privs), and Google is paying me to work on it over the summer. I hope this is evidence that 15 year olds can make a difference!

  575. Scratch or Alice by HighPerformanceCoder · · Score: 1

    To keep a youngster interested and motivated, try Scratch or Alice. These make it really easy to generate some flashy graphics, and do teach real programming concepts. My 10 yo son has done quite a bit of Scratch programming, mostly self-taught.

    Alternatively, get him doing Lego robotics. This is a bit more expensive, but loads of fun.

    Once they're hooked on programming and computers, that's when they'll have the patience to do "real" programming languages like C++ etc, like we cut our teeth on (actually mine was Pascal, but that just shows how long my teeth are). But not everyone will get to that stage. In the meantime, the experience with Scratch (or Alice) will always be useful, provided they don't develop unrealistic expectations on how easy programming is.

  576. Go with Quartz by chord.wav · · Score: 1
    I'm going to answer your question:
    What's the best way to encourage his curiosity and enable him to learn?

    If you really want to reach him, buy a Mac (I know you prefered Unix or Linux, please keep reading), download the developer tools and start Quartz Composer. Man I wish I had this when I was a kid. I'm dead serious and I'm not a Mac fanatic. I was raised between computers and I've used PCs most part of my life. I'm about 30 years old now.

    If you haven't heard from it: http://en.wikipedia.org/wiki/Quartz_composer
    Here you can see just the tip of the iceberg of what you can do with it: http://vimeo.com/videos/search:quartz
    And you don't want to miss these: http://www.zugakousaku.com/index.php?ref=study-quartz-jp

    Now, it's way more than a cutie program to make visuals.
    You start by dragging patches and connecting points with instant ultra cool results. That's good, you don't want your kid to get frustrated by pointers and such (yet)
    Back to QC, once you've tried every possible patch, you'll want to apply some kind of logic to the compositions so you need to know what operators are, structures, etc (Learning has already begun).

    The most basic example of a Quartz composition I can think of: Drag a video input patch and a billboard patch, connect the output image from the video to the billboard and you can make the composition take the input from the webcam and display it onscreen. That was 2 drag-n-drops and connecting 2 dots. Try beating that. After that you can apply tons of filters to the image. This would be the hello world in Quartz Composer. Much simpler than a C hello world and way much more rewarding.

    Other things you can easily do:
    • Make a composition react to sound, video movement, any USB interface, keyboard, wiimotes, Mac's motion sensors, etc.
    • Use particle systems, make screensavers, animations and games
    • Mix videos, apply effects to videos and images
    • Make the composition read XMLs provided by a website and do stuff with the data.

    So, to answer your question, IMHO, this would be the BEST way to encourage his couriosity and enable him to learn a programming language. Think of it as today's logo (My apologies to anyone involved in Quartz or QC development, I'm trying to make a point)

    Hope you and your kid find this as interesting as I did.
    Cheers

  577. variety by Anonymous Coward · · Score: 0

    The main thing I've noticed at university is that not everyone has the same opinion on different programming languages. If you try to teach him one language and it doesn't appeal you could turn him off programming altogether. Reality is, as much as you would like him to work in *NIX environment, he has to find his own way.

    Personality has a lot to do with it. If he has a tendency toward visual things, or gets bored with things easily, high-level languages that produce visible results quickly may be the way to go.
    Alternatively if he likes pulling things apart and putting them back together, a low-level language might be a better solution.

  578. RE: ANON HACKER by Anonymous Coward · · Score: 0

    It's great that you're showing the initiative to teach your son. The young mind likes games, to be honest, and treats/rewards...so use that to your advantage. For example, ask your son if he wants to play a game where who can *insert really cool and interesting computer hacking/programming task here* at which point you purposely lose the game and he's rewarded (perhaps with ice-cream I don't know)...see where I'm going with this? Key: Remember how teacher's taught you...now mimic that/adapt the strategy :) Hope that helps

  579. What are his interests? by Anonymous Coward · · Score: 0

    What are his interests outside of programming? What would he like to make? Is he interested in art or design? If that's the case maybe Processing (processing.org) is a good place to start. In music? What about supercollider (audiosynth.com)? Websites? What about HTML and javascript? If you don't think you are a great teacher then find a good book to structure the learning process and offer help when he hits a rough spot. The Processing book put out by MIT Press is excellent, it also seems that OReilly is publishing a Head First Programming book that uses Python.

    Good luck!

    -Joe

  580. You craven Liars! by sean4u · · Score: 1

    As if those were your first programs!
    I still remember my ZX81 code that hooked me on programming, burnt onto my retinas:

    10 DATA "Anne", "Barbara", "Caroline"...
    20 DATA "lingerie", "a nurse outfit", "nothing but perspiration"...
    30 DATA "touches", "licks", "kisses"...
    40 DATA ...
    100 PRINT G$(RND * G); " in "; C$(RND * C); " "; A$(RND * A); " my "; P$(RND * P)
    120 GOTO 120 - 20 * (INKEY$ = "Y") + 10 * (INKEY$ = "N")
    130 CLS

    He'll be able to edit that into shape in no time - but may prefer to work on it alone.

  581. Platform by Anonymous Coward · · Score: 0

    I won't go on about the environment. What got me started was my first computer when I was 16. Got it from my uncle. The platform to work on and an internet connection was all I needed to expand and explore.

    Find a platform that suits what he's interested in, and be there to provide suggestions and perhaps direction, but (at least in my case) the freedom and challenge of figuring it all out alone was the thriller.

  582. As a teen... by Anonymous Coward · · Score: 0

    Talking from a teen's point of view (am I the only teen here? sad...), since I am a teen, I suggest that you see if his sudden interest in programming isn't a fly-by interest, like some of mine (guitar, origami, etc.). If it isn't, then introduce him to some of the programming languages out there and cite whether they're good for cross-platform programming or not, what they're normally used to program, etc.
    I would recommend you start with some Java because they can run on different OS's as well as some C++ and BASIC. If he's interested in website design and programs for HTML purposes, introduce him to Perl.
    If you want to spark more interest, there's a great programming game where you program a robot using Java and another using C++. Poorly written programs get the robot killed while well-written programs kill the opposition and survive. It can be found here (Java)
    - http://robocode.sourceforge.net/?Open&ca=daw-prod-robocode
    or here (C++) - http://www.gamerz.net/c++robots/
    Other than that, I can't say much. He'll have a ton of questions (try your best to answer them) and will want help in understanding some concepts. Be Patient! that's key. the more he does it, the more he'll learn. the best way to learn is from mistakes (mostly) and experience.
    Other than that, I have nothing else to add. Good luck!

  583. Do cool computer simulations by Anonymous Coward · · Score: 0

    Use your computer to program cool simulations. A program is nothing else but a way to create / recreate a part of the universe. It doesn't matter which language you use, really. My teen used Java and small computer programs from the following website fun science with your computer. Random walks, chess, planet animations, there's a variety of cool things to program.
    In the goold old days - the 80s - science magazines dedicated one page to programming. Many of us started programming that way, copying Basic instructions and getting all excited to see nice splines on the screen or finding large prime numbers. It's important to not let technology get in the way of curiosity and imagination. Have fun with graphics, create simple games, simulate physical things. Then over time you'll sharpen the technical skills.

  584. Java or something web-related by Anonymous Coward · · Score: 0

    I'm going to have to say that JAVA is the best place to start with him as it's easy to learn and teaches very key topics in programming, especially in regards to OOP. C/C++ doesn't stress OOP enough, and those should be learned after getting a basic understanding of programming - so Java it is. Although I wouldn't recommend Java for any real applications ;)

    As far as getting motivated to start programming, I would suggest something web-based as the results are very fun to play around with. I started with HTML, moved to JavaScript and CSS, then to PHP, then to C/C++, then Java, then a whole bunch else and now I'm a computer science major in college and I'm loving it. But my interests first came from web stuff, but that was just me.

  585. REBOL by Anonymous Coward · · Score: 0

    the best language on earth, learn REBOL
    http://rebol.com/

  586. Greenfoot by Anonymous Coward · · Score: 0

    A while back we had a tech talk at our company by the creator of Greenfoot (http://www.greenfoot.org) which is a Java-based framework of creating 2D worlds. Greenfoot's focus on visual elements and user interaction (as opposed to more abstract computations) makes it appealing to teenagers learning programming.

  587. Depends... by Bones3D_mac · · Score: 1

    Are you doing this because he wants to learn how to program, or are you imposing your own interests on top of his? The worst thing you could do when attempting to encourage someone to do something is to force it on them. I can't begin to tell you how many activities I truly hate now simply because someone thought it would be "good for me to try them" using scare tactics and coercion as a means of getting the desired result.

    (Needless to say, I'm not a fan of religion either...)

    --


    8==8 Bones 8==8
  588. Anonymous Coward by Anonymous Coward · · Score: 0

    How Should We Teach Computer Science? : http://www.codinghorror.com/blog/archives/001035.html

  589. REBOL by Anonymous Coward · · Score: 0

    the best language on earth http://rebol.com

  590. To Get Interested, Provide Interesting Goals by crazybilly · · Score: 1
    I think programming is fun when you're creating something you'd like to see available, when you're accomplishing something either worthwhile or fun.

    I can spend enjoyable time on projects that seem like they'll be good tools when they're done. I have a lot harder time staying interested when the end goal is something else somebody else made up and told me to put together.

    so I'd say the answer is: what's your son interested in? web technology? kernel development? game? help him find the starting point for whatever, and encourage him to think up achievable first projects. From there, it sucks 'em in.

  591. There is a book specifically for this purpose by Anonymous Coward · · Score: 0

    I teach my 10-year old son using a nice book (written for young teenagers, according to the blurb): "Python fuer Kids" by Gregor Lingl (2nd edition, 2006, www.bhv-buch.de). It's in German (I know enough German to be able to use it), but perhaps there is an English translation?

    Although it mildly assumes a Windows environment, I've been using Linux and it's been going fine. The guy implemented a Logo (remember? turtles drawing things) library in Python, so the course starts in a way as a Logo course, but then it quickly moves to the usual programming constructs and practices. And the advantage of this Logo-in-Python approach is that you immediately start drawing fancy geometrical pictures, which at least for my son was more motivating than purely text-based operations. The last chapters show how to implement a simple graphical game -- again, very motivating...

  592. The road i took....... by Anonymous Coward · · Score: 0

    Well, the easiest way to get any kid into C++ is to know whether he likes video games. If he does than you showcase how programming can eventually lead to making video games. You should start him on C++, after that everything else will seem easy for him. Though C++ may be a little intense for him, you should just try and see whether he likes it, if not start him on an easier language. Oh, and if you don't feel comfortable teaching it to him I recommend getting one of those teach your self C++ or C books in 21 days that are around.

  593. Make him courious about concepts by malbrech · · Score: 1

    One of the things that sucked me into programming was realizing that I could play with concepts. I got my eyes opened when I first learnt about finite state machines. This simple concept is so beautiful and yet so powerful. That was 25 years ago, but it sure hasn't chaged a bit.

    I would take hands off from games -- it takes too much, too long until you have something that makes you proud. You want to make sure the road to satisfaction is right: short at the beginning, building up later.

  594. Re:Python 3.0 in months, bad time for teaching Pyt by idlemachine · · Score: 1

    This is the wrong time to pick Python for teaching. Python 3.0 is coming out in months. It's going to be incompatible with all the 2.x versions. There's going to be major changes that effect everything all the way down to "Hello World."

    That sounds like a big confusing mess to deal with explaining to a student.

    Link to python 3.0 info... http://www.python.org/download/releases/3.0/

    Python 3.0 will change far less than most libraries' APIs do between major version releases. If this is really such a deal breaker for you, trust me, noone in the Python community will miss you.

    Hell, noone in the wider programming community will etc.

    This isn't pointless change just to give the Python-detractors something to crow about. (God knows there are times I'd wish Python 3.0 had kept print as a keyword just so people like you would STFU about it.) When did improvement become so damn anathematic to people in the IT industry?

    It's change or die.

  595. Use a language designed for learning by Meriahven · · Score: 1
    To learn to program, a person needs the programmer mindset. At the bottom of that is the ability to run the program in one's head, thinking "If I were the computer, what would I be doing at this point of the program." This skill is not something that people are born with, it must be learned.

    This means that the beginner's language must be very simple, have a very clearly defined instruction set, and it must be able to keep the would-be programmer's interest for a long enough time for the lessons to sink in. It is entirely OK if the language isn't the current fad, useful in real life, general-purpose, or even Turing complete, as long as it is simple enough, and the output is something else than just boring plain text.

    I haven't tried programming Lego Mindstorms myself, so I'll have to stick to recommending Logo. (which, for a young teen, is not at all too childish.)

    The programmer will tell you when it is time to get to more "useful" languages.

  596. try this approach: http://www.arduino.cc/ by Anonymous Coward · · Score: 0

    buy him one off these: http://www.arduino.cc/

    - he will have to install the IDE, it works in linux and win.

    - he will have to learn simple coding when programming the microcontroller. this is a lotta fun, as you can build anything from a house-alarm to a robot, or anything...

    this approach gives a youngster a purpose for programming. it hard to learn something if you dont have a set goal.

    hope this helps!

    will

  597. Why not make a game for his phone? by Anonymous Coward · · Score: 0

    I find the best way to learn is to actually do. So pick a project to do together.

    Why not make a game for his mobile phone. This is relatively easy to do and would be a good introduction to Java. It might even give him an entry point into the gaming industry - if he decides to go that way.

  598. Let him exploit a Webgame by Silizium · · Score: 1

    I suggest to let him exploit one of those stupid and inhumane webgames that are out there in dozens. There is much fun in doing it and he will learn really a bunch of useful things about his system and programming also.

    For example:

    Take a look at a game like space4k.(com|de)

    Show him a bit of java programming, show him how to use a library to web-datamining/testing like httpunit and how to do some simple things with that. Also do some funny stuff with java and sql based on mysql or the like.

    Then go and try to build a working bot on that sort of game. Grinding-games like this one do not deserve that humans spoil their time on stupid clicking. But there is a great use for this sort of game: learning. And he will also will find out, that being smart is not always without problems, cause people really *hate* scripters in those kind of games.

    He will have fun, he will have a live response to what he is doing (very life, I promise!) and he will have all up and downs that come with such a job.

    By the way: programming in java and mining data, responding to web-forms is a really great sort of knowledge for the near and far future. Data is something like gold in our information society and to mine it with a bot is something like mining '49. It's just a game so nothing can happen, nobody is hurt (who counts).

    java, sql, httpunit

    Basetechnology with fun. And I promise if he even manages the captacha in the game he will be a smartass in programming and will lick blood.

    with best regards -
    most hated "player" of space4k.de

    -by the way- i just see a captcha down here in slashdot. It would be fun to crack that one, too...

  599. Re:Flashy GUIs by blankslate · · Score: 1

    I got into programming through (then Macromedia) Flash. The nice thing about Flash is that you can get immediate, visible results with very little programming; there are various ways to perform many common activities, with varying degrees of programming knowledge required.

    For example, you can 'tween' motion by setting keyframes and controlling the easing in the IDE, or you can script the motion using event callbacks and 2D transformations. Once you become comfortable with the IDE approach, you begin to find its limitations, and to understand the utility of a programmatic approach.

    ActionScript also has the advantage of having a lot in common with JavaScript, which offers easy entry into another domain where you can achieve a the satisfaction of getting visible, substantial results with just a little effort.

    My ActionScript started out crude but grew increasingly ambitious, until I left it in search of greener pastures - and found a range of more powerful languages. These days most of my code is server-side, and a substantial amount of it runs without any visible result (or user interaction) at all - but it was valuable (and encouraging) to me at that early stage to encounter such an expressive, sensory environment to learn in.

    --
    ---- death to all fanatics
  600. Java Monkey Engine by Anonymous Coward · · Score: 0

    You could show him some 3D programming. There's a bunch of tutorials for jME showing basic coding examples once the Java SDK has been installed.

  601. Teaching Programming by lsatenstein · · Score: 1

    I don't look at programming as a primary skill. What I think we should be doing is teaching algorithms. Then, in the teaching of algorithms, we ask the student to use a specific language or method to program the algorithm. In my view, the algorithm's implementation in the target language will drive the student to excel. The student will be learning something useful. Just to teach programming and doing a simple read/write to a file, or simple task will not develop the proper skills and in the latter case the student will not receive the challenge to master the language. A "for loop" in any language is still a "for loop", the student needs more challenges.

    --
    Leslie Satenstein Montreal Quebec Canada
  602. Kids and programming by cdobson · · Score: 1

    Drop *nix and get a computer with Windows. Its what they will get in school and most other environments. Get a book on programming games for teens. Something that has a good framework so it is easy to get things started. It should be all about having fun. The techinical stuff will come later - if he has an interest.

  603. How I found the love and passed it on by carrioki · · Score: 1

    I'm 21, and no one in my family is a programmer or anything similar, so I discovered programming through school. I'm not by any means qualified, although I do plan to be, so I'm coming from a totally 'lay' perspective. So, firstly, I learnt in Java, and despite the complete stupidity of the syllabus I was taught I absolutely fell in love with programming and have subsequently read more, improved, fixed the mistakes I was given and dabbled in Python and peeked at some others. My point here (though it isn't readily apparent) is that I think Java is a great language to start with, because it's relatively intuitive and predictable once you understand the basic structures, and there aren't tricky little words and symbols that make sense if you're advanced but not if you're 16, and it's clear, and especially because it has great documentation, that makes it easy to explore on your own. However, far more important then the language, is the love of the process. In my limited experience, when it comes to programming, it seems that love and aptitude go together - those who love problem solving and tinkering are good at it. And for me, there's not much that compares to the joy of creating a problem and solving it elegantly (by my own standards). So, (long story short) when I had the opportunity to tell a couple 16 year olds 'what programming is', I started by giving a problem: how would you draw a square using very simple commands? (one of them had played with Logo many years ago, as had I). When one came up with the simple answer, he was in ecstasy and rapture! And since then, I've corresponded with him, giving him little tidbits and hints that I've gleaned in my self-teaching and practice since school, to supplement his silly syllabus, and he's loving it and doing well. I've also realised that my simple example problem is easily extenable. Seeing as there are only two commands repeated four times, you could introduce the concept of looping - but guide him to the idea before you teach him the implementation in any language. Then what if you want to be able to draw any shape? That leads to variables, and so on. But essentially what I'm saying is guide him to the principles first, then show him how to implement them, and let him make his own problems (I mean bugs, not a project he can do) along the way. Start him off with text applications, using command line and text editor, because that's actually more fun! (I started with a horrible little IDE and unnecessary boilerplates). Such problems as a half-pyramid of asterisks is wildly invigorating the first time you do it. And file IO and interactivity, and pretty GUIs are the kinds of things that keep it fun and interesting. (And if he can make a simple game - hangman, for example - that's perfect). Game modding and kernel hacking and writing in machine code may be fun for experts and geniuses, but for an average boy of 16 (or even 21) that is daunting and something just to be skimmed and envied - the prospect excites me, but I wouldn't want to start there. Also, as I said, I picked it up at about 16 in school, almost by accident (I wasn't very good at accounting, and that was pretty much the only other option my little school was able to offer), and that served me fine. There are things I had to relearn and unlearn, but that's just made me better at it. So encourage him to take it up at school, and let the professionals do most of the work, while you can help him and guide him from the side. No shame in that! That said, if he doesn't have the natural love of it that you and I do, there's not really any point in encouraging him (same way there's no point encouraging me to take up professional golf). It's something that people either fall in love with at first sight, or just don't really care for, and if he isn't in love with it, he won't get the pleasure you do from it. Just my long and meandering 2 cents worth. I hope it helps, and I think it will.

    1. Re:How I found the love and passed it on by carrioki · · Score: 1

      Whoa! Sorry about that folks! It was my first slashdot message and apparently I haven't yet figured out how to format it properly (in terms of line breaks).

  604. Real world projects by MrBlic · · Score: 1

    I remember that my favorite TRS-80 Color Computer projects were the ones that had some sensor or link to the real world. I would use CDS cells to tell if anyone was walking up to the front door, and then have it play some spooky sound...

    Today, I'd try to work a Wii remote and a webcam into a project, and have it do something that your son will have to show all his friends... PyGame lets me do things like play sounds when my son jumps on a DDR mat... (He's three, and I use his voice for the sounds.) Projects like this hopefully contrast nicely with that impersonal plastic feeling that you get in a toy store these days.

    Python would be my choice of language... although Flex would be fun too. At some point, expose him to some assembler and C just so that he starts to develop a model of what is really happening inside the box when he programs it.

    --
    Celebrate Excellence!
  605. Then give him the tools to succeed by visiondancer · · Score: 1

    Programming is something I dabbled in since I was 11, copying BASIC programs out of the back of Boy's Life magazine, I think. But I didn't really understand it, and I didn't really think I could succeed at it, until I learned how to use a debugger.

    I think one thing that really prevented me from understanding programming was that I couldn't see what was going on underneath. I would code a program, run it, it would die with the message "Segmentation Fault," and I would have to go over the program again with only a small idea of where it had failed. Using a debugger to go through it line-by-line, and look at all of the current values for the variables, was a tremendous boost for me, not only in ability, but also in confidence.

    Unfortunately, no one really showed me how to use a debugger, especially early on. It was something I had to find accidentally at age 22 or so; I think it is taken for granted sometimes. The closest I came to seeing a debugger in a class was a 10-minute overview of Eclipse in a 300-level Software Engineering class, and that was after I'd taken at least six programming classes.

    The best thing you can do after you have a good project picked out is help set up the environment and show him the tools a programmer has at their disposal.

  606. Go ask Alice. by Anonymous Coward · · Score: 0

    Carnegie Mellon created Alice to teach kids how to program. Here is the URL: http://www.alice.org/

  607. Encourage your son THIS WAY!!! by brothertruffle880 · · Score: 1

    If you love your son, encourage him to NOT study programming.

    Even if he gets straight "A's, his competition for a job in technology won't come from around the neighborhood, it'll come from around the world. Why hire a Bachelor's degree graduate for 60K when you can get a PHD for 30K in India, China or the Phillipines?

    Tell your son to study air conditioner repair, auto repair, plumbing or carpentry. These jobs, although similarly subject to salary deflation due to cheaper offshore workers coming into this country, can still be viable income sources for enterprising and competent young adults.

    Longer term, the salary deflation present in technology isn't likely to improve. R&D spending by the big tech companies isn't likely to improve anytime soon and start ups are hard to get one's foot into. You must encourage your son to pursue economically viable professions.

    Best,
    BT

  608. Re:Man? by Anonymous Coward · · Score: 0

    Why don't you two just stop complaining and fix the problem once and for all by writing a proper manpage on women?

    $ man woman

    Interesting....

  609. NO GUIS!!! by Anonymous Coward · · Score: 0

    I am currently a college student studying Software Engineering, and when I learned to program, it was because I had an idea for a program- the motivation of a potentially useful product was very helpful. It is also important to have visual affirmation along the way to keep him interested. I learned on a wysiwyg type editor, and I found it to be much more enjoyable than writing the GUIs as I sometimes have to do now. I would recommend staying away from the GUIs.

  610. Hacking 101 by gbickford · · Score: 1

    Boys like to break stuff. Show him how to crash a machine remotely on your home network. Explain how to analyze a system to compromise it. Show him the movies Sneakers and Hackers.

    As a parent you are also in a good position to teach him the ethics of white hat hacking.

    This should give him motivation to learn how to program and develop a deep understanding of how systems work.

    It worked for me.

  611. TI-BASIC by ReptilianSamurai · · Score: 1

    Oh man, brings back memories. My first programming exposure was QBASIC with help from my dad and a book called QBASIC for kids (or something like that, it was actually targeted for children programmers! How many books like that are there today?) But I didn't return to programming until middle school with... yes... the TI-83. (Not +, which came out the very next year to my chagrin).

    I started with simple number counting programs, progressed to moving things around the screen with getkey and output, eventually made a little racer-type program.

    I continued to improve, however, and you'd be amazed what you can do with the very limited BASIC language. By high school graduation I had made small rpgs (never finished them sadly, but it was fun to battle and level up), a minesweeper clone, and my personal favorite Gravitation, a connect-four style game for two players of my own creation. I long since abandoned GOTOs, even to the point of coming up with my own graph-screen based menu system to replace the built in one that is hard-coded to GOTOs.

    There are a lot of handy little tricks you can do in TI-BASIC, for instance, if you start a line with " you can make it a comment (it is a string, but it is ignored if it isn't assigned to a var). The most recent piece of data is always automatically stored in the ANS temporary variable, so you can use it to pass arguments between subprograms. While variables are global and limited to the alphabet (and theta), you could define your own lists and use those instead (or use them as arrays). I even mimicked recursion in my minesweeper clone by using a list as a stack. (I had to use two programs, however, since I don't think you can have a program call itself). For graphics, it helped to set the window size to values between (0,0) and (64,-92) [I think those were the pixel counts, but correct me if I am wrong] so that to match up pixel position with other graph functions (such as line) all you had to do was reverse the order of the X and Y coordinates, and make the Y value negative. Once I figured out that trick, graphical programs were a breeze.

    The constraints in TI-BASIC also really force you to think outside the box as a programmer. Space is incredibly limited, so you learn to make every byte count, and optimize code as much as possible. Additionally, the processor is slow, so you learn ways to improve your algorithms for speed.

    Sure, you could program ASM programs. But for me, the weaknesses of BASIC were all part of the challenge. (Plus there was the advantage of being able to code it directly on the calculator, especially when bored in class). Others liked wasting time playing games on their calculators. I always had more fun making them myself, and it was around that time that I realized I wanted to make programming into a career.

    I'm still tempted to pick up a TI-84+ silver to replace my crummy TI-83 with-no-archive-memory. I miss programming the thing.

    --
    I installed Linux on a car, but it crashed due to bad drivers...
    1. Re:TI-BASIC by ottothecow · · Score: 1
      Just beware, the old style TI graphing calculators feel bombproof. I have seen countless ancient 83's as well as my well used 83+ and my newer 89 (the old style) and they just keep chugging along.

      The new style ones (84, 89ti) all feel cheap andthe buttons are not as nice to use.

      --
      Bottles.
  612. The best way.... by Skitt+1 · · Score: 1

    This is my first post here. To get your son interested in programming is not the question; he already is. The task is to get him to actually program! I feel that the best way is to pick a language (I like C++), get him SIMPLE books (I like the "For Dummies" books myself), and then set him tasks that you applaud when accomplished. The applauding is VERY important! I suggest graphics oriented tasks such as: Make a word move on the screen. Make a ball move up and down. Draw a square with corrected aspect ratio. Make a ball that bounces around the screen. I suggest Text oriented tasks such as: Make a quiz using Data statements. Make a math quiz with random questions. Make a "Mad-Libs" game with user inputs. Make a scrolling "Times Square" sign. Limit his access to libraries of functions for now. Show and encourage him to to create his own library. Remember: Your son may not actually "take" to programming. He may not be as fascinated with the feeling of power we get from controlling a machine as the rest of us are.

  613. Contest programming by Anonymous Coward · · Score: 0

    What, no mention of contest programming? (Or did I miss it in all the other comments.)

    There is a world of contest programming for teenagers out there. Check out a book called Programming Challenges by Skiena and Revilla. Also check out www.artofproblemsolving.com.

  614. Java by nitroamos · · Score: 1

    I would recommend a class. For myself, and probably others, it really helped to have a teacher who know which bad habits to discourage, and who be able to set up the details (compiler, header files, etc) so that all you need to worry about is writing your program. I tried to learn things by "reading a book", but that never worked.

    I felt like Java was a good place to start. I was a TA for some summer school Java at the U of Minnesota, and we had several middle school age kids. Java is nice because you can do all the regular learning-to-program stuff, but it also has a lot of simple graphics capabilities, which was the only thing the kids were really interested in. The goal was not to teach the language, but to provide a constructive play environment. Like Legos.

    Anyway, I would investigate your local universities and community colleges to see what kinds of summer programs they have.

  615. Same Situation: What is working for my son by ToInfinityAndBeyond · · Score: 1

    I have the same situation; a 14 year old son and he wants to learn to program. I am teaching him to program using Python and Pygame to create a simple 2D game. It is working great; he is excited to learn new concepts so that he can add new features to his game. I am glad I didn't start him on PERL or C; I can see now that Python is a quick way to learn to program. He can learn other more specialized languages when he needs them. Pygame provides libraries that allow him easy access to what he wants to do.

  616. The problem with open source by acheron12 · · Score: 1

    The simple programs that everyone thinks of writing ... have already been written. Most of them are on SourceForge.

    Googling an idea and seeing ten free programs that already do that is a great way to drain the excitement, I can tell you.

    --
    there is no god but truth, and reality is its prophet
  617. XNA - Xbox 360 by Anonymous Coward · · Score: 0

    The problem with learning programming is the lack of immediate gratification. Lets face it, console apps are boring 100%. I'm sure plenty of you disagree but you aren't teenagers are you. C# and the XNA dev kit are free to download. Games can be designed for Windows, Zune and XBOX 360. And for only 100 bucks a year to have a chance to sell it on xbox live? I dont' think it has ever been so easy or appealing to make your own game. As others have said game moding is cool too, but with XNA you could download full game source code samples for free and he could learn to modify those too. I'm sure I'll get flamed because most of you probably use open source tools or would never in your life recommend MS tools but fact is that C# is a good language and it's easy to learn, open your minds to new possibilities. If your son wants to release his code as open source that's up to him, and great for him if he does.

  618. anyone remember the power cartridge ? by KingBenny · · Score: 1

    Do things like the old power cartridge for the commodore 64 still exist ? I remember watching all those demo's with their funky interrupt calls who were like able to use more than one colour at once in the outer border of the screen ... the plasmascreens (omg!!!) and much more ... i wanted to know HOW they did that, an the power cartridge, with its ability to freeze the computer at the exact moment where it put something on the screen was like the best tool i ever had, it got me onto assembler cos basic was (and in fact still is) way too slow to get anything useful done (and isnt all that good in helping you understand how the machine itself works, which is, imo , basic to decent coding)... no ? i must have been 10 or 11 at the time so if i can do it ... i'm sure anyone can :=)

    --
    Free speech was meant to be free for all... how can anyone grow up in a nanny state ?
  619. How I learned by rlhawk1 · · Score: 1

    My Dad was/is a programmer, and I always wanted to make games. I started trying when I was 11, trying to use engines and toolkits like rpgtoolkit , 'Custom' and a few others. There's a big list here: http://www.ambrosine.com/resource.html

    The problem was, they couldn't do exactly what I wanted, so I was always trying to use their little scripting languages for things they were never intended for. I always thought programming would be too hard though, and maybe it would have been at that time. I don't know. But when I was 13 or 14, I did learn C++, my first language. Basically, I just learned it from a big book my dad has. First I went part of the way through 'Instant C++ Programming' by Ian Wilks, and then I sopped learning for a while, and came back using 'The Waite Group's C++ Primer Plus' by Paul Snaith. C++ Primer Plus is a much better book, because it's newer, and teaches OOP better and stuff, but Instant C++ Programming might have been better for starting. For example, the C++ Primer Plus didn't even teach about if statements until the 5th chapter! So I was using 'while' loops, not to loop through stuff, but in place of if statements, because I wanted to use conditional stuff. But anyway, that's how I learned - just using the book, and trying to make games. I wanted (want) to make a big RPG. So, I started off with a VERY simple text based game, where if you pressed 'm' then 'Enter', it attacked in melee, 'M' and 'Enter' attacked with magic, and 'b' and 'Enter' attacked with a bow. You got experience for using each of those, and different stats went up or down depending on which you used most. I was /very/ ready for graphics by this time, even though I didn't even know about C++ classes yet, so I started using allegro. I began by simply using it to output text in a full screen environment, and enjoying being able to do stuff with single key presses. I then drew my own font to use for tiles, and then dropped that and began work on a space shooter game with my older brother. He still does most of the graphics and planning for our games, while I do all of the programming. We actually almost completed the engine for that game, but before we did, we moved back to what we /really/ wanted to make - a role playing game. I was able to start it knowing much more about both C++ and allegro because of the previous things. And that's where I am now. So far I've written about 13,000 lines of code on it. Unfortunately, now all my time is spent doing web development with my other older brother. All the C++ definitely helps me to learn anything new. I think it's definitely still my favorite though. ...and I'm only eighteen...

    I guess in short, I was inspired to program because I wanted to make games, and I didn't want to be limited by using toolkits.

  620. Programming Contests perhaps? by shalinmangar · · Score: 1

    Introduce him to competitive programming contests like TopCoder and other programming contest archives such as UVa and spoj.pl

  621. some books are good by The+Hurt · · Score: 1

    there are some books like c# for sharp kids. it is little but encouraging. it shows the programming concepts like simple everyday things. worth a try

  622. The J language by DavidHumus · · Score: 1

    OK - here's where I recommend J (jsoftware.com) as a first language, you all flame me, I call you all a bunch of clueless boobies, and it goes downhill from there.

    Ready to get started?

    Anyway, since we've already had a number of posts like this, it would be interesting to have some follow-up: what did people end up doing and how were the results?

    Personally, I've had no luck getting my daughter interested in programming but she is very much into music composition, so I guess that's something. She did show some interest in an "Eggbert" game when she was little - it lets you design Eggbert video game landscapes/obstacles/rewards that were pretty cool. She was also interested a little bit in some of the J to do some math that could be represented graphically, like pictures of Pascal's triangle modulus some constant - see http://www.jsoftware.com/jwiki/NYCJUG/Projects/Pascal .

  623. Anonymous Coward by Anonymous Coward · · Score: 0

    Order him the 2600 magazine.

    The hacks in the magazine are simple and fun to read, and often enough present some pieces of code. Your son will appreciate your openness towards potentially hazardous information and you will trust him not to abuse his knowledge. After all, teenagers will always be immensely interested in all sorts of society exploitation and mischief - even if the knowledge is never deployed elsewhere than bragging to other kids.

    Python is a brilliant language to use for practical applications; eg. scapy is, in a nutshell, python interface to the TCP/IP stack.

    The K&R C book is also a must-have, even if for nothing else but just to keep his feet on the ground.

  624. Re:PHP will ruin your mind, but Smarty is worse by SimHacker · · Score: 1

    You are absolutely wrong about Smarty, which is a horribly conceived and implemented disaster. Don't be such a yapping apologist, just because you managed to throw together your home page in PHP without knowing any other languages.

    I am speaking from experience, having had to use PHP and Smarty, and having read the source code to Smarty in an vain attempt to figure out how it worked and why it was so difficult to get it to do even the simplest things correctly. I've been much happier using other better designed templating systems, which I will describe below.

    You should read Wolf's Rants about PHP: Truth about short open tags and Smarty.

    After this point, the discussion about the tags comes from shopt open tags to "then what should I use for templating?!? and people would go "Wooo! Smarty! Go with Smarty!", and would make me slap people senseless just for saying that. Just as hating PHP for number of damn good reasons, I have a number of hating Smarty to go along with it. Brace yourself, because here it goes:

    1. Smarty is programming language
    2. Smarty is overkill in majority of cases
    3. Speed: Smarty isn't a solution. it's the major problem.

    and here go the details about stated points above:

    1. Most people would argue, that Smarty is a good solution for templating. I really can't see any valid reasons, that that is so. Specially since "Templating" and "Language" should never be in the same statement. Let alone one word after another. People are telling me, that Smarty is "better for designers, since they don't need to learn PHP!". Wait. What? You're not learning one programming language, but you're learning some other? What's the point in that, anyway? Do us all a favour, and just *think* the next time you issue that statement, okay?
    2. I think, that "overkill" is an understatement. You're trying to disguise simple outputting in a complex set of classes,which implements a programming language inside of it -- Definitively overkill". "But it does caching". No, not really. "Caching", in the terms of Smarty is nothing else than converting that template code into PHP. See? I told you there is no point in using Smarty. It doesn't make your life easier. It doesn't make developer's life easier, and it doesn't make server's life easier.
    3. The previous paragraph says it all about the speed slugs in Smarty, but I feel the urge to recap that:
    1. "caching" mechanism sucks. It's not a proper caching. It's just a conversion of one interpreted language to another one. and in very unoptimized way. If you want to do the proper cachin, go with APC, Zend optimiser or EAcellerator.
    2. The implementation of one interpreted language in another interpreted language does nothing but slow everything down

    I use Drupal for my home page, so I know first hand that it sucks, and why. My dislike for PHP comes from hands on experience, writing and reading PHP code, not just reading web pages about it. PHP is not my only programming language, so I don't lack the perspective to compare it to other alternatives.

    Python has a wide range of templating systems, some of which are much better than Smarty, and a few of which are almost as bad (but none are worse).

    Zope uses DTML, which is unstructured and messy but gets the job done. It also has TAL and METAL, which are cleaner and more powerful, but an incredible pain in the ass to use, and extremely verbose and clumsy. I've written a lot of DTML, TAL and METAL, and I don't want to ever use them again, because I've found much better Python based templating systems since then.

    TurboGears uses Kid, which is a very nicely designed an implemented templating system that provides a thin XML veneer on top of Python, and doesn't try to reinvent its own p

    --
    Take a look and feel free: http://www.PieMenu.com
  625. Get him Revolution Media or PythonCard by Budenny · · Score: 1

    Get him Revolution Media or PythonCard. He'll move on in his own time from either.

  626. Re:PHP will ruin your mind by Anonymous Coward · · Score: 0

    Thank you sir. I have bookmarked your post so that I can point people to it next time I have to explain why PHP hurts my brain so badly. There are just so many reasons that it's easy to leave things out when somebody puts you on the spot.

  627. Importance of immediate visual gratification by Anonymous Coward · · Score: 0

    For these types of students, you will get nowhere starting with a language such as C++ or PHP. Instead, the language + IDE must provide easy visual feedback as to what he's doing so he can compare it to what he wanted to do ("Do what I mean, not what I say"). I made my first steps as a tween in Javascript (DHTML fiddlings), but mostly after I wrote a program that would let me type code and press a single button to see the results, as opposed to saving code and reloading my browser. I even got one of my peers to adapt a simple "hello world" into a script that would switch images after a single sit-down session in which we had mostly covered HTML. This is because all she had to do was "ctrl-s, alt-tab, f5", as opposed to opening up the (gasp!) command line to see if she got her code right, then going over arcane error messages spat out in compiler-speak. That is the importance of immediate gratification.

    However, the problem with my first steps was that I was left without a notion of polymorphism or pointers that I would need in Java or C++. Learning those was painful due to the bad habits I had accumulated. As such, the Processing programming environment (http://processing.org/) would be a better match: it offers an easy to use API along with plenty of examples to tweak. Code and errors can be checked thank to a simple "play" button which brings up the program's visual, engaging output onscreen.

  628. SVG + javascript by JucaBlues · · Score: 1

    I have been experimenting with javascript and SVG to make animations for the browser.

    Look at this game: http://bighead.poli.usp.br/~juca/code/svg/minigame/minigame.svg

    I am now considering to use this to help my teenager cousin. He wants to lear programming and my parents asked me to provide some help.

    I agree that it would be great to provide immediate visual gratification. Then, that is why I suggest SVG+javascript instead of the usual HTML+javascript. Because it is much more interesting to draw an SVG in Inkscape, open it in a text editor and attach a script tag than it would be to explain to the boy all those crazy, non-intuitive CSS stuff.

    Also, it is a field that provides good oportunities for teaching various concepts, such as XML, (let the boy see the SVG both in an editor such as Inkscape and also in a text editor), DOM handling (getElementById, setAttribute), and even AJAX (when the kid wants something more advanced)!

    The benefits:

    1) the kid will be learning reusable concepts. All he/she learns can be used also in html. Learning these in an intuitive and friendly environment first makes the html/css stuff less frightening I guess.

    2) it will be based on web standards

    3) after a quick class about hosting files on a server, the kid will be glad to show his work instantaneously to his friends online. Before that he/she can perfectly work offline editing local files.

  629. DOT DOT DOT by J172 · · Score: 1

    Alright, well you asked for the input of a high schooler... Okay so I'm a Senior in high school. I started programming with BASIC and HTML.. Python might be a good start but depending upon the age might be a little complex.. I'm also wondering why your steering him towards *NIX. Thats a mistake right there, I've been forced to use a single OS since I was little, playing games on the lap of my grandfather (an original IBM geek), back on DOS, then on Windows until recently when I bought my own iMac. *NIX is great but forcing him in one direction will limit him. A true programmer should be able to compile code an any OS hes thrown at. Which means if the code is a different dialect, he should be able to convert it, now I know that no one can ever hope to know all the dialects and all the programming languages, for there are far too many. But don't just sit him in front of lenny and have him code exclusivly on one OS. What I think you should do is just see if he shows enough interest in programming to actually sit down and learn the stuff. If you throw it at him, he might loose interest, or it could flourish, who knows. If you really want to peak his interest, just *tell* him about AJAX and go to Facebook or another popular site that heavily utilizes it, show him what AJAX does compared to HTML alone, or simple PHP. That would have caught my interest a long time ago, should it have existed. Leave a editor or IDE window open and blank, and a programming book next to it (go out and buy one even). Tell him your leaving to go do errands (and actually do it) if hes interested you might come home to a new program being created, or a second Hello World, the point is if he decided to do it when he was alone, he'll be interested enough to pursue it as a hobby. Thats my two cents.

    1. Re:DOT DOT DOT by J172 · · Score: 1

      P.S. I agree. With dvice_null, dont teach multiple languages at once, I tried that when I was 16... uhh yeah...Just dont =p. P.P.S. You should be happy, this is the post that finally made me join Slashdot =p

  630. Parent is awesome; AS3, Flex, and Flash by arete · · Score: 1

    Late to the discussion, I would've modded the parent up, but it's already at +5.

    Actionscript 3 is strongly typed and OOP, so it won't teach the bad habits of some introductory languages.

    For the artistically/animationly inclined, Flash gives you tons of power there. For the more programmatically inclined, Flex is an awesome programming environment that gives you all the application power of Flash Player using MXML, an XML layout language. Both are Actionscript 3. And I agree that there's tons of community. Being web based, it's trivial to share with lots of people.

    But most importantly, the investment to build an interactive GUI application in, say, Flex is, in my opinion, as low as it can be and still be a full featured programming language. I'm sure you can build a non-interactive application just as easily in a lot of languages, but applications now, even trivial ones, should be able to let you show things on a screen and click on buttons. I think this is really key. You can DO something, something modest but still cool, and grow what you know by learning to do one more thing at a time. So without teaching you tons of bad practice, you can learn fairly incrementally. (Obviously you should grow up and learn more structure at some point... but that's later.)

    If it wasn't clear I think whoever else in the chain said that it's better to start a kid by making them bash their brains against some really initially unrewarding stuff for the big payoff later - where the payoff is big BECAUSE it was hard - is basically crazy. I mean, if the kid WANTS to, they can go ahead. But if the goal is to encourage the programming itself, that's pretty crazy. The goal of that unrewarding stuff would be to make them set and work for long term goals... an admirable skill to learn, but one that's learned by extending what the kid WANTS to work on... you can't both move them into something they don't care about AND set the goals far ahead. It's fun to remember that I wrote stuff in assembly, but only a few people would've kept with programming if that's where they started.

    --
    Looking for freelance Actionscript (Flash/Flex) or ColdFusion work and/or freelance developers. Email me, put Slashdot
  631. Actionscript vs Javascript by arete · · Score: 1

    I'm late, but someone else posted and I replied about Actionscript elsewhere in the thread. I basically think you're completely on target about the goalset of being able to quickly leverage GUI power. But I believe Actionscript (Flex, Flash) is a much better first-choice.

    Actionscript is much more consistent than browser JS, which makes it less frustrating to develop in. (I'm not trying to say this is a philosophical problem in JS, and indeed Actionscript is also an ECMAScript language, so they're very close. This is basically just browser divergence, and the political causes of that are beyond the scope of this post.)

    In Flex (compared to a browser) the layout language is MXML instead of HTML. MXML has powerful features that expect to interact with Actionscript. And HTML is less consistent, and CSS is browsers is less consistent, for the same reasons listed above.

    MXML makes it trivial to add considerably more complex GUI elements, like a tiled list of images or a pretty chart. (Trivial as long as your data is in a convenient format, XML setup the way it expects. If your schema is different it's still easy, but it's more than 3 lines of code.)

    --
    Looking for freelance Actionscript (Flash/Flex) or ColdFusion work and/or freelance developers. Email me, put Slashdot
  632. careful... by ingenious+nor · · Score: 1

    I'm 20 right now and I study computer science at a n university. About ten years ago I started being interested in programming. My dad thought it was great(he's and engenieer and no programmer, but still) so he asked some folks for advice and I ended with a huge book about visual basic 6.0. It was new, it was easy, it was trendy... and I hated it. So I returned to playing starcraft/diablo/whatever. A couple of years later it just happened to pass that I got my hands on a book about C by H.Schildt and it was love from first sight if you know what I mean.. Now I'm pretty much aware that I've inherited some pretty bad habbits from his books, but I don't care that much about it, I'm trying to improve every day as it is :) So my advice is - don't make any choices for your kid. Show him as much as you can and let him decide. He might love Python, and he might not. He might love graphics, and yet again - he might not.

  633. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  634. Screaming at questioners is good for learning how? by leftie · · Score: 1

    The above over-reaction is a perfect example of why right now is a bad time to use Python to teach a new young programmer. Wait at least a year until all the Pythonistas aren't as oversensitive to questions about Python 3.0.

    Imagine some poor kids who dared to asked about why the print statement is different than it was last month on a python message board or mailing list getting this kinda crap?

    "If you don't understand the new print staement, LEAVE. Trust me, noone in the Python community will miss you! Hell, noone in the wider programming community will etc."

    "Shut up. Just learn to like that new print statement. It's CHANGE OR DIE."

    And God have mercy on the poor kid who asks the Pythonistas about why they are going to the trouble of breaking python, but not addressing the it's huge concurrency problems while it's being broken.

  635. Re:Screaming at questioners is good for learning h by idlemachine · · Score: 1

    You really are a dopey little fucker, aren't you? I'm not entirely sure how your uppercasing my words makes me the one screaming...

    Wait at least a year until all the Pythonistas aren't as oversensitive to questions about Python 3.0.

    You didn't ask any questions, you made unsubstantiated claims that weren't supported by anything, not even the link you posted to. What the Python community is 'oversensitive' to is lies and bigoted rhetoric. What I did was highlight your bias and inaccuracy, the audacity of which has clearly shaken you.

    Did Python murder your parents before your eyes at a young age or something?

    not addressing the it's huge concurrency problems while it's being broken

    And out comes another tired old trope. You clearly don't know about the multiprocessing module that's being released with 3.0. But again, don't let the facts get in the way of your bullshit posturing.

    The only "concurrency problems" Python seems to have at the moment is the lack of a 'make this run in parallel without me having to do any thinking' switch. Good luck with waiting for that.

  636. Re:Screaming at questioners is good for learning h by leftie · · Score: 1

    idlemachine" "You really are a dopey little fucker, aren't you? I'm not entirely sure how your uppercasing my words makes me the one screaming"

    Please demonstrate to us all how there is a "calm voiced and rational" manner in which you said...

    "You really are a dopey little fucker, aren't you?"

    "Did Python murder your parents before your eyes at a young age or something?"

    "If this is really such a deal breaker for you, trust me, noone in the Python community will miss you.

    Hell, noone in the wider programming community will"

    "God knows there are times I'd wish Python 3.0 had kept print as a keyword just so people like you would shut the fuck up about it."

    "When did improvement become so damn anathematic to people in the IT industry? It's change or die."

    Someone posts batshit crazy statements like those... it's a given they're screaming rants.

    And as I've said in two posts and you have proven for me, idlemachine... the reason one should not teach Python to a young programmer isn't the language, it the changes that are a couple of months away that are going to make all the current tutorials and learning resources wrong, as well as the furor and instability surrounding the Python community] right now. True believer Pythonistas, as idlemachine demonstrated, are very, very oversentitive about the topic of Python 3.0 changes and detonate at slightest suggestion that everything now and in the future perfect in Pythonland. It's just not the place for a young learner to be right now.

  637. Re:Screaming at questioners is good for learning h by idlemachine · · Score: 1
    Nice removal of the context, there. I particularly admire how you don't address any of the points I raised (how the 3.0 migration path docs don't agree with what you're claiming & the existence of the multiprocessing module especially) and are instead continuing trying to paint anyone who disagrees with your "opinion" as some kind of jihadi.

    Good luck with that.

    Here's a little hint before I go: try actually backing up your claims with some external evidence, you might come off less as a whiny little cuntsmear that way.

    Might.

  638. What's the topic?"How To Encourage a Young Teen To by leftie · · Score: 1

    Look at the title of the thread, dumbass.

    "How To Encourage a Young Teen To Learn Programming?"

    I am the one who's been on point and in proper context the whole discussion... what is or isn't a good language for young programmers to learn right now. The subject these various aspect of the Python language you keep on trying to change the subject to, and it never was. It's whether or not the upheaval surrounding a language (Python) that has chosen to make itself obsolete in a couple of months is an appropriate choice to learn right now.

    You, on the other hand, are exactly the type of hypersensitive Pythonista fanbois who prove part of my argument that Python is not a good language for young learners. Nobody is going to learn anything from hypersensitive argumentative assholes like idlemachine. The only thing a pythonista fanboi like idlemachine is going to do to a young programming student is make them quit programming before they even get started.

    Anyone that dares try to raise a question about the one true faith of the Pythonista gets treated just like I have here... with a level of outrage normal human beings only display when they find out one of their siblings have been murdered or their mother was gang-raped.

  639. Re:What's the topic?"How To Encourage a Young Teen by idlemachine · · Score: 1

    I'm sorry, I meant to say hyperbolic little cuntsmear.

    My mistake :)

  640. Re:What's the topic?"How To Encourage a Young Teen by leftie · · Score: 1

    idlemachine, who a few posts before this said...

    "Did Python murder your parents before your eyes at a young age or something?" ...dares to call someone else "hyperbolic?"

    LMAO!

  641. Re:What's the topic?"How To Encourage a Young Teen by Anonymous Coward · · Score: 0

    He's right. You really *are* a cuntsmear.

  642. And you claim you aren't idlemachine, huh? by leftie · · Score: 1

    So you claim in the middle of the night, you claim you are some other anonymous individual who just happened to find and start reading a 2 week old 1000 post thread and further you read this many posts into idlemachines ranting, too, huh?

    Damn idlemachine, that's sinks to a new low around here. Someone has to be just sick with desperation to try to create fake agreement posts.

    Really fucking desperate. Hillariosly so! ROFLMAO!