Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror
×
Programming IT Technology

Programming For Terrified Adults? 909

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:
  • 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.
  • 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!

  • Java (Score:2, Informative)

    by Red_Winestain ( 243346 ) on Monday May 31, 2004 @04:59PM (#9298327)
    No, really, Java is great for beginners. You can immediately get windows, buttons, etc, and it is hard to shoot yourself in the foot. There are plenty of on-line resources:
  • 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.
  • by leandrod ( 17766 ) <l@dut r a s .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]

  • 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.

  • Re:Hypercard (Score:3, Informative)

    by MacGod ( 320762 ) on Monday May 31, 2004 @05:27PM (#9298571)

    Sadly Apple has discontinued Hypercard development for some years, and recently stopped selling it on the Apple store.

    Still, it is a great learning tool, and if she's got an OS9 Mac (or is OK with Classic), copies can still be had on everyone's favourite global Garage Sale [ebay.com]

  • 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
  • mIRC script. (Score:1, Informative)

    by mt v2.7 ( 772403 ) on Monday May 31, 2004 @05:30PM (#9298593)
    mIRC script is a great primer. It's a very simple scripting language has gotten alot of my friends started. It's also based on C++, which makes it a VERY good C++ primer.
  • 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 cheerios ( 741510 ) on Monday May 31, 2004 @05:43PM (#9298674)
    From my programming languages professor's site:

    Perhaps the most common and useful way to categorize programming languages is by paradigm. A paradigm describes the overall structure and architecture of a language. Some paradigms:
    • Object Oriented (Imperitive): Smalltalk
    • Procedural (Imperitive): C, Pascal
    • Hybrid (Imperitive): Java, C++
    • Threaded Interpreted (Imperitive): Forth, Postscript
    • Functional: Haskel, Standard ML, FP
    • Logic (Decaritive): Prolog
    • Data description (Declaraitive): HTML, XML
    • Production Systems (also called RuleBased: Ops5,Clips,Flora
    • Dataflow

    my point? HTML IS TOO A PROGRAMMING LANGUAGE! Also, to get back on topic, I think teaching your mom html is a wonderful idea. :)
    some other ideas are things like basic, or if you're feeling brave, python can be nice in that it's relatively readable, and a bit easier to get instant gratification out of then some of the more complex "real" languages.
  • Re:Qbasic (Score:2, Informative)

    by Ryan Mallon ( 689481 ) on Monday May 31, 2004 @05:44PM (#9298681)

    There is even an active Qbasic community: www.qbasicnews.com [qbasicnews.com]

    The problem with Qbasic is that it is becoming harder and harder to get DOS software to run properly with each release of Windows. You could also try one of these Basic compilers/interpretters: Basic compiler/interpretters list [thefreecountry.com]

  • Delphi (Score:2, Informative)

    by aoteoroa ( 596031 ) on Monday May 31, 2004 @05:55PM (#9298771)

    You must be a patient soul because I'm not sure that I would try teaching my Mom how to program despite the fact that she is very competent at everything else that she has tried on a computer.

    However if I was to recommend any language to learn on it would either be Delphi/Kylix for desktop software, or LAMP for the web.

    Delphi/Kylix

    • Is easy to use for beginners,
    • powerful enough to build real applications with.
    • For the novice user Delphi has an excellent set of visual widgets that you can use to create neat looking applications quickly.
    • The language you use to tie these widgets together is essentially PASCAL which was designed from day one to be a language for learning how to program.
    • PASCAL(Delphi) is very consistent, and strongly typed which makes it easier for the compiler to help the novice.
    • Borland used to have a free personal version that you could download from their website, and
    • there are plenty of books for it available from my local halfprice-computerbooks store.

    LAMP

    You will likely need to set up apache/mysql/php and phpmyadmin (on either windows or linux but once you get past that initial setup php is an easy langage to learn

    Web programming might be more interesting to the novice, and have some immediate practical uses

  • by Colin Smith ( 2679 ) on Monday May 31, 2004 @05:57PM (#9298791)


    http://modena.intergate.ca/personal/gslj/hyperal te rnatives.html
  • mIRC Scripting (Score:2, Informative)

    by petrus4 ( 213815 ) on Monday May 31, 2004 @06:01PM (#9298821) Homepage Journal
    I got my own feet wet programming wise by writing my own mIRC scripts. The language seems to have got a bit more complex since I was doing it (1997 or so) but I think it's just been a case of adding more capabilities...the basic syntax is the same. Declaration of vars is dead easy, because you don't have to explicitly specify type, etc. There are also tons of examples available online in terms of other scripts.
    Probably the way I'd start is first introduce her to IRC in general if she doesn't already know about that, and then after she's used that for a bit, show her that there are some things which she can simplify with a few basic aliases. After that you could possibly move onto popups with embedded vars, and then finally if-then-else/branching.

    I'd suggest ircII, but I've seen unbelievably cryptic code in scripts for that...all bunched together.

    PHP could be really good, too. I found that very straightforward, and it wasn't frustrating in the way Perl was. Although you'd probably have to teach her about clients and servers and the difference between each before you got her into that.

  • Re:HTML (Score:3, Informative)

    by FFFish ( 7567 ) on Monday May 31, 2004 @06:02PM (#9298829) Homepage
    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 into CGI and Javascript and suchlike, which is where she'll start to learn real programming -- all the while being immediately productive and getting immediate feedback.

    Once she's there, it's not at all a large step to programming stand-alone or web applications.

    So, yes, HTML would be a good start. It isn't programming, but it is a step in the right direction, is easy, is productive and useful, and will help her decide if she really wants to commit to the big enchilada.
  • Re:HTML (Score:3, Informative)

    by los furtive ( 232491 ) <ChrisLamothe@noSpaM.gmail.com> on Monday May 31, 2004 @06:04PM (#9298846) Homepage

    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 it up a notch when the time comes.

  • Squeak and Etoys (Score:5, Informative)

    by Colin Smith ( 2679 ) on Monday May 31, 2004 @06:09PM (#9298881)
    http://www.squeakland.org/author/etoys.html

    Squeak is basically Smalltalk. The programming environment is designed to be fun and highly productive. You can go from simple visual concepts to coding.

    It's also free and opensource.

  • Try Euphoria instead (Score:2, Informative)

    by sombragris ( 246383 ) on Monday May 31, 2004 @06:13PM (#9298904) Homepage

    Euphoria [rapideuphoria.com] is a interpreted programming language that is simple, fast, and with a syntax that resembles something like Pascal without the anal-retentiveness and with a LOT of common sense. Has lots of features, is very fast for an interpreted language, and gives instant gratification. Works in DOS, Windows, Linux and FreeBSD. The downside, though, is that the license is proprietary and AFAIK the interpreter, though very small, is binary-only.

    If you like to see more, here's the FAQ [rays-web.com].

  • by Anonymous Coward on Monday May 31, 2004 @06:16PM (#9298923)
    Ruby is a good choice for a language, but I'd get started with this [pine.fm] tutorial.
  • 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.

  • Re:HTML (Score:2, Informative)

    by eurleif ( 613257 ) on Monday May 31, 2004 @06:40PM (#9299065)
    But <b> is deprecated markup which won't even be in future versions of HTML. Proper HTML, like <em> and <strong> doesn't specify appearance (italic and bold), it specifies meaning (emphasized and strongly emphasized). A visual browser could make <em> flash and be red instead of italic, and that would be perfectly within the HTML standard.
  • Re:Qbasic (Score:3, Informative)

    by Neurotoxic666 ( 679255 ) <neurotoxic666 AT hotmail DOT com> on Monday May 31, 2004 @06:41PM (#9299071) Homepage
    There's also a web based language, like PHP / ASP

    And if you happen to opt for PHP, I suggest using EasyPHP [easyphp.org] to easily install and use (for free) PHP, MySQL and an Apache server on your computer. It's more fun to code in PHP than to spend nights trying to figure out how to install it properly on a Windows box. ;)
  • Re:Java (Score:3, Informative)

    by jdreyer ( 121294 ) on Monday May 31, 2004 @06:45PM (#9299106) Homepage

    If you decide to teach her Java, you should consider using the BlueJ [bluej.org] IDE. It's designed to make it easy to learn Java. You can implement classes and mess with them directly from the IDE; no need for a main() method or i/o. So, for example, her first class could have nothing but a hello() method that returns the string "Hello, world!". And you can visualize the class hierarchy graphically.

    It is free but not (yet) open source. It's written in Java so it should run on your platform of choice.



  • Re:Hypercard (Score:2, Informative)

    by RumorControl ( 82735 ) on Monday May 31, 2004 @06:48PM (#9299126)
    It still exists and I would highly recommend it as well. anyone can turn out quick and dirty applications that do real work, without having to really understand anything other than ordering instructions. Metacard [metacard.com] andRuntime Revolution [runrev.com] being the best current examples. Rev is my favorite for doing alpha testa.
  • by bstone ( 145356 ) on Monday May 31, 2004 @06:53PM (#9299157)
    I started using CROBOTS, a pseudo C-language programming game to pass on to people who wanted to learn programming years ago. It's a small subset of C that allows you to control robots on a very simple battlefield. You can program rules for your robot and 'battle' other robots with instant visual feedback from your efforts.

    It's easy to program the robots, or experiment with making the sample robots included work 'better', and you can immediately 'see' your results.

    Check out http://www.ioprogrammo.it/crobots/home.php [ioprogrammo.it] or Google for it (available for many environments). I first used in in MS/DOS over 10 years ago.
  • Re:HTML (Score:5, Informative)

    by MillionthMonkey ( 240664 ) on Monday May 31, 2004 @07:00PM (#9299198)
    The PHP and JSP are Turing complete. The resulting HTML is not- it's output.

    Still, whether or not HTML is Turing complete is irrelevant. If you look at the mistakes that most beginning programmers make, it's that they have no understanding of the human-machine interface. They don't know how to communicate their intentions into forms that computers can understand.

    People are used to conversing with people, not computers. Telling people what to do is much different than telling a computer what to do.

    First of all computers have no common sense, and a human being has a variable amount of common sense that can be depended upon. So beginners write code like this [rinkworks.com], relying on the computer's common sense to fix it for them:


    begin
    readln("Number of Apples", apples);
    readln("Number of Carrots", carrots);
    readln("Price for 1 Apple", a_price);
    readln("Price for 1 Carrot", c_price);
    writeln("Total for Apples", a_total);
    writeln("Total for Carrots", c_total);
    writeln("Total", total);
    total := a_total + c_total;
    a_total := apples * a_price;
    c_total := carrots + c_price;
    end;

    "It's logical what the right solution is, and the computer should reorder the instructions the right way."

    Computers are infallible in certain ways that humans aren't, and this confuses people too. You see stuff like this from beginning programmers:

    let x=0;
    let x=0;

    Why is it repeated? "In case it didn't get it right the first time". I actually found this in someone's old Java code:

    Socket s = new Socket(ADDR, PORT);
    if (s==null) {
    //show error message...
    }


    Turing completeness really isn't what's important. The more fundamental skill is learning how to think when giving instructions to a machine, and for that, HTML is fine for a beginner. HTML will at least teach you that the browser won't read your mind, will encourage you to learn to fix problems by experimenting, and puts you in the correct frame of mind to realize that you will get exactly what you specify and nothing more.

    And even if it turns out to be a passing interest, HTML is an extremely useful computer skill to have. And an understanding of HTML is pivotal to many real-world tasks in real programming languages, since HTML is such a common type of data to be parsed and generated by computer programs. I'd say if a terrified adult doesn't know HTML, that should be the first thing they should study.
  • Revolution (Score:2, Informative)

    by Jonin893 ( 666637 ) on Monday May 31, 2004 @07:03PM (#9299225)
    Revolution [runrev.com] has a free trial version that can do just about anything the full one can if you don't mind using a couple of tricks and the support community is excellent. Revolution is basically hypercard with a bunch of new features and is constantly being updated.
  • by panic911 ( 224370 ) * on Monday May 31, 2004 @07:32PM (#9299389) Homepage
    I noticed someone mentioned HTML, which can be a lot of fun and very easy, but that is in no means a programming language (its a markup language). I think PHP would be an excellent beginning programming language for someone to learn. It is so lose and simple, and yet so powerful at the same time. It's built to be used by people of any skill level, whether you want just some simple little page counter, or some super complex object oriented forum or something.

    It's (for the most part) specific to web programming though, so that might not be the direction you're wanting to go in. You would also need to get access to a web server with PHP running on it.

    -panic
  • by wirehead78 ( 576106 ) on Monday May 31, 2004 @11:18PM (#9300571)
    Yes! Qbasic is easy to learn, instantly gratifying, and surprisingly powerful if you want to dig in. It's a great place to start...it's where I started. Easily downloaded for freehere [microsoft.com]. You can also easily find it on the Windows 95 disc.
  • Re:I agree (Score:4, Informative)

    by aardvarkjoe ( 156801 ) on Monday May 31, 2004 @11:25PM (#9300601)
    Language is a special case -- there's good evidence that the capacity to learn language is hard-wired into the brains of children, and much of that ability is lost later in life. Older people's lack of success in learning things like programming are almost certainly due to not having the correct experience rather than lacking the mental capacity to learn how to do it.
  • Re:HTML (Score:3, Informative)

    by 0x0000 ( 140863 ) <(zerohex) (at) (zerohex.com)> on Monday May 31, 2004 @11:29PM (#9300616) Homepage

    HTML, CSS, then PHP.

    This path provides the immediate gratification and a doorway to wizardry if she chooses to pursue it.

    • in my experience the most difficult concept involved is that of "files"; make sure she has a good understanding of what a text file is, and has a good text editor
    • I like w3.org [w3.org] and w3schools.com [w3schools.com] as starting points; lots less to unlearn that way
    • start with the most recent version of the HTML standard; the industry will not be going backwards with this stuff
    • Avoid javascript; some ECMA scripting might be useful, but javascript is too platform dependant (bad habits)
    pThe point made in the parent about having a use for the tool is a good point.
  • by Anonymous Coward on Tuesday June 01, 2004 @02:40AM (#9301257)
    You just have to make some macros...
    And a little program that allows you to put multiple instructions on one line seperated by semicolons...
    And then start using # signs for comments instead of semicolons...

    But really, it can be quite structured and easy.

    Some Structured Assembly Language [aloofhosting.com]

    It's just that most assembly programmers are bent on keeping things difficult for some reason.

"If anything can go wrong, it will." -- Edsel Murphy

Working...