Slashdot Mirror


Programming For Terrified Adults?

makeitreal writes "My mom is getting bored with learning the basics of email and has mastered Solitaire. She asked me what I do on my computer and I told her that I was teaching myself programming in Scheme. She expressed an interest in learning what I was doing, but I tried to teach it to her with the HtDP and we didn't even get past the introductory chapter. Everything I've looked at so far seems too complicated (Scheme, Python, VB) or too childish (Logo, Squeak, Lego Mindstorms). Is there anything in the middle that is also cheap/free and suitable for adults? Or should I give up the whole idea?"

10 of 909 comments (clear)

  1. Qbasic by DarkHelmet · · Score: 4, Interesting
    If visual basic is too complicated, why not get an old version of Qbasic, or something like that:

    for x = 1 to 10000
    print x
    next x

    No GUI will make things easier to learn it, and it's nowhere as bad as C++.

    There's also a web based language, like PHP / ASP, or Perl. It's not hard to begin with, even though it can become more complicated as time goes on.

    --
    /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i
    1. Re:Qbasic by Frequency+Domain · · Score: 3, Interesting
      While I agree that avoiding GUIs is desirable for neophytes, I strongly disagree with recommending BASIC of any sort. It's an evil language, because it teaches bad habits. When I taught intro CS courses, my worst students were invariably the ones who thought they knew it all because they'd screwed around with BASIC on their own. They started off fast, and then hit a wall where they had to unlearn a lot before they could progress.

      I'd recommend Ruby. It has all the features that make BASIC appeal to people - easy to learn; interpreted (immediate feedback); can do simple things quickly - and none of the drawbacks. It offers modern flow control and data structures, and gets you into "thinking objects" very naturally and quickly. You can take it as far as you like, since it's fully capable of handling large designs, GUI's, etc. Plus, it's portable - the same Ruby scripts work on Windows, MacOS, and *nix.

  2. Hypercard by phoxix · · Score: 4, Interesting

    I have no idea if they still make it.

    But Hypercard was *perfect* for people who wanted to get their feet wet but were totally scared of everything

    If you want something a little more advanced: bash shell scripting. Easy to learn and obviously very very powerful.

    Sunny Dubey

  3. My Suggestions by MBCook · · Score: 5, Interesting
    Here are my thoughts on various languages. Personally I think Python would be perfect, and that you should give that more of a try, perhaps with a good book (O'Reilly makes good ones). So here are various languages:
    • Python - As I said, this would be my choice. It has an interpreter so you can type in commands and see the results immediatly if you want. Runs on every platform (for all intents and purposes). You can later learn things like PyQT and other libraries to allow you to do GUI stuff and there are Python bindings for SDL so you could make games/graphics and such. It also teaches good habits IMO (like indenting insteade of blocks). None of those "you forgot the semicolon stupid" errors all over the place. Can also later learn object oriented stuff which is in Python too.
    • C/C++ - Great languages, but not great for a first language (IMO). If you do this, make SURE to avoid things like pointers and references untill after she has a FIRM grasp on the basics, because they will confuse the hell out of her (just like everyone else the first time they saw them). I wouldn't recomend this.
    • Java - I wouldn't recomend this for complexity and such. I would put this about the same as C/C++, only a little better.
    • Hypercard - Probably not an option, but it's where I cut my teeth. I had a GREAT time with Hypercard. It was so great to be able to do all that visual stuff easily (switching cards to switch UIs, etc). Too bad Hypercard is basically gone today (you'd need a Mac running at least 9.x, if not before plus a copy and such). *sobs*. This was such a great tool. I might use this if I had access to it.
    • Scheme/Lisp - Avoid it at all costs. I think that most people would go nuts trying to understand functional programming. I think you should stick with an imperative langauge, as they should already be familiar with the concept of variables from algebra.
    • VB - Overkill. Just because it has "Basic" in the name does not make it easy for people. It may be easier than VC++ to make full programs, but I don't think that it is a good language to teach programming in. I'm ignoring all the reasons I think that VB is a scourge on the Earth (I don't know about VB.NET, never used it).
    • BASIC/QBASIC - This is what they were designed for. They are old, but they'll work for the theory and basic programs. The biggest problem is teaching the "evil" GOTO and such.
    • HTML - Saw this in this thread. IT'S NOT A PROGRAMMING LANGUAGE!
    • Assembly - Will give her a FANTASTIC grasp of how computers work I think it will make her a far more competent programmer in the long run. The only down side is that you'll be cut out of her will, she'll try to kill you, throw her computer out the window, and regret having a son :)
    • JavaScript - I think something like Python would be much better. I don't think it's a good language to learn in.
    • Perl - Yeah. @_ = (@*, $thing['bob']); won't confuse her at all. It's a good scripting language, but to use it to teach programming is just asking for trouble.
    • PHP - No. Don't use a server side language.

    In conclusion I think that the best are probably BASIC or Python, and I would lean to the latter. And no matter how much you want to help her yourself, I would suggest getting her a good book on the language to read. Preferable one geared to new programmers (instead of a "___ for C++ programmers" type books, or a massive tome of everything in the language).

    Hope that helps. I'll answer any questions on the why I think such and such about the languages above or any other language if you just reply to this.

    --
    Comment forecast: Bits of genius surrounded by a sea of mediocrity.
  4. I know the answer by cookiepus · · Score: 3, Interesting

    Teach her to write some Excel macros. First, this is somewhat of a valuable skill (using Excel cuts accross many professions) and second, it's very obvious what's going on.

    It's more than just adding values in cells. How about taking 2 cells with a time format (eg, 1 pm and 6:15pm) and having a third cell display the number of hours in between (5.25 in this case)... You can get pretty fancy with Excel programming or you can keep it very simple. By the time she grasps the finer points of programming in Excel, she'll grasp much of programming (though probably not of good programming practices) in general.

    Though the question remains: why?

  5. Well maybe you should ask her... by lawpoop · · Score: 4, Interesting
    "Everything I've looked at so far seems too complicated (Scheme, Python, VB) or too childish (Logo, Squeak, Lego Mindstorms).

    Maybe you should look at these with her. You might think they are too complicated or childish, but she may not. In fact, she might surprise you with what she likes.

    --
    Computers are useless. They can only give you answers.
    -- Pablo Picasso
  6. You forgot TCL/Tk by jmorris42 · · Score: 3, Interesting

    While TCL is a little odd, it isn't odder than some of the other languages you listed and it has the best integration to the wonderful Tk toolkit of any of them. Nowadays it is important to show a new programmer they can create 'real' programs and in their mind that isn't tty apps, it is graphical user interfaces. TCL/Tk is perfect for that purpose. It is also more than able to create useful programs and is cross platform.

    --
    Democrat delenda est
  7. What does Mom want to do when she learns how? by astrojetsonjr · · Score: 3, Interesting
    Learning programming is fine, but what does she want to do with it? (I want to learn French for my trip to Paris, I want to learn Finnish to talk to that woman at my club. I want to learn (some computer language) so I can (make cool web pages, manage my recipes, solve world hunger, etc.). Then go from that point, that should help the language choice.

    If you are just trying to do basic programming constructs, pick something that has a good IDE, good error messages and can take a cheese sandwich, compile it and run it. Some of the errors from Java and Java script are pretty sad ( "is not an Object" is always helpful to me).

    Logo, Basic, Pascal, Fortran, Squeek, etc. are all easy to learn the concepts with. I say start with one of them. You can always move her to something else later on.

    The other options are to build her a Wiki and let her generate content (family news, ancestors, stories, garden info, hobbies, etc. Wiki presentation can be considered some level of programming (and slightly easier to understand than HTML).

    Good luck, and remember your Mom raised you, so when she does not get the quirky points of Perl you are trying to teach her, don't yell at her.

  8. Scheme vs Logo by alanbs · · Score: 3, Interesting

    I always thought that Scheme and Logo were basically the same thing. Aside from some simple syntax differences and possibly scoping, I have always thought of logo as scheme with a drawing turtle. In fact one of the first things that I did in the first computer science class I took was first making a Scheme interpreter in Scheme and then making a Logo interpreter written in Scheme, which didn't require many changes. Anyway, you can do some pretty complex things with some simple languages. I would use Logo to draw some cool fractals.

  9. What about Pascal? by Brettt_Maverick · · Score: 4, Interesting

    I know it's not particularly marketable, but I've always thought Pascal was an excellent learning language. Pointers, structures, dynamic memory allocation... and simpler syntax than C. In my experience, most people learning programming via VB get bogged down in UI tweaking, and the C/C++ learners get bogged down in the &*&! syntax. Java leaners tend to get confused with OO when they haven't yet been exposed to variable scope, and functional decomposition, etc. Again, in my experience. Pascal is simple enough to get started quickly, but rich enough to let the learner grow into the advanced concepts. It's a gateway language - it makes learning C/++/#,Java, etc. much less intimidating. Although, for "Holy Crap, I made something!" value, VB's prety good. In no time at all you can make something that looks "just like a real windows application" (with all the inherent reliability ) I guess it all comes down to how much you want to spend on 'fundamentals' and how much you want to spend on, well, let's be honest, 'fun and cool stuff'. Ultimately, for some, it comes down to not choosing the right language, but the right project - start something simple and then keep pushing and pushing it. Maybe start with some HTML, move onto JavaScript (where you can get into parameter passing, functions, syntax, and control structures) and from there maybe into database or media stuff, depending on what would be fun to do next.