Stories
Slash Boxes
Comments

SoylentNews is people

posted by martyb on Thursday December 03 2015, @11:55AM   Printer-friendly
from the making-introductions dept.

My 9 year old girl has expressed an interest in learning to program. Of course I want something that will give her short term rewards, but still teach solid skills. I know this question gets asked from time to time on various forums but I wanted to get some opinions from the good people of SN.

Christmas is coming... she's (for now) a Windows user... is there something you'd recommend as a gift?

Thanks for your ideas.


Original Submission

 
This discussion has been archived. No new comments can be posted.
Display Options Threshold/Breakthrough Mark All as Read Mark All as Unread
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
  • (Score: 3, Interesting) by mendax on Thursday December 03 2015, @12:54PM

    by mendax (2840) on Thursday December 03 2015, @12:54PM (#271319)

    When I started programming I was 17 and the language was Basic, followed soon after by Fortran on the mainframe at my dad's university. (Hey, this was 1980 so give me some latitude!) The nice thing about both those languages is that they are were pretty simple and straightforward. They didn't have a lot of complexity to them unless you wanted it. And you don't want to use that advanced stuff until you become a competent coder.

    So, with that I'd start with something relatively simple such as a scripting language. I'm partial to Groovy myself but Perl might be a good choice as well. Then once the kid gets proficient, she can move on to some of the more complicated languages.

    As for a gift, I'd give her a Linux partition or even a laptop with the Windows boot sector virus removed and Linux installed. You should get her away from that awful Windows disease. Of course, since she's your daughter, you should splurge and give her a low-end MacBook air, or buy an older MacBook. I've seen new and/or refurbished models of late 2008 MacBooks (like the one I still use) on Amazon for not a lot of money. You can't run anything beyond Snow Leopard on them but I know from experience that it is an excellent Linux laptop. I run Ubuntu 12.04 on it.

    --
    It's really quite a simple choice: Life, Death, or Los Angeles.
    Starting Score:    1  point
    Moderation   +1  
       Interesting=1, Total=1
    Extra 'Interesting' Modifier   0  
    Karma-Bonus Modifier   +1  

    Total Score:   3  
  • (Score: 3, Interesting) by Justin Case on Thursday December 03 2015, @01:55PM

    by Justin Case (4239) on Thursday December 03 2015, @01:55PM (#271335) Journal

    OP here. I agree with your thoughts about Windows and actually gave her a Linux laptop several years ago. However at that time she only wanted games and it didn't have her favorites. I tried to show her others but it didn't take. But of course I'll be looking for an opportunity to get her back on a real computer. :) Just don't want to make the leap into programming also a leap into a new OS at the same time.

  • (Score: 2) by Marand on Thursday December 03 2015, @02:50PM

    by Marand (1081) on Thursday December 03 2015, @02:50PM (#271359) Journal

    So, with that I'd start with something relatively simple such as a scripting language. I'm partial to Groovy myself but Perl might be a good choice as well. Then once the kid gets proficient, she can move on to some of the more complicated languages.

    I think Lua might be the best fit for this. It's a small language; Perl-like in how it implements things like OOP, arrays, and maps (via tables); and doesn't have a lot of parts to learn. Functions are first-class so advanced things are possible and experimentation is easy with a generally friendly REPL invoked by calling lua without a file to run.

    It's commonly used to extend games, from making addons for MMOs to driving most of Don't Starve. It's also used in some Minecraft mods like Computercraft (in-game use) and Luacraft (extension of the game itself with lua). If a game she likes uses lua it could help make programming seem more practical and 'real' to her.

    • (Score: 2) by Marand on Thursday December 03 2015, @03:13PM

      by Marand (1081) on Thursday December 03 2015, @03:13PM (#271369) Journal

      If a game she likes uses lua it could help make programming seem more practical and 'real' to her.

      I should have elaborated on this more. As an example, when I was young I had access to an old Commodore 128 that likely would have been binned if I hadn't gotten it. It only came with a few disks, mostly damaged and unusable (except for the CP/M one that would occasionally read) and a thick manual on BASIC 7.0, which is what it booted into if no disk was present.

      So, I had a computer that could do almost nothing unless I wrote it myself and a manual to help me write programs. That made coding practical and useful to me and was a driving force that kept me learning, and when I finally got a proper PC, I still had that 'make it myself' mindset. If I couldn't find what I need I made it.

      If I hadn't had that practical application, however, I may never have seen a point in learning about programming. I remember school trying to get students started on it with logo and some other toy crap, and I never cared at all until I found a tangible benefit. Those cutesy toy languages might be simple to learn but they also can give the impression that you can't make anything useful to your interests.

    • (Score: 2) by VanessaE on Friday December 04 2015, @12:18AM

      by VanessaE (3396) <vanessa.e.dannenberg@gmail.com> on Friday December 04 2015, @12:18AM (#271627) Journal

      As long as you're bringing up Lua in the context of Minecraft, I might suggest checking out Minetest instead (http://minetest.net), as its game content and modding system is based around Lua (has been for a few years), and being open source, it gives the budding programmer a chance to try modifying the engine itself (via C++) and sending those modifications back upstream, if they get tired of Lua.

  • (Score: 2) by bzipitidoo on Thursday December 03 2015, @03:48PM

    by bzipitidoo (4388) on Thursday December 03 2015, @03:48PM (#271396) Journal

    Perl?!? That is high on my list of languages I wouldn't dare use to introduce children, or adults either, to programming. Even if you cut things way down, forget the regular expressions, hashes, and OOP lite, it's still heavy on sigils. Do you really want to try to explain appropriate use of the '$' and '@' sigils for an array, or would you try to leave arrays out too? What about special variables, $_ and $0, $1, etc? If you're still game, be aware that Perl6 changed a lot of things, even down to how '$' and '@' are used for arrays. In Perl5, the first element of an array x is accessed with $x[0], in Perl6, that's @x[0]. (Really, I think Perl5 should have used @x[0] to start with.) Yes, Perl is better than bash shell scripting, but if going with an adult language, I would chose Python over Perl. Lisp or one of its offspring is another possibility. If, however, Perl is your baby, I'd go with Perl6 rather than Perl5.

    Does anyone disagree that C/C++ is also a bad choice? Think that's been the consensus for 20 plus years, but it's been used in intro CS courses anyway, in large part because it's everywhere. Starting on Java in preference to C/C++ has a number of problems. Java is cleaner, but there was always that suspicion that the somewhat proprietary nature of Java would bite us later, and when Oracle bought Sun, those fears gained traction. Users of a programming language should not have to worry about such corporate events. Java is also a world of its own. It was meant to become the language of the Internet, but Javascript, the totally different language with the confusingly similar name, is the native language of browsers.

    BASIC, real BASIC with line numbers, not Visual Basic, has been out of favor for a long time. Fortran? What does Fortran have to offer over other high level languages? Better handling of advanced math that children won't have learned yet? You didn't mention Pascal, and that's okay. Pascal is alright, is meant for beginners, but I find the use of "begin" and "end" annoyingly verbose compared to the curly braces of curly brace languages, and I would not choose it either. Another bad feature of Pascal is the wholly unnecessary and artificial distinction between a function and a procedure. That distinction is legacy Algol, and it should have been dropped. Anyway, Pascal, and Modula, are pretty much dead languages now.

    What it comes down to is that there is still much room for improvement in programming languages. For clean and easy syntax, Python is about the best of currently popular languages, but I wish there was something better.

    • (Score: 2) by mendax on Thursday December 03 2015, @08:34PM

      by mendax (2840) on Thursday December 03 2015, @08:34PM (#271545)

      BASIC, real BASIC with line numbers, not Visual Basic, has been out of favor for a long time. Fortran? What does Fortran have to offer over other high level languages? Better handling of advanced math that children won't have learned yet?

      I'm not suggesting that kids use the old-fashioned Basic or Fortran now. I just used them as examples of languages that were pretty simple in their day because didn't require you to mess around with such awful things as garbage collection or pointers, and it is simplicity that kids should start with so they don't get frustrated and find something more fun to do.

      In defense of Perl, Perl is an incredibly powerful language, like pretty much all the scripting languages today, but that doesn't mean that the kid has to make use of those features. It's not too difficult to skip over most of the frustrating shit. Actually, I think a kid would find regular expressions to be quite fascinating. Simple regular expressions are very straightforward and any bonehead can understand them.

      --
      It's really quite a simple choice: Life, Death, or Los Angeles.
  • (Score: 0) by Anonymous Coward on Thursday December 03 2015, @08:41PM

    by Anonymous Coward on Thursday December 03 2015, @08:41PM (#271549)

    I've seen new and/or refurbished models of late 2008 MacBooks (like the one I still use) on Amazon for not a lot of money. You can't run anything beyond Snow Leopard on them but I know from experience that it is an excellent Linux laptop. I run Ubuntu 12.04 on it.

    Ubuntu LTS is a fine choice, but as long as the processor is 64 bit (Core 2 duo) you can get Yosemite (and El Capitan probably) running very easily with Pike's boot.efi.

  • (Score: 2) by HiThere on Friday December 04 2015, @03:20AM

    by HiThere (866) Subscriber Badge on Friday December 04 2015, @03:20AM (#271678) Journal

    FWIW there's an easy transition from Scratch to Squeak using e-toys to Squeak to any computer language you want (though Python and Ruby are the easiest transitions).

    OTOH, I haven't looked at e-toys for a long time, so it may no longer be maintained.

    --
    Javascript is what you use to allow unknown third parties to run software you have no idea about on your computer.