Forgot your password?
typodupeerror
Programming IT Technology

Programming For Terrified Adults? 909

Posted by simoniker
from the logical dept.
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?"
This discussion has been archived. No new comments can be posted.

Programming For Terrified Adults?

Comments Filter:
  • HTML (Score:4, Insightful)

    by Q-Hack! (37846) * on Monday May 31, 2004 @04:50PM (#9298215)
    is a good choice...
    • Re:HTML (Score:3, Insightful)

      by BorgDrone (64343)
      HTML is a markup language and has little to do with programming.
      • Re:HTML (Score:5, Insightful)

        by ejaw5 (570071) on Monday May 31, 2004 @05:01PM (#9298361)
        HTML isn't a "programming" language, but through use it does demonstrate some "programming concepts. When you start using HTML POST/GET forms you start learning about variable naming. Then, moderate use of JavaScript introduces if/else, loops, as well as more variable concepts. So, with those experiences learning C, JAVA, or whatnot will mostly be learning syntax. Getting more advanced, you could venture into data structures and OOP.
        • Re:HTML (Score:3, Insightful)

          by Total_Wimp (564548)
          Plus it solves three of the biggest problems with teaching programming:

          you get instant results.

          debugging is very visual and very easy.

          the results of your "programming" can look really cool thus making the "programming" itself seam cool. (big problem with most "hello world" type programs.)

          As you go on to more advanced concepts these advantages go away to some extent, but hopefully by then the student will be in more of a position to not need these advantages.

          TW
        • Re:HTML (Score:3, Interesting)

          by cloudmaster (10662)
          The problem is that HTML "intrpreters" as well as ECMA Script (Java Script, JScript, etc) are very lax as far as enforcing good syntax. While I *love* Perl, I think it'd be an awful first language for many. A beginner needs a language that doesn't let them develop really bad habits so easily. Some would argue that it's more important to get someone "hooked", which is more easily done with something that will let them make mistakes - but I think it's more useful to use a language that identifies the error
          • Re:HTML (Score:3, Informative)

            by los furtive (232491)

            The problem is that HTML "intrpreters" as well as ECMA Script (Java Script, JScript, etc) are very lax as far as enforcing good syntax.

            HTML lax? Absolutely.

            ECMAScript? No way jose.

            JavaScript/JScript may be lax in following ECMAScript standards, but if you don't follow the syntax, it blows up in your face as soon as its called. I think HTML is lax, but still requires enough accuracy that it can reward the person with results, while not driving them nuts with nitpicking of details, while JS will turn

      • Re:HTML (Score:5, Insightful)

        by OmegaGeek (586893) <robwall AT gmail DOT com> on Monday May 31, 2004 @05:48PM (#9298717) Homepage

        But if someone learns to make web pages with HTML, they learn a certain level of abstraction that is fundamentally necessary for any basic sort of programming. I teach computer science in a high school, and we start with HTML for this very reason. By the time they can write img tags and link tags, students have started internalizing the idea that these funny written symbols can produce something more concrete.

        BTW, I recomment Logo for the very same reason - IIRC, it was designed to present abstract concepts in a concrete, visual-kinesthetic way. In the past I have started a class with turtle graphics and progressed to having them write a simple 8 bit binary adder by writing functions for various logic gates and combining them.

    • Re:HTML (Score:3, Insightful)

      by sokk (691010)
      One of the teachers I had on high school gave me a negative score on a test because I wrote that HTML is not a programming language.

      I still stand by this, I even argued with him - but he meant he was right.

      It's Hypertext Markup Language. Far from programming. The closest thing must be javascript, which isn't HTML at all.

      Anyways, my point is HTML is not programming. It's markup.

      But your point may be valid, it's something to do -- but it isn't programming.
      • Re:HTML (Score:5, Funny)

        by prodangle (552537) <matheson.gmail@com> on Monday May 31, 2004 @06:48PM (#9299128) Homepage Journal
        One of the teachers I had on high school gave me a negative score on a test because I wrote that HTML is not a programming language.
        Dear Miss Manners:
        My home economics teacher says that one must never place one's elbows on the table. However, I have read that one elbow, in between courses, is all right. Which is correct?

        Gentle Reader:
        For the purpose of answering examinations in your home economics class, your teacher is correct. Catching on to this principle of education may be of even greater importance to you now than learning correct current table manners, vital as Miss Manners believes that is.

        • Re:HTML (Score:5, Insightful)

          by MilenCent (219397) <johnwh&gmail,com> on Tuesday June 01, 2004 @02:27AM (#9301209) Homepage
          Toeing the line and agreeing with the person who has power over you will get you a good grade, but will also destroy your chance to change his mistaken thought pattern, which would cause him to cease teaching his incorrect dogma to countless other impressionable students who deserve better.

          The observance of manners are essential in any society, but they do us a disservice when they are used to propagate idiocy, as even a cursory examination of a good number of John Cleese-based Monty Python sketches will teach you.

          So I say to Miss Manners: take that, bitch! And learn to speak of yourself using first-person!
    • Re:HTML (Score:3, Insightful)

      by Pxtl (151020)
      Absolutely. Directly oriented with how she _uses_ the computer.

      Another good one is Visual Basic 6. I know many computer-illiterate people who picked that up - it seems natural to them, as it looks and feels like making a typical MS program.

      If she wants to automate her daily computer tasks in a fun and easy way or make simple action games, I recommend Python. Its imposing at first, but IMHO its the easiest text language to learn and tinker with (want to know what does what? Help(modulename) ). Python
    • Re:HTML (Score:4, Funny)

      by dogfart (601976) on Monday May 31, 2004 @05:09PM (#9298434) Homepage Journal
      I'm a dyslexic agnostic with insomnia... I lie awake at night wondering if there really is a dog!

      I'm a dog. I lie awake at night wondering if my owner is really a dyslexic agnostic.

    • by SubliminalLove (646840) on Monday May 31, 2004 @05:27PM (#9298573)
      I'm the computer lackey for the foreign language department at my school, and the head of the department is what I would call an 'ignorant technophile', in that he's very interested in technology, and knows a lot about the general concepts and theories, but has never actually learned how to use anything beyond IE. About a week ago, he told me he wanted to actually go 'behind the curtain' a bit on a project I was working on but that he didn't have a lot of time , and he told me I could have about two hours on the clock to create a tutorial for him. I decided to show him just the basics of html, since I was doing web stuff that week, and spent fifteen minutes putting together a page with a picture, some text in different formats, a hotlink, and a table. Then I sat him down with the page open in Dreamweaver, and made him flip back and forth between the code and design views while I showed him what each tag did. I had a set of about fifteen simple tasks for him to perform (turn the first word bold, make the picture a hotlink to Google, etc). At the end of it, he had a basic understanding of how HTML works.

      While that's not the most complex 'computer language' in the world, it's within the grasp of a moderately intelligent person with no understanding of computers and a little time on their hands, and thus makes a great starter for someone who may end up going into it more seriously as a hobby. My professor is now fooling around with HTML in his spare time, making his own webpage. And it doesn't even suck :).

      ~Benjamin
    • Re:HTML (Score:3, Informative)

      by FFFish (7567)
      That wasn't as out-to-lunch a suggestion as others have made it to be. Though I'm not at all confident you meant it to be taken seriously.

      Starting her with HTML will teach structure and will provide immediate feedback. It's also dead easy to learn, and if she has an interest and some webspace, she can be immediately productive.

      The next step would be CSS, from which she'll learn some neat concepts about side-effects and referencing and suchlike. Again, dead easy to learn.

      Finally, she'll want to get int
    • by Riannin (238636) on Monday May 31, 2004 @06:22PM (#9298964)
      What does Mom do when she is not on the computer? What interests does she have? Who does she e-mail?

      Rather than just looking at programming, maybe she is more generally looking for other things to do with her computer. Maybe her interest in programming is more of an interest in you and what you enjoy doing.

      Does she craft? Does she garden? Does she cook? Would she like to play bridge with other people rather than just playing solitaire? Would she be interested in putting together a family history? Does she know how to engage safely with other folks with her interests on the internet? Can she google?

      Is she an organization nut who would love to put things in databases? Does she have a collection she would like to itemize? Such lists and collections can be easier maintained on a computer. How about an inventory for insurance purposes? Would she want to use some sort of financial management program?

      Would she be interested in obtaining recipes, craft ideas, or patterns?

      Would she like to read, discuss, or publish poetry?

      As for learning how to program, if her current activities do not point you in another obvious direction, HTML is an excellent place to start.

      For all those screeching that HTML is not a programming language, what is there to reply but "duh, my aren't we all impressed that you recognize that HTML is markup language, bully for you."

      Now let's help Mom.

      HTML will get Mom used to typing in a text editor to produce a file which will get transformed into something else.

      Mom will get instant gratification seeing her results in a web browser.

      Mom will, within a few minutes, have something she can actually use and share with others.

      Mom will make mistakes, see those mistakes, and be able to fix those mistakes.

      Mom will get used to working with blocks.

      Mom hopefully will see the advantages of writing in a manner which is easy to read.

      A terrified adult does not need a tutorial on structured programming.

      She needs to become not terrified.

      Riannin
      • Hobbies (Score:4, Funny)

        by rueger (210566) on Monday May 31, 2004 @10:23PM (#9300298) Homepage
        What does Mom do when she is not on the computer? What interests does she have? Who does she e-mail?

        My mother in law had only slight interest in computers until she found out that there was a gigantic network of grandmothers who exchanged computer embroidery designs via e-mail.

        Or, more accurately, designs featuring characters that are well protected by the Sonny Bono Copyright act. From a company whose name starts with "D"....

        Several hundred floppy discs later we bought her a CD burner so she could better manage her booty.

        Eventually the Alberta cop who was one of the central figures in this operation was shut down and charged.

    • by fishdan (569872) * on Monday May 31, 2004 @06:25PM (#9298984) Homepage Journal

      <rant>

      Everyone who said HTML is not a programming language is worried that they are not actually competent programmers. You're missing the big picture.

      Computer Science is no more about computers than astronomy is about telescopes.
      -- E. W. Dijkstra

      This is where so many of us fail our customers (and I do mean customers -- we work in a customer service industry, get used to it). We feel like we have to hide the following facts:

      we like our work

      it's not always super-complicated

      Most people COULD become competent programmers

      they can understand why the site is down

      we are not REALLY mortally insulted when non-techs question us

      Being able to code well is not a viture, it's a talent. You're not holy because you can make more efficient use of the EAX register than your neighbor. And being able to code simple things is not out of the realm of ANYONE. It may be VERY simple things, but people can learn to fend for themselves in simple matters. Macros, mail filters, PowerPoint animation -- these things are ALL programming! Maybe not as holy as you all would like, but they are programming. Many developers feel like they are the priests of the code, and they have to prevent the laity from THINKING that they have anything figured out, because if the laity could figure any one thing out for themselves, then they might figure out OTHER things, and soon, what would they need priests for? Relax, you devout catholic [reference.com] programmers (I mean catholic as in definition #1 -- not religiously) programmers. Just because the laity can learn a little HTML, doesn't mean that your days of molesting your clients are over. You don't have to slam the door on HTML being a language as if it was heresy, and will undermine the church. Lighten UP!!!

      My administrative assistant writes simple queries (forgotten username/passwords) because I took the time to show her how to do it. She also now maintains the web pages that deal with technical support for our product. Now, it's true, her account only has select permissions because I'm not ready to give her the keys to the DB. I also don't require her to check her web pages into CVS (although I should, it's so simple). It probably took 15 minutes to teach her how to read the schema, and how to structure a basic select. And she had had NO previous SQL experience. I've also heard MANY people say that SQL is not a programming language. This is just ridiculous.

      Some developers poo poo (that's right, I said poo poo) HTML because it is easier to do, and people who THEY don't consider super smart are able to produce web pages. Because someone without formal training in "the art" can make something that makes a computer "do" something, insecure developers must berate that accomplishment.

      This is arrogance of the highest order. Get over yourselves. None of us is Einstein. And programming is not the intellectual equivalent of a pissing contest. There is nothing sacred about what we do. Some people tend to talk about programming as if it's some mysterious art (not criticizing the Donald, whose books I revere [amazon.com]). It's not. Some developers like to distguish themselves from "scripters." Some developers look down on DBA's as people who only maintain/tend the data.
      You're all missing the fact that EVERYTHING that computers do is ONLY about the display and manipulation of data/information. All SGML derivatives are rules that the computer interprets, and then executes instructions based on those rules. And execution of rules is (IMHO)the beginning of programming

      The reality is that we should be happy to have people understand how things rea

  • Give up (Score:5, Funny)

    by Anonymous Coward on Monday May 31, 2004 @04:50PM (#9298217)
    Give up. She'll just be unemployed like the rest of us.
  • Qbasic (Score:5, Interesting)

    by DarkHelmet (120004) * <mark@nOspam.seventhcycle.net> on Monday May 31, 2004 @04:51PM (#9298222) Homepage
    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.

    • Re:Qbasic (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 peo

  • scheme (Score:5, Informative)

    by rmull (26174) on Monday May 31, 2004 @04:52PM (#9298234) Homepage
    I've always thought The Little Schemer [neu.edu] would be good for this kind of thing.
    • Re:scheme (Score:3, Insightful)

      by miu (626917)
      Seconded. Excellent format, pacing, nice prose without being overly cute, and made for the solo student.

      If you go with this one make sure you are there to set up her environment and then get out of her way. This book is one you "grok" before your higher brain gets in the way, and if you are there to toss computer jargon at her it will just confuse things.

  • HTML (Score:5, Insightful)

    by lavaface (685630) on Monday May 31, 2004 @04:52PM (#9298236) Homepage
    Teach her HTML, CSS, and javascript. Useful and rather simple. It also provides a launching pad into the not-to-difficult php, or, if she's a savant --perl. Javascript is a nice intro to basic programming concepts (functions, statements, operatos and logic)
    • Re:HTML (Score:5, Insightful)

      by ibbey (27873) * on Monday May 31, 2004 @05:57PM (#9298789) Homepage
      The problem with learning to program is that unless you can forsee a possible use for it, it's hard to be motivated to follow through with the studies. Your Mom may want to learn programming in the abstract, but the challenge is enough to keep her from following through since she doesn't really know what she'd do with the skills once she's got them.

      HTML is the perfect answer to the problem. With even basic HTML she can do something productive. Help her come up with an idea for a web site (Geneaology, recipes, particle physics, whatever interests her...) & put her to work.

      Once she has basic HTML, Skip Javascript & go straight to PHP [php.net]. By the time she's here, she'll probably have some ideas on what she can do with the language, so she'll be more motivated to tackle the (fairly shallow) learning curve.

      As far as more traditional programming, I highly recommend Ruby [ruby-lang.org] (though the site is down temporarily). It has all the power of a language like Perl or Python, but it's syntax is quite clean and simple, and close enough to natural english that the code quite readable even if you don't know the language. For anyone new to programming who wants to write things that are in the realm of a scripting language, I wholeheartedly recommend it.
  • by xYoni69x (652510) <yoni.vl@gmail.com> on Monday May 31, 2004 @04:52PM (#9298242) Journal
    Teaching your mom programming?! What a strange idea... Next you'll be saying Linux is ready for the desktop...
  • Hypercard (Score:5, Interesting)

    by phoxix (161744) on Monday May 31, 2004 @04:53PM (#9298244)
    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
  • Logo? (Score:5, Insightful)

    by wasabii (693236) on Monday May 31, 2004 @04:53PM (#9298247)
    Seriously, what's wrong with Logo? It's a great primer for programming. It lets people perfectly associate programatic statements to actions. Very very good primer.
    • Alice? (Score:3, Interesting)

      by baxissimo (135512)
      Rather than Logo, how about Alice [alice.org]?
      Ok, so I know it's based on Python which you said was too complicated, but the subset you need for doing neat things in Alice is not so bad I think. Plus you get the exciting visual feedback of seeing your characters move around the screen and do stuff. Sort of like the same fun you might get from logo, but there's only so much drama you can get out of a few geometric squiggles on the screen.

      With Alice you can make little 3D movies in your spare time that actually tell a
  • It doesn't matter (Score:3, Insightful)

    by vurg (639307) on Monday May 31, 2004 @04:54PM (#9298259)
    It doesn't matter if it's "childish". As long as it teaches the basic programming concepts (e.g. variables, functions, loops, if-then structures and controls, etc), then that should be okay to get to the fundamentals. There is so much abstraction in programming and I believe the most efficient way to learn it (as an adult) is to be able to relate the concepts in concrete ways.
  • by dekeji (784080) on Monday May 31, 2004 @04:54PM (#9298260)
    There is nothing childish about Squeak or Logo. Squeak is a complex, high-powered Smalltalk development environment. I'd consider it too complex for beginning programmers, although I gather some people are using it for teaching introductory courses. And despite its innocent appearance, Logo is a powerful programming language.

    But why not pick some language she might actually use for something? PHP or JavaScript might be a good choice. Or the Macromedia Flash scripting language--that way, she could make animations.

    If she really wants to learn it as an intellectual exercise, I'd just stick with Scheme for her--there are good learning environments and tons of materials for learning programming with Scheme.
  • Try something BASIC (Score:5, Informative)

    by martyb (196687) on Monday May 31, 2004 @04:54PM (#9298268)

    The BASIC language was designed for this in mind. There are a number of sources on the web where you can download a copy to play with. It was the first language I learned, decades ago, and it still is a good choice today. Just be sure to teach her structured programming so she doesn't run into the trap of spaghetti coding where GOTO's go every which way.

    Here's a google [google.com] link to some places where you can download a copy to get started.

    Have Fun!

    • NO! (Score:3, Insightful)

      by Arker (91948)

      BASIC is really horrible. The only way to do anything useful is to use peek and poke and you wind up with a wrapper around some machine code. How the heck is that easy?

      Python is great for beginners, you can do useful stuff without hacking machine code, and it doesn't teach you bad habits like BASIC.

      But frankly I'd have to say Delphi would be the best place to start. All of the above advantages, plus plenty of RAD capabilities so she could stand a decent chance of making something she would find useful b

  • by Tablizer (95088) on Monday May 31, 2004 @04:55PM (#9298272) Homepage Journal
    Why programming? Why not master word processing, spreadsheets, graphics and design programs, etc. I think learning Power-Point, Adobe Photoshop, or DreamWeaver would be more immediately useful and rewarding to such a person.
  • by Laser Lou (230648) on Monday May 31, 2004 @04:55PM (#9298273)
    Try teaching her assembly language. There's nothing simpler. Its almost like using a calculator:

    load this
    load that
    add
    store ..

    That's it!
    • Core Wars (Score:5, Funny)

      by j1m+5n0w (749199) on Monday May 31, 2004 @05:05PM (#9298402) Homepage Journal

      I wonder if many people have used icws94 [koth.org] as a first language?

      (For those that have never heard of core wars: the basic idea is you write assembly programs that run in a virtual machine - whichever program has more threads running at the end of a time limit wins. I never got into it, but it looks like fun.)

      -jim

  • by Quebec (35169) * on Monday May 31, 2004 @04:55PM (#9298276) Homepage
    She is just trying to reach you and understand you more.

    What it probably means is this: Take her out more often then just once a year you geek!

  • by fname (199759) on Monday May 31, 2004 @04:55PM (#9298278) Journal
    Well, it depends on what you mean by programming. Clearly writing C++ code and compiling it is programming. But what about less obvious programming (which are essentially instructions). Script languages like Perl, Applescript or ColdFusion (3 that I'm at least a little familiar with) certainly seem like a fair place to start. Even markup languages like HTML could be considered programming; after all, the HTML are instructions that tell your browser how to display a page.

    If you're more interested in using an IDE to develop code (and not work with the underlying intsructions directly), then those listed above are not the best choices. But learning the basics of code syntax & understanding how these instructions translate into on-screen instructions are essential if you're interested in learning the core prinicple of programming.
  • JavaScript (Score:5, Insightful)

    by dtfinch (661405) * on Monday May 31, 2004 @04:55PM (#9298279) Journal
    Don't focus on dhtml or anything beyond the scope of the language. You want an easy learning curve giving her skills she can use everywhere. On its own, JavaScript is a very simple, powerful, and forgiving language, who's syntax closely resembles most of the other mainstream programming languages.

    Good luck. I'm still trying to teach my mom to program. And she has a bachelor's degree in CS.
  • Visual Basic?? (Score:5, Insightful)

    by MBraynard (653724) on Monday May 31, 2004 @04:55PM (#9298280) Journal
    If this is too difficult, then your mom really isn't interested in applying herself. Tell her to find a better hobby and stop wasting your time if she isn't going to take it seriously.

    Yeah, I'm tired of all this "old people can't do this stuff" line of thinking. If they had an interest, they would. My mother taught herself a bunch of stuff with the comp and took classes at the local community college in Unix, etc. at age 50+. Point is, if your mom had an interest, and she's not a retard, she would be able to handle VB.

    • Re:Visual Basic?? (Score:5, Insightful)

      by i-Chaos (179440) on Monday May 31, 2004 @06:04PM (#9298847)
      >Point is, if your mom had an interest, and she's not a retard, she would be able to handle VB.

      I'm currently in a Canadian college doing a 3 year programming college diploma course, which is an absolute fucking breeze for me because I have a programming background. I met a girlfriend who started at the same time as I did, but did not have such a background. Let me tell you: things are not always as simple as you think.

      My gf definitely has an interest (she's paying $1500 per semester), and really does want to learn, but at the end of the day, it's just hard for her to understand certain concepts, and it takes a mastery of communications to try and explain things to her the right way (hey, if she's already taken the course twice, and both profs couldn't do explain it, fuck, it's going to be a bitch). She's definitely not a retard, and has an excellent business sense and a knack for picking up languages, but I believe that she is not well-suited to be a programmer.

      The hard fact is: people are born to do certain things - it's just the way it is. And the later in life that you start, the harder it is to pick something up and learn it. To give you a better analogy: imagine trying to learn how to play hockey when you're 50 and don't even know how to skate - it's going to be a bitch! The brain is a muscle, just like any other, and it deteriorates with age. You can't blame people for not being able to learn fast enough. And besides, in programming, everything is a concept - you either get it, or you don't. And if you get it, that doesn't mean you'll be lightning quick to figure out how to apply it to problem solving.

      My 2 cents, anyway...

  • html/php (Score:5, Insightful)

    by VirexEye (572399) on Monday May 31, 2004 @04:55PM (#9298283) Homepage
    Learning php in conjunction with html may be the way to go. The reason for this is that unlike most "hello world" programs which end up in the boring and seemingly non-relevant console, her first programs will be on the web: something she is familer and comfortable with and immediatly sees the value of. In other words, it may be best to try to keep things relevant and relating it to ideas she already knows well.
  • by rbrander (73222) on Monday May 31, 2004 @04:56PM (#9298285) Homepage
    I echo the "HTML" comments, but of course that's not procedural programming and (alas) Javascript is probably not a good choice.

    But Perl is a language where very simple things like the "Qbasic" examples posted will also work, but it is able to do useful things quickly and can be a very good complement to knowing HTML.

    And it's free, works on every OS, etc...
  • by silentbozo (542534) on Monday May 31, 2004 @04:58PM (#9298315) Journal
    Have you tried Realbasic [realsoftware.com]? It seems to be powerful enough for people to use for "real" programming (and it's crossplatform, well, at least it runs on Macs and PCs.) You can also try introducing her to a stack-oriented scripting language (similar to Hypercard.) There's one called Runtime Revolution [runrev.com] and it runs on Macs, PCs, and Linux (according to their website.)

    I'd personally find stack-oriented scripting languages easier to pick up (from a newbie's perspective) because the process of dealing with event-driven loops is automatically built into the environment - you just have to tell the stack how to interpret button presses, etc. Also, it's easy to keep things segmented - individual scripts live on their own cards, and you can link the cards together in any particular order you want.
  • Make it simple. (Score:3, Interesting)

    by russianspy (523929) on Monday May 31, 2004 @04:58PM (#9298324)
    My first choice for someone who wants to learn a programming language (but does not know any yet) would be Python. Bear in mind, that's for someone who just wants to learn a programming language for general tasks. (Afterwards I'd teach C).

    For someone in your case. Don't teach a language for the sake of teaching a language. First you need a problem. Something your mom is really interested in solving. It should be something simple. One example could be a program (possibly a daemon) that will e-mail a reminder about the b-days in your family. Or perhaps just pop up a window. Another idea might be to download a lot of recipies from the web and build a front end around it. Something that allows you to grep through them. Eventually adding ability to recognize ingredients and query for those, etc. The important thing is to start small, have a visible result almost immediately and then slowly build up.

    Another alternative might be to show your mom how to use photoshop or a 3d rendering package. You can download Maya educational version for free. You also have povray and a whole slew of others available. Maybe it's time to help your mom develop the more artistic side...
  • Brainfuck ? (Score:3, Funny)

    by BorgDrone (64343) on Monday May 31, 2004 @05:00PM (#9298346) Homepage
    How about Brainfuck [muppetlabs.com] ?

    Seriously though, maybe you should learn her about the von Neumann architecture [wikipedia.org], and let her play with a simple implementation of it. At the very least it let's her help understand the basics of computing.
  • AppleScript (Score:5, Informative)

    by Rick Zeman (15628) on Monday May 31, 2004 @05:02PM (#9298365)
    Powerful, useful and uses almost nouns and verbs. If she doesn't have a Mac, this would be a great excuse to get one.

    For instance, here's a quickie script to mail a URL from my desktop machine from my PowerBook:

    tell application "Safari"
    tell window 1
    set n to name
    end tell
    tell document 1
    set u to URL
    end tell
    end tell

    tell application "Mailsmith" of machine "eppc://GreyGhost.local"
    make new message window with properties {subject:s, contents:""}
    end tell

    Easy to follow, yes? You get go from the barebones simplistic (like above) to highly involved workflow solutions.
    • Re:AppleScript (Score:3, Interesting)

      by Baumi (148744)
      I disagree - AppleScript is extremely powerful and its scripts are easy to read, but debugging them can be a royal pain. I'm an experienced programmer, but Apple Script's inconsistencies never cease to amaze me.

      I've encountered situations where "<VERB> the <OBJECT>" would not work, but "<VERB> <OBJECT>" would, etc. And the error messages usually aren't of much help - with some luck you can figure out which line the error was in, but figuring out the correct syntax is often a matter
  • by LowneWulf (210110) on Monday May 31, 2004 @05:03PM (#9298378)
    Bad choices: anything web related. PHP, HTML, CSS, Javascript all that is the WORST way you can start. The complications of badly-designed programming languages compounded with the whole saving and refreshing bit, various browser quirks, and things that look almost nothing like an IDE.

    Functional, imperative, and probably even object oriented languages in general will be nearly impossible on a conceptual level. They're designed to be useful for someone who thinks that way, which normal people really don't!

    The best idea I've seen here is QuickBasic (or QBasic will do in a pinch). Instantly complains when you make a mistake, so you can fix it. A 'command' window, which allows you to execute single statements, allows you to start with hello world without even the concept of 'running'. Automatically takes care of case, and downright intuitive in terms of runtime errors. Basic procedural language.

    Basic is definately the place to start. Once Mommy's mastered qbasic, then you can start with some more interesting languages.
  • Is she cute? (Score:5, Insightful)

    by AKnightCowboy (608632) on Monday May 31, 2004 @05:04PM (#9298391)
    MILFhunter is always looking for new recruits.

    Seriously though, why do you assume she'd be interested in programming? I've been using computer almost all my life and I absolutely hate programming. Teach her how to use Access and let her develop a database to track something at home. Show her how to use instant messaging to hang out in chat rooms and pick up younger men, etc. Maybe she'd be interested in playing around with Photoshop with a digital camera or video editing with a camcorder. Don't pigeon-hole her into programming as the next evolutionary step she needs to make after learning e-mail! That's just crazy.

    The number one reason I hate programming is that I don't have any reason to program anything. 99% of the time things I would want to write are already on freshmeat so why reinvent the wheel? Besides, I don't have the patience for coding outside a classroom environment where I have a very strict set of instructions on what the program should do and what mechanisms you need to use to implement it.

  • by Nakito (702386) on Monday May 31, 2004 @05:05PM (#9298407)
    No, not with line numbers, and not with GOTOs. QBasic doesn't need them. If you teach it with some structure, and make sure that she declares her variables, she can have a total blast and get a feel for what programming is about. Fast and fun results will prevent loss of interest, which is probably the biggest threat to your project. Further, the knowledge that she gains will not be obsolete because the procedural statements are almost identical to VBScript. And the built-in help file is actually useful. Face it, you have to start with something fast and easy if you want to hold her interest.
  • by Laxitive (10360) on Monday May 31, 2004 @05:05PM (#9298409) Journal
    How the hell is squeak too childish?

    Of the things that you list there, squeak is probably the most powerful, advanced, well-designed learning system out there. And not only is it a learning system, it is used for SERIOUS purposes by people doing SERIOUS work. The fact that it is also a good learning environment speaks to the uniqueness and elegance of Smalltalk.

    Even attempting to lump in squeak with Logo and Lego mindstorms shows that you really do not understand what you are dealing with.

    _please_.. do not make general statements like these without actually knowing what you are talking about. And trust me, on this point, you do not know what you are talking about.

    -Laxitive
  • by SuperChuck69 (702300) on Monday May 31, 2004 @05:09PM (#9298439)
    I think a better question is "what does she want to accomplish?"

    I write software for a living, but I never know what direction to go in until I have a well-defined set of goals. Learning is kind of the same beast.

    A good example might be a recipe program (to go on the typical "mom"). You could start out with some simple GUI stuff, putting windows on the screen, maybe a couple simple menus and clickies. The first recipies can be hardcoded, then back it with a simple database.

    Sure as hell beats writing Hello World programs.

  • by leandrod (17766) <l&dutras,org> on Monday May 31, 2004 @05:10PM (#9298449) Homepage Journal
    Are as gentle introductions to programming as you could wish.

    The Little Lisper is a classic, very fun with its retro look and culinaire theme, and quite efficient with its programming instruction method.

    The Little Schemer substitutes cutesy baby elephant cartoons, and shifts to Scheme.
  • BASIC or Pascal (Score:3, Informative)

    by jcook793 (567065) on Monday May 31, 2004 @05:14PM (#9298475) Homepage Journal

    As a kid I learned on BASIC. For some reason the line numbers really helped me. I saw C but without an introduction to programming, it seemed so "free form" that I couldn't understand what was going on. I'd imagine you can't walk too far in a cube farm without tripping over someone's old copy of Quick Basic, so that should be easy to get.

    If not that, then Pascal is verbose and well-structured. Reading it out loud almost makes sense in English.

    For Pascal, you can either download an old version of Turbo Pascal from Borland: http://community.borland.com/article/0,1410,20803, 00.html [borland.com] or ask a buddy -- someone is bound to have a copy lying around. I know I've seen it in bargain bins at book stores in the past.

    Maybe, just maybe, she could also try Delphi (think Visual Basic but with Pascal and not as icky), the Personal edition is free: http://www.borland.com/products/downloads/download _delphi.html [borland.com]

  • by rjh (40933) <rjh@sixdemonbag.org> on Monday May 31, 2004 @05:14PM (#9298484)
    I find it incredibly hard to believe that Python or Scheme are `too complicated' to teach to adults. I mean, realistically, Scheme is an excellent language to use for teaching computer science to adults. Look at something like Structure and Interpretation of Computer Programs as an example.

    Scheme is not a complicated language. In fact, that's its biggest advantage. It's dead freakin' simple, so much so that the entire language specification is only a few pages long.

    Compared to it, Python is an abomination of complexity--and Python's not a complex language, either.

    You're not going to find a simpler, more straightforward pair of languages than Scheme and Python. If you're not able to make either of those languages comprehensible to your mother, then I'd respectfully suggest one of these is true:
    1. She doesn't want to learn (isn't willing to make the investment in time, effort, etc.)
    2. She doesn't understand basic mathematics ("what's a function?", etc.)
    3. You don't understand the languages you're trying to teach
    4. You're not communicating effectively
    Any of those would seem far more likely to me than "Python and Scheme are too hard".
    • by robbo (4388) <slashdot@si m r a . n et> on Monday May 31, 2004 @05:52PM (#9298745)
      Scheme is not a complicated language. In fact, that's its biggest advantage. It's dead freakin' simple, so much so that the entire language specification is only a few pages long.

      That's exactly why scheme is a bad language to teach newbies. The simplicity of the language implies that you need to do a fair amount of work to do anything truly useful or interesting to the student. Not to mention all those braces can be intimidating. That's a serious criticism.

      Accusing the student as just being lazy or stupid (points 1 & 2 of your comment) is not the mark of a good teacher. The last time the average adult engaged the 'basic mathematics' you're talking about would be 30 some-odd years ago-- you've got to get them working in a linguistic environment that's comfortable and that they can relate to.

      The key is to keep it interesting, not get bogged down in constructs and concepts (like lambda-calculus), and build up a set of simple tools and skills one step at a time.
  • My Suggestions (Score:5, Interesting)

    by MBCook (132727) <foobarsoft@foobarsoft.com> on Monday May 31, 2004 @05:17PM (#9298510) Homepage
    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.

    • You forgot TCL/Tk (Score:4, Interesting)

      by jmorris42 (1458) * <jmorris@[ ]u.org ['bea' in gap]> on Monday May 31, 2004 @05:55PM (#9298768)
      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.
  • pascal (Score:5, Insightful)

    by ToasterTester (95180) on Monday May 31, 2004 @05:18PM (#9298516)
    Pascal was designed to be a teaching language. It's approach is simple if the language doesn't say it legal to do, it's illegal. Being such a tightly defined language its error messages are very good.
  • I know the answer (Score:4, Interesting)

    by cookiepus (154655) on Monday May 31, 2004 @05:23PM (#9298537) Homepage
    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?
  • Applescript? (Score:3, Informative)

    by harlows_monkeys (106428) on Monday May 31, 2004 @05:24PM (#9298551) Homepage
    How about Applescript?

    I don't understand why you rejected Mindstorms as too childish. It seems perfect to me: it is simple (which is what you want for someone who is a complete beginner), and it is interesting (your programs do something concrete). The only problem I see is that if she isn't mechancially inclined, you might have to build the robots for her.

    Anyway, the main problem here is that you can't really separate programming from the problems that the programs solve. You need to find some area where she understands the problems that are to be solved by programming.

    Find something she is already interested in and understands, that can be automated by computer, and base your teaching around that. That way, she will understand what is going on, and will only have to pick up the programming part.

  • by lawpoop (604919) on Monday May 31, 2004 @05:26PM (#9298566) Homepage Journal
    "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.

  • by dogugotw (635657) on Monday May 31, 2004 @05:29PM (#9298588)
    Any language you choose is easy once you 'get it'. No language is intuitive or easy. Basic concepts are relatively simple in all languages (if/then, looping, comparisons, basic math) but the use of those methods to DO stuff is what's hard.

    She's eventually going to need to bite the bullet and figure out how it all goes together. No pain, no gain and programming is all about pain.

    Suggestion - have her conceive of something she'd like to automate. Does she use spreadsheets? Great! There have to be any number of things she does over and over and over that would be prime candidates for coding. Guess what? Most sheets include programming languages. Now she has a goal (automate a task) and a tool (scripting language). She's 1/2 way there.

    Once she's gotten her feet wet, it's just a matter of building more and more complex systems and figuring out the techniques of programming.

    My personal choice for the best tool to quickly and easily build apps that really do cool stuff - Lotus Notes. Full built in development environment, choice of two built in languages plus hooks to whatever else you'd like, a limited number of widgets with a limited number of methods and properties - it's totally possible to get the entire environment into your head making it easy to focus on the objective rather than finding the right method. Downside - you gotta buy the designer client and it's about a grand.

    Python is similar to Notes in that the language is small enough to grasp and is extensible.

    If she gives you crap about 'it'll take me years to learn how to do this', just tell her the years are going to go by whether or not she tries this so go for it!

    HTH and wish her well - old farts can learn new tricks too.

    Dogu (an old fart who gets paid to write code)
  • POV-Ray (Score:5, Funny)

    by cjameshuff (624879) on Monday May 31, 2004 @05:39PM (#9298644) Homepage
    The Persistence Of Vision Raytracer. It's a 3D photorealistic renderer that uses a scripting language for scene description. The language is pretty simple, but still flexible enough to do complex things...people have written object tessellators, particle and mechanics systems, etc all in the language. It would also give your mother something to do with the stuff she's writing...make pretty pictures. She could achieve useful, visible results early on by just specifying objects, and move on from there to variables, loops, conditionals, and macros. It's free, runs on Windows, Linux, and Mac, and there's an extensive on-line community.

    http://www.povray.org/

    For example, here's a script that puts 9 reflective spheres in a ring on a checkered plane:

    camera {
    location < 0, 3,-8>
    look_at < 0, 0.5, 0>
    angle 35
    }

    light_source {<-5, 8,-3>, color rgb <1, 1, 1>}

    plane {y, 0
    pigment {checker color rgb < 1, 1, 1>, color rgb < 0, 0, 0>}
    }

    union {
    #local J = 0;
    #while(J < 9)
    sphere {< 1, 0.25, 0>, 0.25 rotate y*J*360/9}
    #local J = J + 1;
    #end
    pigment {color rgb < 1, 1, 1>}
    finish {reflection 1 diffuse 0 ambient 0}
    }
  • Pascal or . . . (Score:3, Informative)

    by An El Haqq (83446) on Monday May 31, 2004 @05:39PM (#9298647)
    The advantage of Pascal is that there are a number of books designed at the introductory level. The language itself is fairly easy to understand up to dealing with the differences between val (call by value) and var (call by reference) parameters. Even then, you can usually ignore var parameters for awhile.

    Common Lisp isn't so bad either, and Touretzky's book [cmu.edu] is as gentle as it claims and free.
  • by Angostura (703910) on Monday May 31, 2004 @06:17PM (#9298936)
    I would humbly suggest that you have a look for a good, full implementation of Logo, it really can be an immensely rich language and is not limited to graphics.

    It's string handling is powerful and LISP-esque and really interesting - I wrote a decent Eliza when I was a kid using it.

    The turtle commands give a really simple and direct understanding or what it means to issue a command. This can lead nicely on to the simple concept of programming multiple commands, but from there the possibilities explode... not literally, that would be too scary.


    Berkeley Logo looks like a very nice implementation (thanks Google). You can grab it gratis for Windows, Linux. Mac, DOS from this guy's home page. [berkeley.edu]


    Thanks for asking - you've inspired me to download it.

  • by valdis (160799) on Monday May 31, 2004 @06:31PM (#9299013)
    OK.. up front, I'll 'fess up that I program for a living, and I play waaay too much guitar myself (side note - "programmer with 4 guitars" == "poster child for carpal tunnel syndrome" ;)..

    And I've heard "I've always wanted to learn how to..." regarding both, plenty of times. And my standard response to that is "But why? ".

    Seriously - the question is equally relevant for both disciplines (and disciplines they are indeed - the number of people that can do either well without investing a lot of effort is severely limited). And quite often, I've discovered that what the person really means is "I think it would be cool/chic/whatever to be able to claim that I could....". And that's something totally different, indeed. If the person doesn't have a grasp of that distinction, it's time to turn away while shaking my head. If they really wanted to learn how, they'd have found a way to scrape up enough money to buy a dirt-cheap guitar and learned how to do it. If Robert Johnson [wikipedia.org] could get a guitar, so can you...

    And sometimes, the person has a fairly realistic goal in mind - one that doesn't involve a whole lot of mental and emotional investment. It doesn't take a lot of effort for somebody to learn enough guitar to not look foolish sitting around a campfire - you learn a I-IV-V progression and the associated relative minor chords in a few keys and how to strum on the beat, and you're set. Similarly, learning enough programming to write small scripts to make your life easier isn't very hard - there's enough "<Scripting Language> for Dummies" books.

    However, that's a different goal from understanding either subject in depth - and neither "knowing enough to fiddle around with it" nor "truly understanding it" are the answer to the unstated question here...

    I'm going to go out on a limb and speculate that simoniker's mother isn't really interested in learning to program - what she's really wondering about is "How can simoniker sit there all day typing away, when Solitaire gets boring after a few hours?". And the right answer there is "Artistic Drive".

    Unfortunately, that's a very hard concept to explain to those not driven by it. It takes many forms - the artist starving because they'd rather buy paint than food, Stevie Ray Vaughn playing guitar till the calluses on his fingers bled - and then crazy-gluing them back in place and playing more, or any athlete or performer who has made personal sacrifices in the pursuit of their goals....

    And those of us afflicted by it are never, and have never, and probably never will be, understood by those of us who aren't.. ey to buy a cheap one and found a way to learn.....

  • What about Pascal? (Score:4, Interesting)

    by Brettt_Maverick (780722) on Tuesday June 01, 2004 @12:29AM (#9300832)
    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.
  • by monopole (44023) on Tuesday June 01, 2004 @11:32AM (#9303743)
    Trying to teach someone a skill they don't see the need for will only result in frustration. I didn't learn my favorite language (Python) until I needed it to script vtk.
    The key aspect of teaching programming is to identify a need your mother has for an automated task. Then teach her how to automate it with a simple language such as Python using just the subset needed to solve the problem. Then branch out aadding features to the solution and identifying new needs. As the programs expand, introduce new language features.

Often statistics are used as a drunken man uses lampposts -- for support rather than illumination.

Working...