Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses

Comment on

( #3333=superdoc: print w/replies, xml ) Need Help??
This meditation is rather off-topic. It is not related to perl at all. It is about looking for a right tool for a job, where job is very special and dear to me: how to introduce programming to my son, 10, not boringly, but funny and interesting way.

I was looking for different options for couple of weeks, and here is what I found:

First, IMO perl is not appropriate as first programming language for 10 year old. So even if I like perl for my job duties, it's out as teaching tool. Somebody mentioned he is teaching his young brother C, so brother will appreciate perl later. I am not so sure about that - brother might decide that programming is not for him and never "upgrade" to perl.
What other language are for beginners? BASIC was intended to beginners, but I believe we can do better than that. Pascal? Maybe for a college student, but does not feel appropriate for 10 years old. I was hoping for something fun, with graphic interface, graphic output. Where language is desined to solve tasks tasks relevant to 10 year old boy. Something graphic, some games.

For a while I was looking to LOGO. Defining new procedures is easy and makes sense, it has excellent turtle graphics, so programming is telling turtle how to move (and make line while moving). You can immediatelly see graphic trace.
There is even LOGO for PalmPilot available (as I posted at (pmas) Re2 : Junior Perl), but my son was not excited. Palm is small, and he wanted more to play games and write his own games, not just learn programming per se. And also LOGO newsgroup is alive, but not exactly exciting. Having LOGO on Palm is very convenient, but screen is small, writing code is a mess (for 10 years old), he was confused. LOGO is OK, but not a good fit for him.

I was even looking into languages to write text adventure games, but they were too complex (to allow creating interesting games), and programming was rather boring: plain coding - just type text in editor, stare into screen, edit, compile, run, try to make sense of statements, exactly like I am doing in my job.. ;-) So again, I was hoping to find something more visual, and more fun to interact with.

Then - bingo! I found GameMaker. It has fully graphic environment for programming games. You can create objects (not OO objects - just pictures with behavior), add your own images (even moving) for objects, active objects can have different events. "To program" means drag-and-dropping statements "buttons" into event "areas", then setting properties for your statements vie right-click. Programming is event-based, and C-like language is available to implement any complex concepts. But you will be surprised how interesting and complex games can be done by using just basic statements!
Package comes with examples of GameMaker games, from simple bouncing balls to pacman, asteroids, sokoban, and simple arcade game.

So now my son spends his computer time not killing monsters in dungeons, but designing (and lot of testing = actual playing) his own games. He tried to create pacman-like game, and he went through full lifecycle of code development: research how implement which feature, seting priorities, coding, and then debugging code (and cancelling the project). We were able together to look into example games to find out how some tricks are implemented, researching, explaining, tweaking something to see how it works and how it may change the game.

We are really programming. Heck, I was so excited myself when I downloaded GameMaker, I spent 2 hours tweaking one simple example game and playing it, and I do not recall last time I had this kind of fun myself! Yes, perl is satysfing, but not this much fun.

GameMaker has also own designers community (although I had some problems to subscribe - but it kind of works now), I downloaded version 3 month ago, version 4 was just released - so it is alive and kicking.

So if you have somebody around who might be interested in learning how to program by programming his/her own games, and spare PC (GameMaker is Windows only), try GameMaker. You'll be glad you did.

Your reward: After couple hours of hiking, when your son is tired a lot, the only thing making him forget tirednes and walk some more is: You discuss how to implement some new game, and you can tell that he is designing it in his head, and his design makes sense.
Another reward: you are not the only person home your wife asks to stop programmning and go to sleep. :^)

I wanted to post this before weekend, so if you are interested, you can research it over the weekend. I do hope you will have at least as much fun as I had.

Update I forgot to mention that GameMaker is free!

I am leaving to vacation for a week, so I will not be able to answer your comments. Just have fun!

To make errors is human. But to make million errors per second, you need a computer.

In reply to Learning how to program (for youngsters of any age) by pmas

Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":

  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?

    What's my password?
    Create A New User
    [Discipulus]: I already know how much distinct paths exists but to demonstrate the property i want to have them all
    [oiskuu]: ie C(n, k); where n is height difference, k is position in the line
    [Discipulus]: infact there are 70 distinct path to reach the tale wich holds 70
    [Discipulus]: what i want is to compute them
    [oiskuu]: You want to draw the path? $iter = combinations( $TOP_HEIGHT .. $NODE_HEIGHT, $pos); then get the path from the iter, level change at depth x, for(..) $pos += $level_change; something like that
    [oiskuu]: yergh, <code> tags... [$top_height .. $node_height]

    How do I use this? | Other CB clients
    Other Users?
    Others about the Monastery: (10)
    As of 2018-03-19 11:09 GMT
    Find Nodes?
      Voting Booth?
      When I think of a mole I think of:

      Results (239 votes). Check out past polls.