What programming language should my daughter (and I) learn?

Discussion in 'Off Topic [BG]' started by smperry, Dec 12, 2013.


  1. smperry

    smperry Moderator Supporting Member

    Joined:
    Nov 3, 2003
    Media:
    1
    Location:
    Long Island, NY
    My daughter is interested in learning how to write code and I want to support that as much as I can. I was just a little bit older when I started making programs in basic. She has an old laptop that is running on Linux, so anything compatible with that would be a plus (but not necessary I guess).

    She's eight, but her reading & mathematical skills are way past that; any beginning materials for the middle or high school level should be fine, especially since this would hopefully be a long-term father/daughter thing.

    What has good resources available (print or online)?What's the most kid-friendly (but a "real" language)? What's most useful, now or for the future? I know that's several different goals, so of course there's probably going to be a compromise, but hopefully you get the idea. I have some thoughts based on some initial searching, but would rather hear from people who know more than I do.

    Thanks in advance!
  2. Ziltoid

    Ziltoid Supporting Member

    Joined:
    Apr 10, 2009
    Location:
    Canada
  3. Selta

    Selta

    Joined:
    Feb 6, 2002
    Location:
    Somewhere Far Beyond
    Disclosures:
    Uncompensated endorsing user: EBMM
    What do you actually want to build? It's hard to really recommend languages without knowing any kind of goal.
    HTML, CSS, PHP (and SQL) are fun easy things to do for basic web dev type stuff.
    Python (cool, especially if you want to play around with like Raspberry Pi), C#, and Java are good to get into OO programming (though Java is more of a hyrbid than true OO).
    I think along with language (or even as a prelude), you'll want to focus on strong problem solving, logical thinking, good writing/communication/documentation skills... all of which are language agnostic, but all are incredibly important to programming as a whole.

    Here's a few books I have and would recommend:
    http://www.amazon.com/dp/0321694694 <- C#, beginner and assumes little programming experience
    http://www.amazon.com/dp/1935182471 <- C#, in depth
    http://www.amazon.com/dp/0596101015 <- PHP "cookbook" - very approachable book
    http://www.amazon.com/dp/0735626030 <- Good T-SQL book, though doesn't get into real db design or topics like normalization or anything - mostly how to interact with data.

    I'd have to go into my office and look on my book shelf to see what other ones I have...
  4. ncapone

    ncapone

    Joined:
    Nov 17, 2010
    Python is good, and easy to learn.
  5. Register to disable this ad
  6. smperry

    smperry Moderator Supporting Member

    Joined:
    Nov 3, 2003
    Media:
    1
    Location:
    Long Island, NY
    Oh yeah, I should have mentioned that. I think she'd like web development, graphics, or games (even text based). She already likes to make "newspapers" using word processing software, and likes math games and involved word problems (I'm in the education field and a former math geek). We do a ton of the problem solving/logical thinking at the dinner table, so I see this as a reasonable next thing...but your points are well taken.

    Python was definitely on the list, so that's good to hear.
  7. MOEBASSPLAYER

    MOEBASSPLAYER

    Joined:
    Jul 21, 2010
    Location:
    Des Plaines Illinois
    1 vote for COBOL. (yes, I still code COBOL every day of my life).

    Anything in the .NET family is a safe bet.
  8. UncleFluffy

    UncleFluffy Gold Supporting Member

    Joined:
    Mar 8, 2009
    Location:
    California
    Disclosures:
    Head Tinkerer, The Flufflab
    Python is a good place to start for learning the fundamental concepts without getting trapped in a "toy" language.

    Java is OK for getting started but starts to get in the way pretty fast.

    C is good if you want to understand what's going on closer to the bare metal.

    Haskell is a good mind-stretcher if you want to be able to handle abstraction and have a more "mathematical" view of software.

    C++ is, IMO, a complete mess nowadays and I'd avoid it as a learning language if at all possible.

    There are also a lot of skills outside of just language usage that make for a good software engineer. Communication, mathematics, teamwork, all that good stuff ...
  9. Selta

    Selta

    Joined:
    Feb 6, 2002
    Location:
    Somewhere Far Beyond
    Disclosures:
    Uncompensated endorsing user: EBMM
    GUI stuff is... interesting, as you need the art to go along with the code. Not that you need anything extravagant of course. This gets *really* interesting if you go into 3D.
    I'd almost ask her to pick one focus point and start there. See how it goes. If she loves it, push into more advanced stuff with it. If she doesn't seem really into it, move to another goal... maybe start with web dev, and if that doesn't keep her going, get into text based games (which you could do on the web, or as standalone). The language, when it is all said and done, is the easy part really.
  10. Selta

    Selta

    Joined:
    Feb 6, 2002
    Location:
    Somewhere Far Beyond
    Disclosures:
    Uncompensated endorsing user: EBMM
    A friend and I have a running joke (and I'm sure we're not the first/only ones to come up with it). Java is an OO, if the object is to be terrible.
  11. UncleFluffy

    UncleFluffy Gold Supporting Member

    Joined:
    Mar 8, 2009
    Location:
    California
    Disclosures:
    Head Tinkerer, The Flufflab
    If she goes for graphics/games, feel free to loop me in if the questions get outside of your comfort zone. Especially for the 3D / GPU stuff.
  12. UncleFluffy

    UncleFluffy Gold Supporting Member

    Joined:
    Mar 8, 2009
    Location:
    California
    Disclosures:
    Head Tinkerer, The Flufflab
    "Build something that even a fool can use and only a fool would want to use it"
  13. smperry

    smperry Moderator Supporting Member

    Joined:
    Nov 3, 2003
    Media:
    1
    Location:
    Long Island, NY
    Thanks for the suggestions so far! I'm going to talk to her about it more this weekend to help point us in a direction.
  14. fdeck

    fdeck Supporting Member

    Joined:
    Mar 20, 2004
    Location:
    Madison WI
    Disclosures:
    HPF Technology: Protecting the Pocket since 2007
    I've got a major interest in this, as I'm teaching my kids programming and they are quite interested in it.

    For age 8, I suggest checking out Scratch. http://scratch.mit.edu/ In addition to being easy for kids to learn, it has a couple of other features of interest: First, it is "sandboxed," meaning that it can't do any harm on your computer. Second, there is an "ecosystem" of programs that kids share with one another, and a well moderated web forum.

    My kids have enjoyed it a lot. Don't be put off by the fact that it's not a "professional" language. By the time she's ready for a programming gig, everything will be different anyway, but most of the fundamentals will be the same. And Scratch will get her started with the fundamentals.

    I can't think of any changes to Fluffy's run-down of languages. For kids-of-all-ages, I suggest Python. It is one of the top ten programming languages, and has an incredible range of uses. In fact I use Python as my main language at work, and have written thousands of lines of code for prototyping of scientific instruments, data analysis, graphing, and so forth. It seems promising that Python is growing in popularity among people like scientists and hobbyists, who use programming to make themselves productive.

    Check out what people are doing with Raspberry Pi, which also has a lot of kid-oriented stuff, including a magazine.

    When she gets a bit older (i.e., middle school algebra level), she might be interested in Maxima, which is a math problem solving tool.
  15. UncleFluffy

    UncleFluffy Gold Supporting Member

    Joined:
    Mar 8, 2009
    Location:
    California
    Disclosures:
    Head Tinkerer, The Flufflab
    Wolfram just announced that they're releasing a free version of Mathematica for the Raspberry Pi. That's a crazy good deal.
  16. fdeck

    fdeck Supporting Member

    Joined:
    Mar 20, 2004
    Location:
    Madison WI
    Disclosures:
    HPF Technology: Protecting the Pocket since 2007
    I installed it but haven't gotten around to trying it out yet.
  17. TinyE

    TinyE

    Joined:
    Jan 31, 2013
    Location:
    portland,or
    Yes raspberry pi, also perl, bash and foreman. Html5 is really cool stuff, and I think everyone should understand how to write puppet modules!
  18. Tgolsson

    Tgolsson

    Joined:
    Oct 7, 2013
    I personally started with Delphi. Don't know any today, but it was good fun then. Might be worth checking out as I remember it having a very easy syntax for a non-English speaker. I believe the environment I used was Borland. Being about ten years then, and that being ten years ago... YMMV. I would rate any program with either point and click design schemes (.net, Delphi, Java with netbeans) or very easy io (.net, Python, Delphi) as prime contenders. I'd stay far from any language where core functionality needs imports unless the environment handles them. However, you also want a language which you are comfortable in.

    For Webdev I would avoid any dev environment like the plague. Notepad (++) is much better if you want to learn anything. Start with HTML and css2 and do the really basic thing and build from scratch. You can come a long way with these tools. Then I would do Css3 and pseudo-elements. After that I would go ahead with javascript. Avoid php/server script languages as long as you can. They add a lot of unneeded complexity such as needing a server, being really difficult from a sequential standpoint and having terrible syntax.

    My cents, having taught myself these things once upon a time.
  19. Bocete

    Bocete My E string is 36 1/4" long Supporting Member

    Joined:
    Sep 30, 2006
    Python is a very good choice for a first language, most definitely. Start there for sure, then see where you go.

    Borland/Delphi are dead.

    Do the world a favor and do not teach PHP to either yourself or the daughter as your first server-side web language. It's a terrible, ad-hoc designed language that should be deprecated as soon as possible, and it will skew your perception of what server-side programming is. Take a look at it once you've seen other languages/libraries is that domain.

    I'd suggest drawing a wide circle around .NET stuff. Unless Microsoft is signing the check every month, do not lock yourself in.

    My PhD friends in the Programming Languages lab at the department love Scala. It is a fairly advanced language, but it's basically Java made better.

    I agree that you'd do best to avoid development environments. I use vim, but Notepad++ is an good choice too and doesn't have that steep learning curve. While laying components around visually is pretty, it's useless when it comes to learning anything.

    Finally, pretty much all web applications today involve some form of database underneath. Learning SQL is a safe bet there.


    If you are a former math geek, you might enjoy the elegance of Lisp. Same goes for map/reduce systems and libraries that enforce that way of thinking about problems. You may not ever use this way of programming, but I bet you'd enjoy reading about it.
  20. smperry

    smperry Moderator Supporting Member

    Joined:
    Nov 3, 2003
    Media:
    1
    Location:
    Long Island, NY
    Well, I still enjoy teaching statistics a lot, so I guess I qualify as a current math geek. Great options; I'll investigate several of these and discuss with her. Thanks again.
  21. icks

    icks

    Joined:
    Jul 12, 2001
    Location:
    Charleroi, Belgium
    What´s the code for iphone/androïd apps?

Share This Page