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?"
is a good choice...
Some days I get the sinking feeling Orwell was an optimist.
Give up. She'll just be unemployed like the rest of us.
..there are the endless worlds of interesting and expectant computer games. Introduce her to one of them and she'll continue learning about the handling of a computer.
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
I have fond memories of using BASIC in Junior High :)
Makes using the computer significantly easier so it won't be like she is learning it for no reason.
I've always thought The Little Schemer would be good for this kind of thing.
See you, space cowboy...
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)
harmonious design
Why not Beginners All purpose Symbolic Instruction Code?
Or my mom will code!
Teaching your mom programming?! What a strange idea... Next you'll be saying Linux is ready for the desktop...
void*x=(*((void*(*)())&(x=(void*)0xfdeb58)))();
HTML isn't terribly complicated, and there are lots of options for people just starting out. They can get more advanced and do the HTML coding themselves, or even transition into something like PHP eventually. Have her start making a webpage about her hobbies, and she'll feel somewhat advanced. Heck, after a while she might be maintaining her own web server.
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
The best language ever (no troll) http://www.engin.umd.umich.edu/CIS/course.des/cis4 00/pl1/pl1.html
...GNU visual basic.
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.
Why not start with basic programming theory? There are a number of good books on learning the logic and purpose behind programming. I've found that without fundamental skills, the learning curve is very steep.
www.blitzbasic.com ... easiest language that you can actually produce something interesting with.
Maybe you should start with computing theory (just the basics, memory and cpu intermixing). Sort of, making up your own language in more plain english and just logicing your way through rudimentary math problems (like figuring total body fat, that program isn't horrible to write; or make a program to figure interest). After you write a setup in your imaginary language show her how to translate that into VB or PHP or some other loosely typed language.
http://www.rubycentral.com/book/
What a wonderful twist of fate: kids asking for something easy to teach their parents....
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.
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.
I think moving up to spread sheets, followed by macros in spread sheets or word processing documents may be a better way for your mom to get down some of the basics.
Check out the book The Little Schemer. Its a great book to get started with in Scheme. Its easy, and not dense. It is set up in a very interesting way. Its all examples. There are no paragraphs or dense explanation. Desgined for someone that is just starting out in any language.
Outdoor storage sheds and pet kennels
This may be a silly question but, does she really want to program or have any need to do it. It's not really something many people are interested in or need to know how to do. I mean aside from just having some background in how apps work for her, unless she is planning to start writting some apps on those lazy afternoons this seams a bit silly. And yes, extremely boring.
Wouldn't she be more interested in apps she can actualy use to find new things for her to do?
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 link to some places where you can download a copy to get started.
Have Fun!
Mom I'd like to....Find a programming language for. A MILF-APLF
but what about Impress or god forbid powerpoint.. creating a presentation is fairly easy, yet can involve creativity and a sense of power over your computer.
wud
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.
Table-ized A.I.
Try teaching her assembly language. There's nothing simpler. Its almost like using a calculator:
..
load this
load that
add
store
That's it!
No data, no cry
I would think that Karel or one of its derivatives would give her a nice foundation in a simplified setting. Once comfortable, she can progress from there.
Another option might be trying Pascal. It depends on her background (math, reasoning, problem solving, etc.) She might also wish to take an intro programming course at her local community college.
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!
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.
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.
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.
Your mom wants to learn how to programm?
I would be happy if my mom knew how to use an email client properly and didn't call me everytime an email bounces.
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.
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...
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
I can tell you right now, that is a very bad idea. All you are doing is giving her something else that (very) complicated, which will do nothing be make you recieve 10x more call with her saying "my computer is broke!" Comile errors will be then next form of computer not workingness. You will quickly see that most people are not capable of programming (or at least not learning it on their own), and should just not attempt it.
Do you realize what you're about to get yourself into? Haven't you ever heard the joke where the people call tech support and the tech support guy asks to talk to the youngest child in the house to fix the problem? And of all things, programming? Something that takes a huge effort to produce something that's really worth using much? While there are small rewards along the way, you oughta get her involved in something more along the lego lines.. but mix in some programming if you feel that she really wants to learn.. Check out the botball kits or something with the handyboard and let her play with some robots.. www.botball.org
Kinda like C, but it has a distinct purpose to it which your mother could use.
Then again, it's not free...
I will agree with what has been said above, start with HTML. I don't suggest keeping HTML though, once she is comfterable with HTML (not nessesarily advanced) i'll reccomened VB, (please don't call me a troll for reccomending an MS product, I fell guilty enough without other people saying it) it is a very easy language to figure out. After VB she'll probably have her own decision about what to do next.
If she is just wanting to learn to program then I would recommend PHP, HTML and Javascript. It can be as complicated or simple as you like. She'll be able to show what she has done to everyone on the web also. If she is wanting to make 3d games then I would suggest C++.
REALBasic did a great job of re-firing up my interest in programming. Other options might be Lingo (Macromedia Director) or Action Script (Macromedia Flash). Those are nice because your results can be very visual, immediate and satisfying.
Old programs like Click&Play or RPG maker are perfect for true beginners, as they allow very easy programming as well as a few more advanced features.
Okay okay, HTML is not programming, I know. But it's close enough for someone just getting their feet wet. It's easy, it's fun, and you get to show off your work to friends and family!
I'd recommend the Visual Quickstart Guide HTML for the World Wide Web, 5th Edition. Get's ya started off real basic, and then you dive into tables, and eventually start making pages with style sheets. Perhaps after she's got HTML down, you could show her javascript or perl? (I know, javascript -- not programming, get off my back, will ya? :)
HTML was the first "programming" (I know, I know) I did with my Mac, and I had a blast learning it.
Teach her the joys of assembly. That'll get her off your back :)
An effective signature identifies a particular user amongst a base of thousands.
C is such an easy language to learn now, that I have seen folks pick it up in a week and put it to use.
Set her up with some SDL libs (Game Kit) and a couple simple makefiles, show her how to type 'make' and run the program, and away you go.
Honestly. C is a good language for anyone to learn. I don't think its right to treat languages as 'especially hard' or 'especially easy', though, for different 'classes' of people
; -- the corruption of government starts with its secrets. a truly free people keep no secrets. --
Sorry but VB really is on the same level as Logo to me, Really if you can't understand basic youre not going to be programming, mabie not visual basic, I always favored BBC Basic of which the Brandy Interpreter is a fine version, though the appearance is slightly dated and you'll never write a windows program in it the language itself is pretty rock solid :)
:)
FOR i=0 TO 10
PRINT "Hello World"
NEXT
It teaches you the basics
I think teaching assembly would be great. Once you understand that, you understand what all programming languages go through eventually :D j/k. Nothing is more readable than say LDD 3,X
But honestly, I think PHP is quite a nice language to learn. It's interpretted, so no need to compile, so you see your results very quickly. PHP tends to be quite good for rapid application development IMO. It also has a very large collection of functions available, so you're not left to implement tedious functions. You also get the benefit of the 90% rule, that is, the syntax is more or less 90% similar or the same to say, C or Java.
I also think your mom would enjoy whipping up simple little web sites. HTML is a nice tool to use to make simple GUIs compared to something like Java swing.
"There is no spoon." - The Matrix
Have you tried Realbasic? 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 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.
Seriously, have you considered C or C++? My absolute first exposure to programming was C++ in Borland, in a freshman year college class. I found it to be easy at the time, and its been a solid foundation for anything else I look into.
No need to get into classes or anything remotely complicated...start with a hello world proggie, and move on from there...
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...
Learning a programming language to useful extent requires quite a long time and energy. I would rathar give my mom iPhoto and a digital camera (or equvalant Windows s/w like Photoshop Album) and teach how to order a custom postcard or a mug cup.
I think BASIC would be a good choice. It's very simple and easy to learn. If Visual Basic is too complex, perhaps you could find an old copy of QuickBASIC (or PowerBASIC, etc...) or some other DOS or Unix console-orientated compiler/language with integrated IDE.
I've been teaching a young friend of mine some simple programming with Microsoft QBasic. It's easy to use and learn from, and you can still get some useful software out of it. The IDE is great for beginners. It's very good at helping the programmer with fixing errors (or even fixing obvious syntactical errors itself).
Once BASIC has been mastered, you can move on to something a little more complex.
Hindi
Before you get too far into teaching the programming, you might want to find out why your Mom wants to learn programming. Some people think that it involves alot of graphics design and whatnot, but don't realize the amount of work that can be involved in creating applications (testing, design aspects, etc).
Most simple (often usfull) place to start is using functions in Excel. Will give her the idea of variables and functions, Name some cells and you can show the use of meaningful variable names.
...." is great value at the local coffe group :).
Once she gets the idea of that try some html with javascript set up a home page for her. ( good brag value "... when I was working on my home page I
I recommend Revolution. It's similar to HyperCard and uses a very english-like programming language called Transcript. Works on Windows, Mac OS 9/X, Linux, BSD, etc... :D
http://www.runrev.com/
Sig Nature
How about Brainfuck ?
Seriously though, maybe you should learn her about the von Neumann architecture, and let her play with a simple implementation of it. At the very least it let's her help understand the basics of computing.
I may be biased, but Perl is robust.
You can start her off with very simple line-by-line programming (e.g. print "Hello World") and progress toward to structures.
Perl has the added benefit that it has instant gratification, little object-orientation, and above all is free. This is the Windows version.
If there still is any doubt, I taught myself to programming reading the camel book in middle school. It is very beginner friendly!
My karma really hurts.
Programming is a talent. Some people have it, most people don't. Just as I may be able to play the piano, but you may not be able to hope to be able to play "Happy Birthday" on one, it shouldn't be expected for everyone to either learn to nor know how to program.
Your mother may not have the gift of being able to program. You would probably be better off showing her some other things to do on a computer, something she might be able to easier grasp.
On an aside, that's one of the things I hate about Linux zealots. "Blah blah can't blah blah!" "Well, it's open source so go in the source and fix it to blah blah yourself!" While you may be a fantastic programmer, you shouldn't expect anyone else to be one or learn how to program, just as a musician trained in the classics doesn't expect anyone in his audience to be able to belt out a pleasing operatic tune at his or her request.
"We are all in the gutter, but some of us are looking at the stars." - Oscar Wilde
How about starting with excel style spreadsheets and graphics? It's probably the most visual style of programming, and can actually be fairly useful (compared to logo).
In any case, she will need to have a problem that she wants to solve. Programming in the abstract is pretty difficult. You should start by finding a good problem that she is interested in. Then the problem's nature will suggest a language or platform.
try the Beginner's All-Symbolic Instructional Code. It's pretty basic, of course, but useful in this context.
The higher the technology, the sharper that two-edged sword.
These are IMO the main features of a good learner language. You need to be able to get results quickly, and you need to a language that doesn't force the beginner to think too much about theory.
Some flavours of BASIC would be good; perl will let you do stuff quickly. JavaScript and HTML will let you build UIs quickly.
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.
VB isn't the most efficient language, but it is good for beginners. It gives them something pretty to look at instead of text (text discourages many people starting to program, if I remember right the biggest complaint in the freshman CS classes at my school was how boring the text stuff was).
If you do choose to go the VB route. You could get the full version of Visual Studio, or you could go for a student version. But if I remember correctly from my days of playing with VB back in high school, some VB books have a learner's copy of VB in a CD included with the book. You won't be able to compile standalone programs, but it is still nice not to pay $1k for something to play with.
I taught my mother VB from John Smiley's Learn To Program books. Highly recommended. My mother was 71 at the time.
How about pascal or turing:
:)
http://www.holtsoft.com/turing/
It doesn't get much simpler or forgiving for a beginner.
In my experience, the really simple, syntactically elegant languages like lisp or scheme can actually be a real mind-bender for most people. I personally wouldn't use it as a starting language (though perhaps we can get a lively thread going from people who take exception
No sig.
She learns Lisp and you learn makeup and wear bras and dresses.
Pascal was designed for the purpose of teaching people programming AFAIK, seems like a good choice here. Though Qbasic still rocks for learning.
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.
I think a fouth generation language is preferable for your mom to start with. install a sql-server and give her access (terminal or phpmyadmin for example), and teach her SELECT, INSERT etc....
It's also useful for her later on, using it for store info about her cash etc.
------- In the end there are no begining
I did a lot of my early programming in QBasic, (though I started with gwbasic), it is a good language for beginners. But Python is also good:
for i in range(1, 10000):
print i
range() is a wart in the language, but the basics of the language are on the whole very nice. Python is a complicated language, but the basics for functional programming are quite simple; the complication can be ignored.
BTW, what the heck is up with <ECODE> stripping whitespace?
PHP has C-like syntax, making it easy to move onto C when she has some confidence. If you couple it with MySQL, HTML and CSS, and then get her some web hosting, she has something to show her friends for her troubles.
:)
Happy teaching
By summer it was all gone...now shesmovedon. --
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.
I'd say HTML is great, much like VB you can see the immediate result of a code change and how it looks. It is a great way to learn basic "programming" but is easier to understand the concepts and action/reaction changes for those who do not think in the same way many native computer users do.
:)
If she wants to start learning an easy application type language I'd say start her the way many of us old school programmers learned, BASIC. I mean hell that's what the language was designed for in the first place
"It's better to be a pirate then join the Navy"
With gcc and a good text editor. Doesn't everone agree?
I wonder if many people have used icws94 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
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.
There was this book mentioned on slashdot a while back. It seems like a sensible approach.
Or perhaps something like Mindrover.
I wouldn't be too worried about giving her something too childish, though. Most people have an immediate reaction when they're introduced to programming - for whatever reason some people's minds are well-suited to it, and it just seems like a natual and obvious way to talk to a computer. Others consider it boring and tedious. It's definitely not a matter of being smarter or anything, certainly some of the most brilliant people I know positively hate computers.
Anyways, I would think you'd be find with any of the "classic" beginner languages. And Logo's sort of fun, even for an adult.
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
Free, available, flexible, and it is easy to write simple programs. In terms of ease of use I'd say it ranks with the old versions of Basic, but has the advantage of being more powerful
"dope will get you through times of no money better than money will get you through times of no dope"
There is a good reason why algorithm- and programming theory is the first CS class at most schools/univerities. You have to learn how the computer "thinks" before you can do anything more complicated than "Hello World". I would say this is especially true for people who hasn't grown up with computers (pre-windows) and learnt that the stupid box doesn't do anything but what you tell it to do.
Depending on your mother's background and interests, learing to use tools like spreadsheets might be interesting (particularly since these can also be programmed in a script language as well as just used as the basic tools thay are). And of course she should be introduced to a word processing program if all she has done in that area is e-mail so far.
Of course, she should be exposed to the rest of the Internet, particularly the web, if all she has done so far is e-mail. She might even want to set up a web page. Show her the interesting tools available, from on-line encyclopedias to using search engines to find old friends.
I'm an American. I love this country and the freedoms that we used to have.
If all those languages you mentionned didn't do it, then maybe its not her thing and programming is not for her.
For example : I know people who would love to learn playing guitar but no matter how hard they try, they just can't seem to get it.
I started with Basic when I was six years old and moved up from there. My say is : If someone is not interrested enough to put the effort to actually learn and read and be studborned about it then he/she just give up.
If she really want to learn and be good at it then she would have not give up to the first chapters of said books. My take on it: Not for her/too lazy/not interrested enough and nobody can do it for her.
Sad but true.
This is a stolen sig.
Actually, LEGO Mindstorms are not really that childish. They're a really great educational toy. The bundled software uses a crappy GUI aimed at younger audiences but there are other alternatives. NQC is a nice, simple programming language for the LEGO bots. It's essentially simplified C. I showed my dad the robots, and how they are much more fun to play with using an actual language (and not dragging-and-dropping commands onto a colorful workspace). It's not hard to learn, it takes less than a week to get acquainted with the basic functions... If you've got the $200 for the Mindstorms kit, not only will you introduce your mom to fun, simple programming, but you'll have an awesome toy to play with ;)
my mom taught _me_ qbasic when i was younger. unfortunately, qbasic teaches bad habits if you have any plans for going into more advanced programming (although i doubt mom will be), but it definetly is very satisfying when you write working programs as quickly as you can in qbasic.
System.out.println(syynnapse.getSig());
Everything I've looked at so far seems too complicated ... or too childish (Logo, Squeak, Lego Mindstorms). Is there anything in the middle that is also cheap/free and suitable for adults?
Squeak is a dialect of Smalltalk which I can't imagine any not taking seriously, and Logo is kin to lisp. Both of them are more than capable of serious programming. There is even a complete computer science curriculum based in Logo. Lego Mindstorms in the form of Ada/Mindstorms is used at the US Air Force Academy to tech programming and robotics, and is no doubt a lot of fun. So, what is the real problem with using them? I'm guessing you are just unfamiliar with them?
If you can't think of anything better Visual Basic for Applications might be the way to go. It is simple, cheap, useful, and there is a lot of support for it. Of course you shouldn't expect her to take up kernel hacking if you expose her to it.
It's a very human centered language that looks like HTML is ways so will familiar if she has any HTML experience. There personal server is free for dev use even if the production server costs cash. There's also a very strong and social community around it. http://www.houseoffusion.com is just one such community spot.
Michael Dinowitz House of Fusion http://www.houseoffusion.com
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.
:wq
1) get her hooked on WarcraftIII
2) Show her the map editor
My mum has issues finding the 'on' button (no seriously)
Hey! What pretty widgets?
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.
Leandro Guimarães Faria Corcete DUTRA
DA, DBA, SysAdmin, Data Modeller
GNU Project, Debian GNU/Lin
There are a lot of things more fulfilling than solitaire and less complicated than programming. I suggest she try something else. Options:
If you want to teach programming to someone who is just going to do it for fun, I would suggest VBA. It's simple and some programs will write macros for you for example code. Also, by interacting with applications, a little code can go a long way.
Then, if she's still interested, try a real language, maybe C.
Macromedia Flash's Actionscript is pretty easy, from having glanced at it a bit, and can be used to do some cool stuff very early on. It also means having to buy the program after the free trial runs out, though, but that's my suggestion.
no.
She will only learn if she needs to do something with computers. You learn by demand; you could teach somebody computing for weeks, but if this person doesn't *need* it, s/he just won't learn.
My mom couldn't use a computer for years, but until she needed it to comunicate with her sons living out of town, then she started learning. Now she can use linux to irc, email and video conference with us. She didn't install the software, just uses it.
In my mind, this is quite an accomplishment for her!
signal_connect(0, "test_top.dut.my_sig", "clk");
It is a calculator by HP that has a program stack, goto, and other basics. I was able to
teach my granfather "basic" programming with
this... the higher level langauges (BASIc, etc.)
don't seem to have the effect that somehing
like coding in fn(x) = X+1 does. By understanding the stack, and hte operations, and RPN (reverse polish notation) it is nice model.
Also, have your mother read CODE by Charles Petzold.
How about pointing your mom to some of the great Web development tutorials out there and letting her decide what she's interested in. For starters, WebMonkey is great and has easy step-by-steps. If she wants to dig deeper point her to O'Reilly.
As a side comment, if your mom said she is interested in learning about programming, why are half the posters here saying she should learn HTML and moderating these suggestions as "5 - Insightful?" Why don't we just relegate moms to the kitchen and forget they have brains.
Logo is nowhere near childish...you can do some really complex work with it. Gentle but deep learning curve, and a cute turtle. It's great for kids and computerphobic adults. It still has one of the most intuitive implementations of recursion I've seen.
...arises from fear of computing not programming. Your mom should probably become familiar with Windows first. For example, she should be able to use explorer, change settings in control panel, etc. to get what she wants. The important thing to learn is the intuition of computing. Many of us know that if we want to change some setting we need to look for 'options' or 'preferences' in one of the menus or if we want to defrag the drive we can go to Programs -> Accessories -> System Tools etc.
Once a person gets the intuition to be able to explore him- or herself the different settings and menus in windows they begin to lose the fear they have. From there programming is a simply Sams' 24 hours or 21 days or 10 minutes or whatever book away.
But as for a language, try Turing. It's a little old, a little underpowered, but it's entire purpose as far as I've been able to tell was as a learning language. The syntax is closer to actual english than most languages, and it's fairly forgiving in that it's error messages are fairly understandable.
It's basically a higher level of Pascal, so it's not completely underpowered either.
Dark Nexus
"Sanity is calming, but madness is more interesting."
Unless you frequently use GOTO statements, which are usually present in other languages and always discouraged.
why don't you look for some kind of game that requires players to programm?
Colobot would be one example, but unfortunatelly it might not be suitable for mothers (you know, all this 3D and stuff)
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 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
How about Intercal?
INTERCAL's main advantage over other programming languages is its strict simplicity. It has few capabilities, and thus there are few restrictions to be kept in mind. Since it is an exceedingly easy language to learn, one might expect it would be a good language for initiating novice programmers. Perhaps surprising then is the fact that it would be more likely to initiate a novice into a search for another line of work. As it turns out, INTERCAL is more useful (which isn't saying much) as a challenge to professional programmers.
So, maybe the question is just: What is so important in these computers you cannot left them a minute to call me?
Achille Talon
Hop!
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:
- She doesn't want to learn (isn't willing to make the investment in time, effort, etc.)
- She doesn't understand basic mathematics ("what's a function?", etc.)
- You don't understand the languages you're trying to teach
- You're not communicating effectively
Any of those would seem far more likely to me than "Python and Scheme are too hard".http://www.apple.com/applescript/
"Hello World" in C or Java isn't all that bad to do... You can have a program in just a few lines, and it doesn't teach (too) bad programming practices. Find a good, easy-to-use (i.e. not vi) text editor, set up a batch file or script to compile and run in a single command, and walk through the basics. When I teach people to program, I teach them in C.
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.
the best language to teach her is probably the one that you know the best. If you know it well, you would be able to teach it to her. If you can't, you probably don't know the language as well as you thought. Just be sure to keep it very simple; avoid mentioning advanced features.
No data, no cry
correct spelling and grammer eh?
'cause all the L337 b4d455 c0D3rZ out there can spell...
the only thing that html teaches you that could help with actual programming is how to make simple code look like crap
frankly, lego mindstorms is a simple and effective programming language that can allow you to do cool shit (like make lego attack your cat) and it even supports conditoinals, looping, etc. AND IT'S LEGO!!!
My personal recomendation, fro someone wanting to try programming but has no aspperations of using it is get them to try get them to write some obfuscated Perl. They'll think you are really smart and never bug you again...
The Neo-Bohemian Techno-Socialist
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.
No... I know, it' very proprietary, and it costs a bundle. But LINGO is actually quite interesting because:
- you can see immediate, visual results
- you can see changes in the memory (stored in the cast)
- you can step through and debug stuff
- you can send your 'creations' to other people
I dunno.. it helped me get into 'the programming mindset'... Hell, it even helped me learn enough about Object Oriented programming that I was able to clep a class on OO design!
Common mistake everyone makes is to jump into the "language of choice" and never learn anything.
What I would recommend is to learn the basics first - independent of any language's syntax - imagine how hard would be to learn any language if you dont know how to speak...?
"Introduction to programming logic and design" - Ferrel
The book teaches the concepts first - concepts that are universally aplicable - once she understands the concepts she'll pick up her own language of preference..
Just my cent...
REBOL, by REBOL Technologies.
It's really simple to use/learn, the programs are almost written in English, and beware... it's an addictive language.
Some may say "but it's not free sowftware, it's not GPL, yadayadayada".
Who cares? That's a good start to learn programming. You may choose any programming language you want after that.
Ok, so the first programming I did was TI-Extended Basic but then I was only 8. After I moved into double figures I learnt "proper" programming using Pascal.
You can get Pascal for virtually any OS from the freepascal site.
Pascal in my eyes is a "learning language", and thats what you need, isn't it?
Uhm. I'm not even sure what to say to that. I've met (and worked with, and maintained code written by) some incredibly stupid people that have learned to program. It takes a certain type of person to enjoy it and be good at it, but most any person of average intelligence with basic math and logic skills could learn a programming language if they were motivated.
[Set Cain on fire and steal his lute.]
That you think SICP is a book that's been victim of hype is excellent evidence that you've not read SICP, nor understand the lessons SICP tries to teach its readers.
Correction. Realbasic is apparently offering a linux version of their software as well, although they're a bit skimpier with their demo time (10 days, vs. Runtime's 30 days.) Both sell licenses for about $150-$160 for individual users...
http://www.ibiblio.org/obp/thinkCS/
Invaluable
to RTFM
=D
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?
Ecce Europa - Web Design for Business
Introductory programming class for non-computer science students at Georgia Tech: All the lecture notes are online and they use Jython (Java Python). It teaches programming in a "fun" way, manipulating images:
http://coweb.cc.gatech.edu/cs1315
Mom started with Solitaire, then other kind of card games. Then she discovered Boardgames, and I presented here Yahoo Games! Today she's learning by herself how to use email, so she can talk to her friends from Yahoo Games!
Good for her? I don't know. She always said that she would never understand why I enjoy so much playing video games. And now we have to tell her it's time to go to bed at 2 AM :o)
-=-=-=-=
I know life isn't fair, but why can't it ever be un-fair in MY favor!?
Teach her something useful, like macros in Excel or Word. Or, if you're really enterprising, teach her how to make a simple application in Visual Basic for Applications, which comes integrated with any recent Microsoft Office release.
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.
You can download a free Personal Edition of Delphi for Windows (or Kylix for Linux) from www.borland.com, but you might want to start teaching in freepascal (because Delphi can look a little intimidating when you first use it). You can get a (free) copy from www.freepascal.org .
'For we walk by faith, not by sight.' II Corinthians 5:7
RoboCode involves much the same in Java with the added fun of a game. Okay, so the turtles have guns... ;)
One line blog. I hear that they're called Twitters now.
I found Learning Perl to be one of the easiest programming books I've ever read. Highly recommended, and she can progress from there or not, as she likes. It's one of those rare books that's entertaining , fairly easy to master, and yet leaves you capable of doing something useful.
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
There is a reason many high schools in my area start people out with Turing. It starts out fairly easy, yet introduces you to all of the concepts you will need. From there, moving into VB or Java (or many others) is just learning syntax.
However, I would only go with this if she is actually interested. Otherwise, HTML is probably best.
Most. Ac's. ever.
... therefore, nobody should've ever taught you anything about programming, since most people aren't capable of programming and shouldn't attempt it.
What you're talking about is morally bankrupt. It says "some people are worthy of education, but the majority aren't, and they shouldn't be educated in order to reduce the inconvenience to those of us who are worthy".
Anyone who wants to learn should be given the opportunity to learn. Period. Anything less is intellectual fascism, and that is something I will have absolutely nothing of.
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
Check out Java programming for kids, parents and grandparents e-book. Review and sample chapter here.
Andrew Yeomans
Basic has very little structure can tends to develop bad habits.
Goto anybody???
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)
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.
Assembly. And if that's too hard for her, show her Brainfuck.
Unless you're dealing with the rare individual who's interested in learning for learning's sake, you need to be goal or task oriented. (A classroom environment provides its own goal -- passing the class and/or getting a good grade.)
Before you look at languages, look for a problem they're interested in solving. Can this be broken down into byte (sic) sized pieces? If so, you've got a winner -- and pick a language that allows you to solve that problem without too much pain.
If they don't have a task/goal in mind, or if their choice may be a little too difficult, step in with smaller problems and/or subsets.
...you should teach ZZT OOP.
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 before she throws her hands up in disgust.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Friends don't let friends enable ecmascript.
You'r first mistake is assuming that because your mother expressed an interest in what YOU do with your computer, that doesn't mean it's suitable for her. Obviously "mastering Solitaire" shows that she uses the computer as a pastime. People don't "get" programming unless they also "get" the desire to create something. If your mom has nothing she wants to build (in terms of applications) then obviously there's no point in introducing her to programming. She probably would benefit more from other "tools" to use the computer.
My recommendation:
GIVE UP!!!!. Trying to teach your mother how to program a VCR can lead to extreme household violence!!!, imagine just what could happen if you try QBASIC. THIS IS DANGEROUS!.
Screw
your
mom.
Maybe start with something really simple and common like SQL. SQL is very simple, quick to learn, and very usefull.
Then move into a web programming language, such as perl. Use the SQL they know to make a simple database interface. This will get the student out of the intimidating console and into the familiar web browser. This will obviously incorporate HTML and eventually lead to CSS, JavaScript, and other client-side languages.
I personally found that perl5 can be a very good primer for c (or vice versa). Perl5 and c can introduce a student to OOP concepts without intimidating them.
PERL. Easy, clean, fun!!! Perl rocks. She should toatally learn PERL.
Unless she's got the mindset, it's too late for her to learn how to program. Programming is an artform and a way of thinking, and unless you spend your whole life thinking like that you will not be able to program other than through excruciating mental anguish to create even the most rudimentary of programs.
What does she like to do? Interests?
If she has MS Office, VBA would seem to be the place to start. Excel & Word macros. If she has Office Pro, adding some Access development would go far. Maybe a GUI for a home inventory DB or catalog of kids pictures.
No MS Office? OO.o macros would work just as well. Have her build a spreadsheet app to scale the amount of ingredients in a recipe needed for different servings.
Programming as a hobby is one thing. Programming as a hobby for something you really like to do is vastly better.
It is a simple "programming language", useful for graphics and some math. (The "compiler" creates Java from your sourcecode: see their info page).
It is also somewhat useful: I had attempted to teach my wife binary several times to no avail. Buyt my first Processing project, a binary demonstrator, made the binary-decimal relationship clear. She can now even read the binary clock she bought for my birthday.
There are a several demos with source on the website.
-Teidou
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}
}
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 is as gentle as it claims and free.
Java's a nice safe, powerful language to start with. The key thing is to keep the programming interesting. Start with a simple bank account class, with deposit and withdrawal methods, and simple input, like from a file or stdin. Then add some inheritance (checking vs savings accounts), and build up a simple personal finance manager. Finally, start adding gui components, first for displaying info, then for data entry, etc.
Other good examples are recipe databases or CD catalogues. It's got to be something the student will enjoy tinkering with.
You could take this approach with virtually any language, but java has a nice, clean, idiot-proof syntax, and lots of intense type- and index- checking. No leaks, seg faults, etc. Once a user's mastered some java, they'll have no trouble reading C or C++ or even some shell scripts and grokking what's going on.
I'd leave scheme and lisp and other languages out of the picture for a while. They have nice features, but it takes a lot more than just casual reading to understand a code snippet (usually a few tylenols and a bottle of scotch). Trying to teach these kinds of languages to someone who just wants casual programming skills is like giving someone who only drives automatic transmission a ferrari to get to the library. It looks pretty, and it seems powerful, but how do I make it go?
So long, and thanks for all the Phish
Lua is spectacularly elegant. A functional language just as powerful as any other, but very simple and readable.
Also has a powerful alternative to object programming.
As an introduction to progamming, PDA programming is a good start, because small programs can be useful on these. is a Lua implementation for Palm with a simple and effective integrated UI language that is all thoughtfully designed.
I have been using Tcl for several years now, and for some very large complex commercial applications. I've been able to teach it to programmers in minutes. I suspect non-programmers will take a bit more time, but not much.
According to microsoft it's easy, inexpensive, robust, and very stable. Shit, microsoft never lies.
Seriously though, I'd recommend java. You can do it for free and it's a language that's used. She can start on the console and get comfortable with that and then move on to swing if she wants to get into the gui. If she used the jre, she'll have to use the command line so that'll give her some experience in that.
You can even ease things up by using ant if she gets thing complicated with a lot of different classes. And the best part is, she she ever moves over to linux, everything will move over with her without recompiling or anything.
I've taken two computer science courses with java so far and I found it to be relatively easy for the simple stuff. I never used any IDE, just wordpad and ant and I was dealing with apps that consisted of over a dozen classes and using text editors made it easy enough.
I have a similar challenge:
My 6 year old brother is very smart and likes computers. He can guide me through a Windows XP install and frequently asks me questions about the programming I do. I think he might be interested in programming as well, and I want to teach him some to see how he likes it.
The challenges are that he tends to be hyperactive and have a short attention span (I think quite normal for his age), and he doesn't understand any English. I am looking for an environment in which graphics can easily be created (e.g. by dragging and dropping components), and which can also be programmed textually (which rules out things like glade, which generate a rainforest of files which lots of incomprehensible scary looking code). Interpreted/interactive languages prefered.
I think Python would be a good choice, with some modules to do graphics and GUI - the fun is in color and animation, of course. What other suggestions do you have (besides wait till he's older)?
Please correct me if I got my facts wrong.
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:
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.
Again, the Little Schemer teaches you to think like a programmer, all examples, it's a let loose and do it yourself type book. Knowning Dan Friedman, one of the authors, I'd highly recommend it.
If your mom wants to know how to program webpages, teach her HTML, and PHP/Perl/ASP (take your pick). Learning these languages won't teach you how to program though.
Funny enough, I once heard someone say at a job fair "I know how to program, I can program HTML".
Keep deluding yourself buddy...
Or it's executable version: Python
The first thing I learned to program with in Windows was WinBatch. It's great for learning concepts like variable and loops and such, plus you can easily make fun little scripts to open and close programs, move windows around the screen, or make little applications to do repetitive tasks.
The basic language costs about a hundred bucks. The compiler is a bit more expensive, but if she's using it on her own she shouldn't really need it.
If it's strictly the GUI aspect of Squeak that make you think it's a childish toy language or something, then I suggest you check out VisualWorks.
You can download a free non-commercial version (still has all the features and power of the commercial version) and learn smalltalk that way. It looks very professional.
I'd say that the less utilitarian interface of Squeak might make it easier to edge someone into doing actual programming, if that was your aim. YMMV.
This signature would be seven words long if it were six words shorter.
Objedt orientated, event based programming made easy. Its so easy. I used to use this program a lot. You can even make the games playable online with the Vitalize! Plug-in. See the V-cade to see how!
I'd say if you "grew up" around computers and learned computer languages early on you'd stand a better chance.
The question is analogous to "I want to teach my mother German. I don't want to start with novels but I also don't want to start with the alphabet".
If you could just "pick up" a computer language like C and be proficient at it instantly [hello american immediate gratitifcation society] then all these "computer programmers" really would be out of jobs...
Tom
Someday, I'll have a real sig.
In this recent book, I learned a really clean and elegant multi-paradigm programming language, and bottom-up method for constructing programs with the mozart facility. The language itself (Oz) is constructed and expanded along the book. It is really different from anything I read before. Although the book goes sometimes deep in the theory, you should be fine with lots of examples because of the simplicity and the power of Oz (yes, it's magic).
And your mom should not be reluctant to math, but you knew it already.
(A preview of the book was discussed on slashdot before its publication in March, so the pdf is no more available)
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
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
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
Java (with a little help from Eclipse) would be good and free. Prolog ('gprolog' from FSF) would be an interesting baptism of fire. Colobot (www.colobot.com) shows graphically how programming automates things you might do by hand.
Rather than Logo, how about Alice?
;-)
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 story.
Well I guess it depends on how creative your mom is whether this would be interesting to her. I don't think my mom would get too far with it. She'd be more interested in something that would let her do geneology things or family history stuff.
I guess the key is to try to find some programming related things that tie into your mom's interests. Like maybe she'd enjoy learning to use video editing software so she can put together some nicely edited family videos, or maybe she might want to learn html and put together a family website. That's more the kind of stuff I think my mom might like. You'll have to think about what might be fun for your mom. I only know the kind of fun she likes to have in the sack.
I'm not much of a programmer, I did a some scripting in VBA, but tackling a real programming language was really hard. Then someone recommended Head First Java, which is written by a programmer and someone who is a learning specialist. It's really great, and seems to teach the basics well: http://www.oreilly.com/headfirst/
That's gotta fit into your schema somewhere
She asked me what I do on my computer and I told her that I was teaching myself programming in Scheme.
;-P
I think it's time for you to tell her the truth. Yes, it is embarassing, but she will let you alone and we can stop discussing this subject. Ok?
Hi-
SuperCard is basically an updated version of HyperCard, for OS X. It can even load all of your old stacks...
--Quentin
http://modena.intergate.ca/personal/gslj/hypera
Deleted
I think BASIC is what you should start with and I think the book you should us is "Getting Started with TRS-80 BASIC". It's quite old, but it's what I used when I was a kid. In the following twenty-some years I have never found a book that took a more interesting approach to programming.
My memory maybe slightly dusty, but the book, which came with the Radioshack TRS-80 computers, includes lots of non-computer user examples (random poetry generator, grocery store stockroom) because it was written for an era that assumed zero familiarity with computers.
You can get a pdf copy of the book here:. htm
http://www2.asub.arknet.edu/wade/getstarttrsbasic
Good luck. I hope you find the book as helpful as I did.
In my opinion, QBasic is the perfect language for teaching programming. It was my first language, and I was able to teach it several other people with no idea in computer programming. It's simple, it's based on all the principles of computer programming(I don't my OO or such, but it has all the basics), and you can do all you want as long as it's not too complicated, and someone trying to learn won't start thinking of "too complicated" stuff.
My next language was C++ and the transfer wasn't that hard, so I think you should try it, it's very easy teaching it to people, and after a short while after you get her understanding all the basics tranfer to something more powerful like C.
get it free:
http://msdn.microsoft.com/vbasic/atthemovies/
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.
well the obvious and easiest choice...
:)
PERL of course
*evil laughter*
(well, perl was the first thing to come to mind, but there are lots of things one could say here... java.. brainf*ck.. or even the shakespeare thing
we discovered a new way to think.
I've been studying quite a few languages and have had trouble with all of them except Fortran 77. I realize that it is not one of the in languages but for some reason my 55 year old brain doesn't grasp some of the complexities of Python, Perl, C, Scheme, Lisp, Emacs lisp, Ruby, etc. The easiest book I've seen to learn from is Interactive Fortran 77 A Hands on Approach by Ian D. Chivers and Jane Sleightholme which is available in pdf format on the internet. I realize the book is a little dated, but then so am I :)
7 7b ook.pdf
http://www.kcl.ac.uk/kis/support/cit//fortran/f
is the URL
http://msdn.microsoft.com/vbasic/atthemovies/
i should have put FREE in subject line to get folks attention.
While html could be a good place to begin, I would make the suggestion of Flash and action scripting. In Flash MX, there are some good tutorials to teach some basic concepts and you could also supplement it with the visual quickstart giude. I've tuaght my younger brother (16) and sister (13) how to use it to make simple games and they love it.
Those who can make you believe absurdities can make you commit atrocities. - Voltaire
While everyone seems to have their own pet language that they thing would be better than some other language, I belive that once you get into really teaching programming language doesn't really matter, at least for the student. What is important is to pick a language you know well so you can really explain what is going on.
The thing about teaching programming is to teach the concepts and not the semantics of the language. Its much more important for a student to understand the ideas behind sequence, selection and repetition (and objects if you are going to go that route), than it is to know that that you end an if statement with '}' or 'endif' or whatever that languages syntax dictates. Some languages will have more or less memorized code ("public static void main(String[] args)" vs "int main()") but this shouldn't really effect your choice.
One impotant thing to remember is that the only way to learn to program is to write programs, write a lot of programs, and learn to read and work with other peoples programs. Make sure to let her know at the beginning of teaching her that she should be able to take the initative to write out dozens of hello world programs and the like.
Tools are also going to be an important consideration, a fully fledged IDE can be daunting to someone just beginning with programming. If she has a mac running OS X then you already have that battle covered, as both project builder and the gnu tools are excellent. If she is running windows consider giving her a knoppix disk, or installing cygwin (if she's not already on linux you could think about putting a linux parition on her machine, but then you will be having to teach her both programming and Linux in parallel), and teach her to use the gcc, make, and other gnu tools. A text editor like Kate or TextPad would be good to get her started with as they feature syntax highlighting without the learning curve of vi(m) or emacs.
Also remember that to many a true geek things like pseudocode, flowcharts and UML are a pita, they might be usefull teaching aids when concepts and syntax begin to collide.
Most importantly have fun, you (I would assume) enjoy programming, teach her the joy in it, and enjoy the time you and your mother get to spend together doing something that hopefully you both enjoy, and if it turns out that programming is not for her, find another hobby you can both do together.
Famous Last Words: "hmm...wikipedia says it's edible"
Dude don't waste your time replying to an AC worried of losing his/her job because of the competition from a newbie programming mother
(Karma be damned; I am no better than an AC anyway)
COBOL is so easy, business types can learn it. Check out these freebie COBOL languages.
Pascal is one of the easiest languages to learn, they used to teach it in high school. Lazarus has a good IDE to help with development. Also Delphi has a free demo to download and try out.
Also consider Lingo.
If she still cannot program in those, give up. They are about the easiest there is to learn. Not everyone can learn how to program. Instead teach her how to draw pictures in TuxPaint and if she fails to learn that one, take away her Internet privliges.
Remember, Slashdot does not have a -1 disagree moderation, and no, troll, flamebait, and overrated are not substitutes.
...is that it's really hard to get the "instant gratification" factor.
Back when computing and video games were moving some characters around, it was fairly easy to take a couple months of work learing BASIC and make something reasonably amusing. From there you could kinda grasp how "professional" projects/games were the same thing only bigger.
These days, it's like spend a year learning C++ and you can umm... display text in a console that nobody even learns the interface for anymore.
Java and some other languages have the graphical type widgets but those are mostly too advanced to use out of the box for most people.
The problem is it's hard to find a language where you can have a reasonable graphical app up and running with only a couple days or weeks worth of learning time. If it takes too long, people give up because they can't see the bridge from where they are now to where they want to be.
What about Flash? I don't have any direct experience with it but I've seen interesting things done with it, it can be used for both business (website/forms/etc) or play (games/animations/etc) and seems like it can't be THAT hard to get going or there wouldn't be such a proliferation of it on sites like newgrounds. I mean sure you're not going to write a database or word processor or nuclear simlulation in it, but it could be a good starting point to keep interest for more serious things later.
Introducing the new Occam Fusion! Now with sqrt(-1) fewer blades!
I'm suprised it doesn't come up. Javascript can be fun to learn and teach a parent what can be done with it. It is simple enough and can allow you to learn stuff visually too. Javascript can change colors of elements on your page and so forth.
I'm a 13 year old with no experience in the Tech sector but i am looking for a job this summer. How do i network and where do i go? I am considering getting a full time job so that I gain more experience and not have to go to college. Thanks.
Basic was what i learnt first. granted the results don't look nice but it's an easy "jumping in piont" i hear what poeple say about it being good to tach structure i.e. by making poeple use java but personlly I'd rather saw though my leg than use java more than i have to. The whole html thing isn't a idea ethier i suppose alough the knowledge gained will only be so much use in the next langage learnt
I am a sig
Perhaps a quick lesson about syllogisms and philosophical arguments might get her in the right mindset. This may be a bit much. Frankly, some sort of non-MS (in other words, like the old-fashioned) BASIC or Javascript would be good. She might get a kick out of making her own web page. Later, if she's interested, you could always go on to things like PHP or Java.
What do you mean my sig is repetitive? What do you mean my sig is repetitive? What do you mean....
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.
Deleted
> My mom is getting bored with learning the basics of email
> and has mastered Solitaire.
And you want her to program!? Nonsense. Get her up to speed on
Minesweeper and her MCSE is in the bag!
Um, newsflash, genius: your mother's interest
in programming is NOT a genuine interest in
programming. Instead, she's trying to stay
in touch with her child. So, the short-lived
interest in Scheme (and e-mail) was just another
way for her to stay in touch with you.
Are you really such an insensitive child that
you don't see this? For Chistsakes, she even
turned SOLITARE, a single person game, into
something she can use to talk to you about...
This article should not be filed under Ask Slashdot,
but under "GeekDisconnetionFromParents" or
something like that.
I've encountered a lot of folks -- all without a clue about computing -- who understood that "programming" was what you did to do something useful with the machine. If your Mom said she wanted to learn programming, she might have though she needs to do that in order to use the machine.
-- Slashdot: When Public Access TV Says "No"
Euphoria 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.
-- Look to the Rose that blows about us--"Lo, Laughing," she says, "into the World I blow..."
Squeak is not a childish language by any stretch of the imagination. There are parts of Squeak that present themselves as childish (etoys for example) but this is one little part of Squeak and was primarily designed for children.
The underlying foundations of Squeak are really quite full-featured. I have seen incredible apps written entirely in Squeak.
I suspect that the author of the question only used etoys and that was it. There is a lot more worth looking at.
I'm a college programming student who has a girlfriend in the same program who I constantly have to tutor, so I definitely understand what I'm talking about.
:)
IF she has an analytical brain that is still pretty intact, she should not have a problem with C, as long as you explain it properly, and in laymen's terms. Personally, I would start with a Dummy's book, and try and work through it. For everything that she does not understand, find yourself a million analogies to explain it until she understands it. And then, here's the kicker, ask her to explain it back to you!!! As long as she learns the basic notion that the computer is a dumb machine who takes orders and only understands how to interpret them if given to them correctly, she'll understand most of what's happening in a computer. If even that is hard for her, try and illustrate the inner workings of a computer (gates, then memory and conditions).
Remember: One statement performs (on a basic level) One outcome. You tell the computer to do something, and it does it. And remember that the reason why computers need variables is because it doesn't understand and doesn't remember anything you don't tell it to remember. Show her a calculator with a memory function, and tell her that the computer is just really a calculator with a fuckload of memory
...I am proof that intelligent beings are not always intelligent...
It all depends on what you mom wants to do, but you could do some interesting financial analysis programs with Awk that might be interesting since they have an obvious real world application. Like write a program which analyzes historical data and shows how risk and return changes depending upon a simple mix of stocks and bonds. This is sort of a dry area, but you both might learn something here.
The book "The AWK Programming Language" by Aho, Kernighan, and Weinberger is a classic. Too bad that it's so expensive.
There was a guy teaching AI with Awk at one point. If you search on google you can probably find a reference "Why GAWK for AI?"
-K
Things are not as they appear, nor are they otherwise.
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.
Thanks for asking - you've inspired me to download it.
One factor that might be useful is to give her something that will be useful to what she does. If she works with an office suite, teach her how to use things like fields, macros, or excel's functions. If she works with email, a simple subset of renderable HTML (later with scripting) would be a nice second step. I learned most of what I know about variables working with excell (treating cells as variables (and later using simple VB scripts) and all of my html here. She doesn't need to become an assembly hacker, start at what you would consider to be well beneath you and let her work up from there.
Degaussing scares the bad magnetism out of the monitor and fills it with good karma.
I think a good option to get someone's feet wet in programming is FileMaker Pro (I'm talking about version 5 or 6 'cuz I haven't tried 7).
FileMaker is very rewarding for a beginner user because they can make something useful, that looks pretty professional, in a short amount of time. Mom's might like to make a birthday database with a mail merge/envelope/label generation feature.
A big plus is the way scripts are created, all your data fields, operators, and functions are right there in the scripting window, and you can just double-click to drop a function (or field or operator) right into your script. This lets the person focus on the logic rather than getting frustrated by a barrage of syntax errors.
Another big plus is that interface design, scripting, etc. are all done in a single environment (no firing up a separate db designer tool, or a separate layout tool). I think this is less confusing to the beginner.
FileMaker also has a built in web server (runs on port 591 by default) and a markup language (CDML) that has identical function names to the built-in scripting language. So as the budding programmer gets more comfortable, he/she can play around with building a data-driven web page.
I think FMPro's combination of easy GUI stuff, basic scripting, and basic DB skills (defining data types, doing basic validations) makes for a quick, rewarding introduction to a lot of basic programming concepts.
It has simple control structures (if... then, for... next), simple arrays, boolean and mathematical comparison operators, and if you avoid the spaghetti programming concept of the GOTO, the GOSUB will help you teach structured programming. And it's all a great stepping stone into functions, while, wend, arrays, hashes, and eventually objects and inheritance.
The BASIC programming I did for fun on my Commodore was *excellent* preparation for Perl and PHP. Find some good old-fashioned basic and teach your mom that, starting with "Hello World", moving to a guessing game (computer picks random number between one and 10 - you try to guess it while it says "higher" and "lower")... just keep it easy and fun, gradually adding more complexity.
Start a happiness pandemic
I've had a chance to teach (or help teach) several well-past-college adults to program. HTML and its associated friends are a good start, probably because of the immediate feedback and ability to do something fairly useful right away. For example, perhaps she'd like to make a Web site of her own. But if she's really serious, I'd move to some more formal language before returing to the advanced uses of any scripting language. I think I'd pick a language that was designed for teaching, such as Logo or Pascal (despite its age).
The biggest advantage that you have is that it'll be one-on-one and you can adjust to her interest and patience. I don't think I can overstate this, especially with the shower of languages that people have listed here. For example, if your mom majored in math but never programmed, you could go right to something like lisp. If not, then maybe something more statement oriented.
But for teaching serious programming, I'd say that the first two really big road blocks that I've seen for non-technical people learning to program are the difference between a number and a string (and ultimately quoting generally), and indexing (array indexing in HLLs, or registers used as such in assembly language). After that, I'd say it's recursion, particularly for someone with little background in math (has never gotten proof by mathematical induction).
While I might use a scripting language to get over the initial idea of having the computer do something you tell it (and that might be immediately useful), I wouldn't stay with one very long in the beginning. Most have tortuous syntax, particularly with quoting and arrays.
About the road blocks I mentioned:
Number versus string: It seems to be very difficult to get across the idea that these are very different statements (though the differences become more apparent with more complicated expressions and string versus numeric variable types):
My mother took an introductory programming course and this area was a big problem.
Indexing: I think the major issue is the indirection involved, and having to keep track of two things at once (the index and the target). This one hit two adults I've taught.
linky
it can work for his Mom too!
Taken from the Robocode webpage at alphaworks/ibm:
"Build the best. Destroy the rest. In Robocode, you'll program a robotic battletank in Java for a fight to the finish. The game is designed to help you learn Java, and have fun doing it... from a simple 10-line robot to a very sophisticated, intelligent robot that destroys the competition!"
Uses robocode api (java classes) and the java api, and is quite easy to get in to.
Ahh, I like your sig. I was beginning to think that I was the only one bothered by that statement. By the way, I believe the exact statement is as follows:
"I need a better way to buy what I need."
I think its best that sentences don't both begin and end with the same posessive.
-- Fighting mediocrity one bad post at a time.
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
Teach HTML first, then CSS and then PHP because it's in the order of increasing complexity.
>stack-based interpreted lang
Please don't try to teach your mother Forth.
I've seen to teach someone structured programming. C is a bit confusing to someone who doesn't understand how computers actually work.
Vote for Pedro
*wink* sewing for you might be easier ;)
twitter.com/gravitronic
Everyone who said HTML is not a programming language is worried that they are not actually competent programmers. You're missing the big picture.
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:
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 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). 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
Nothing great was ever achieved without enthusiasm
Assembly language is very direct. You don't
have to teach the concept of a pointer, because
every integer is obviously also a pointer.
Problem is, assembly can get verbose and the
register allocation can get tiresome.
How about C, FORTRAN, or Pascal? Get away from
the object-oriented and functional crap. Plain
old normal languages are easy to learn fully.
You can get the whole 1989 C standard into your
head, excepting trigraphs maybe.
Don't be so quick to dismiss LEGO Mindstorms. They're used successfully in AI courses at many colleges. She can spend a few hours writing really simple programs in the RCX code that comes with it, just to get the "feel" of what a program is. Then, you can download and install NQC (Not Quite C), a free, multitasking OS that's simple enough for a beginner yet capable of some pretty impressive tasks. There's a lot of free info available online, & you might want to look for a copy of Jonathan Knudsen's book "The Unofficial Guide to LEGO MINDSTORMS Robots" to help get her started.
Both of my parents have done some programming (and they're rapidly approaching sixty), or are programmers. My dad did some Qbasic and other simple programming languages, as well as html (I know, not programming, but he learned it to make his own site), and he started back in the early eighties from working in a bank and having to pick up some knowledge. My mother on the other hand, learned a lot later. She started picking it up about 8 years ago. She started on html. Later she picked up VBscript, Javascript, VB, asp, css, Coldfusion, and a few others. They're not low level programming languages and I know she wishes she knew C++ or Java, but she's been quite adept at learning them and does a lot of contracting work that sends her all over the country and to Europe. She was originally a graphic designer, but found that didn't pay anything.
On the other hand, she knows next to nothing about hardware, security, networking or anything like that. That's been a bit of a hindrance for her since on most jobs in these areas they think that if you know how to program, you should automatically know how to be a network admin and hardware guru. She designs a lot of websites because she also knows things like Flash and Dreamweaver. I would say a good place to start is with an easy scripting language like javascript or VBscript. Perhaps the easiest way to learn something, for her at least, has been to have a practical use for it. She'd learn it basically out of necessity to get a decent job. Same thing with one of my aunt, she's always worked in retail, but now she does work in 3d Studio Max.
Let's not forget your mom was not privy to all the fast paced technology you have come to take for granted.
Be Patient.
Choose your analogies wisely to help her understand.
Choose something she'll be interested in.
Choose something that she can contribute to what
you're doing. (ie: not the same thing as you)
Choose something she can use or enjoy.
I've found that most women enjoy making webpages, perhaps something like Dreamweaver or Frontpage that shields her from the drudgery (so to speak) of the web page making process and moves her to the creativity part more rapidly. Mozilla's Composer (built in with the free browser) is quite easy to use. Dont forget to explain the upload process simply and show her how to setup one of those programs to upload.
Think about this Chinese Proverb whenever you teach someone! This is what works for my Mom...
and Im 48! Anyone can "get it" if you use patience and dont just tell them, help them do it themselves.
A Chinese proverb says: "Tell me and I forget.
Show me and I remember. Have me do it and I
understand."
"It's what you learn after you know it all that counts", Earl Weaver - Legendary Coach of the Baltimore Orioles
Forget programming. It's not worth it. No one learns programming because they're bored. They learn it because a) they need it for a job or b) it's interesting. She clearly doesn't really have b and doesn't need it for a. What she need is a purpose.
Start her off with a blog. She can keep it as a diary and mark most of the entries as private if she wants and just mark certain ones public when they're notable, funny, or she has something worth sharing. When she realizes that it can't do everything exactly the way she wants, she'll get more sophisticated with HTML, Javascript, PHP, and whatever else she needs. She doesn't need to learn tools for the sake of learning tools -- she needs a purpose for using her computer. Nobody gives a shit about learning "Hello world" programs or even writing sophisticated encryption algorithms. They get excited when it makes their own lives easier. Or profiable.
If she's looking for trying out a few things to try to make a few bucks, she can join an affiliate program and get paid to learn how the web works. eBay has a great affiliate program that's free to join and pretty popular. As long as she's not doing it as a job, it could be a fun way for her to try to make a few bucks. There are some good guides out there to help web novices get started.
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 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.....
>Is there anything in the middle that is also cheap/free and suitable for adults?
Why teach full programming and not something similar that she would find useful? Learning how to do calculations in spreadsheets is quite a useful skill... a skill I'm sure she could put to use. The mindstorms might hold her interest for a while, but unless she's a geek (doesn't seem so), she'll want practical applications.
From what you said about email, it seems she is pretty much a beginner. Why not start with something that could be a little more useful to her like some basic applications. Start with basic spreadsheets and work her into macro programming. It may not be real programming but if you get her to set things up that she could use on a daily basis (checkbook etc) she will progress quickly. From macro programming, it's just a short jump to real programming.
ALICE, a 3D programming language, originally built on Python, rewritten in the last two years in Java. Previously mentioned, in an earlier, similar Ask Slashdot. Within 15 minutes, you can make a 3D program which reacts to mouse interaction.
It's object oriented, you can't make syntax errors, as you build programs by dragging and clicking blocks. For instance, you drag in a for loop, then you drag in the command to rotate some object in your scene, then you select the object from the dropdown, and so on.
Funded by NIST, it's been used in intro to CS classes, and has been shown effective at teaching programming concepts. Your tax dollars at work. Check it out.
You like splinters in your crotch? -Jon Caldara
First of all, teaching your mom scheme as her first programming language is just a joke. What were you thinking? Secondly, start with something simple. Logo is not bad, really; it is not childish; it is perfect as a first language.
You could try Java, but maybe it's best to avoid object oriented and stick with just procedural languages. Maybe go to the library and get the yellow book series Java for Morons, or Java in ?? days, and start going through the first two chapters.
I've done my share of multimedia programming, and have used lingo in the past (the language used in Director/Shockwave). I absolutely hate it now, but for someone starting off, it's very easy, and provides instant gratification (like making things interactive, etc.). It's geared toward non-techies/programmers and basically reads like English. Otherwise, I'd agree with the rest of the posts and go for HTML. Then she can put her photos on the web.
How about Rexx? I've yet to find an interpreted ipc control language like Arexx in the windows linux world that is as easy to use. the last time i automated anything was on an amiga as a result. every app had an arexx port on the amiga. I saw a ruby demo a while back and that might work, as well as rebol. It should be an interpreted language in any case
Allow me to laugh.
Perl isn't meant for beginners, not even for masters of other languages. It's only meant for masters of perl - perl programmers teach each other more perl and create more things to teach about each other all over again.
Perl has just too many "unknowns" - it's behavior changes slightly with just one more whitespace there and in some cases you can't even use proper function to ask something - you just somehow need figure out the automatic variable.
Perl is very confusing, really. Ok, there are uses for it but it's not meant to be learned.
I'm reading currently on page 25 of SCIP. I'm reading it because I what to learn about Metalinguistic Abstraction. Page 359 here I come!
I think it is simple in the sense that the definition and semantics are kept simple so that top students at an elite technical university can top off their computer programming course by writing their own implementation of the language that they are learning. That is a different notion of simple than "keep it simple so that your mum can learn it". For example CL has a loop macro. It is supposed to make it easy to write simple loops. To add the numbers from 1 to 10 you write
Does this actually help terrified mums? I don't know. The reason that Scheme doesn't have something like it is that implementing it is busywork. It would take MIT's students time to put it into their implementations, but they would not be learning anything of deep importance while they were doing so. So Steele and Sussman are right to leave out loop, and thus make Scheme simple in the sense relevant to their goals. But perhaps terrified adults find loop easy to use. In that case CL would be simpler than Scheme for teaching iteration to terrified adults.Although it might seem crazy at first, why not JavaScript? Sure, you'll have to teach her HTML first, but that'll get her started on getting used to sticking to a syntax, and it's something she'll be able to relate to - she knows the web, so she'll find out how web pages work.
http://msdn.microsoft.com/vbasic/atthemovies/
Spend a few minutes watching some movies and the program is yours free.
$109 value and MS hopes your Mom will become a master coder for the Windows platform.
Hehe.
I have given several people their intro to programming over may years by passing on a game/programming learning exercise called CROBOTS.
It's a very small/simple pseudo C-programming environment designed to control ascii 'robots' in battle, allowing you to 'see' your results and program your robot to do better in the battle. Very simple interface (the robots are '1' to '4' moving around on the screen), but people get into 'seeing' their results immediately and can learn the basics of writing a program, modifying the samples to make them 'better', etc. easily.
It has worked to start people into learning programming in a fun way.
Google for it (several versions are available) or look at http://www.ioprogrammo.it/crobots/home.php
It's available for many environments (I started using it in MS/DOS over 10 years ago).
does that allow you to pass values to the next "iteration"?
HAND.
Fortran is only slightly more complicated than BASIC, and is actually used in the real world (in spite of it being pronounced dead on a regular basis).
Why not just setup a Linux partition and let her play with it? My wife and kids LOVE the games and enjoy just digging around finding out all the wonders of Linux. If you put SuSE on, the YaST2 makes management a snap, and you don't have to start off with teaching her to use vi for setting up the machine.
If you really love your ma, it's time to send her to programming language boot camp.
Up in the morning at the crack of 10 o'clock, web surfing and emails until lunch, then reprogramming your cell phone to play the old "Star Trek" game until mid afternoon. Then slop in a few lines of code in the IDE and go home.
And I wouldn't start with any kind of Basic or anything either. Why use a language called, after all, the Beginner's All-Purpose Symbolic Instruction code? Obviously that's not going to work.
After she learns Octal and Hex, you should start her on the only true programming lanugage: C. Preferably in one of the new GUI IDEs where everything has around 40-thousand lines of code linked in just to say "hello world." The first topic, of course, should be using multiple pointer indirection with function pointers. In Swahilli.
After a few days of that she won't bug you any more.
I was faced with a similar situation when my fourth and fifth grade children wanted to know what computer programming was all about. I found an adaptatoin of the original PC BASIC language (Liberty Basic) that runs in the windowns GUI environment. It is easy to learn and implements a wide variety of programming constructs (I/O, conditional statements, looping, math, graphics, etc.). I loaded it on the family PC for the kids to play with. My son eventually wrote some of his own programs to generate solutions to the "The Traveling Salesman" problem for a grade school science project. See LibertyBasic
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 or Google for it (available for many environments). I first used in in MS/DOS over 10 years ago.
Then find out if she performs any other repetitive tasks and help her automate them.
Start her out with Cocoa & ObjectiveC or AppleScript Studio. She can start designing visually in interface builder and then look at the generated code and add functionality or use AppleScript Studio to develop it into a full application.
This is both really simple, way more intuitive than VB, and you (she) get(s) instant reward: something that works, (can be) visually appealing, and even usefull, like an address-database or something for a club or collection or similar...
1. Teach her Fortran or Cobol
2. Enjoy lots of free pizza and pop on mom
3. Have access to killer hardware when...
4. Get her a job repairing old mainframes
5. Profit when she thanks you for her first pay cheque
flinging poop since 1969
and I won't consider it "childish" just because it has some obvious "abstractions" like the good old turtle. On the other hand, logo is not really up-to-date compared to what's really going on (objects and all this nifty stuff)...
That is your mistake right there. Don't have her reading a book. Sit her at the Read-Eval-Print-Loop and have her type at it.
(+ 2 2) => 4
(sort "elbow" (function char< )) => "below"
You are there to give personal tuition, so she doesn't need to use a book.(You may need to!)
The other thing you need to do is wear boxing gloves. Then you have to tell her which keys to press, which means that she automatically stops you going too fast for her by stopping typing when she gets confused.
Revolution 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.
It's a fascinating handdrawn design app, that might be appealing to non-programmers.
Here it is
http://pcblues.com - Digits and Wood
Do PHP!
Especially if your mom's truly terrified -- she will make an excellent mark^H^H^H^Hvictim^H^H^H^H^H^Hstudent.
;-)
Oh...wait, computer programming...how about Whitespace?
What about Inform? Its easy, fun, relatively quick to learn, and it definitely prepares you to wrap your head around loops, classes, and objects. Since everyone is being super picky about HTML not being a programming language, I figured I would throw this out there. if your mom likes reading, or gaming for that matter, you could entice her into the nerdy world of Infocom.
(Check out this cool little ROT13 program written in INTERCAL)
Or maybe humans do think in procedural. Not too often you see a recipie for toast written:
Very fun and usefull, most anything a beginner needs, 1/10 the complexity of VB. "free, cross-platform, semi-Object-oriented BASIC... Console, GUI and CGI applications..." http://en.wikipedia.org/wiki/RapidQ
I think the most important factor is the way to teach it and not the programming language. I myself am already a programmer and I just failed to read the Introduction of the HTDP. This thing look atrociously boring.
All my life I have teach all sort of things like sports, how to maintain computers and many other stuff to friends, family and for work.
Good teachers need to adapt to their student and find the particular way that work best for someone. Taking the contend of a book and trying to force it directly in the head of your mother is not the best solution.
Go for a project oriented method. Ask her questions and try to find WITH HER a not to difficult project that she would like to do. Then choose the programming language the most appropriated and divide the whole project in smaller goals. Teach her goal by goal until you can assemble the whole project with her.
Star with something easy and remember the most important word in all the process is MOTIVATION. People are willing to learn anything if they have the motivation to do it.
Yahh, hiii haaaaa! -Major Kong, from Dr. Strangelove
bc is pretty easy to use, available under UNIX straightforwardly. Get cygwin if you're on windows. It has "for" loops, "if/then" and functions. Most people would understand and appreciate some arithmetic exercises. They'd run in to syntax errors along the way. There's hardly any overhead (include this or that, compile / link, input / output windows here or there..) and no damage to be done.
http://stephan.sugarmotor.org
Why not put programming on hold, and show her the basic of the commandline? Show her how to navigate the filesystem, how piping works, how useful something like "grep" is (and regexes in general), which we all take for granted.
:-).
Then she can graduate to basic shell scripting. Show her how to automate tasks with crond. Show her how to handle complexity on a practical, useful level.
Then let her run free on the system. If she isn't hacking away at Perl scripts in a few months, and fighting her way through K&R soon thereafter, well she's not your mom anymore
Don't make learning any more complex then it needs to be.
.. If she gets the hang of that, then try something like FORTH or Pascal, or BASIC. This will teach fundamental programming skills.
Start with flowcharting/pseudo coding to mold the 'mindset'
Only after that would i even consider something that is graphical.
---- Booth was a patriot ----
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.
http://www.alice.org/
It's visual, has drag and drop, and supports OOP methods.
I had my kids use it for a couple of weeks in a high school programming class and they said it was their favorite language by far.
You could get her started programming on a spreadsheet. It's a nice visual interface that lets you see the results of different steps of your program in cells, and she can actually make use of it to manage her finances.
THE NERD IS THE COMPUTER.
It's easy, it won't scare her, and she'll be able to create useful things. Once she is able to overcome her fears she can move on to VBA, and then on to VB.
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
Modern spreadsheet applications are a full programming language. It's a nice interface to learn about programming, because you can see the results of different steps of your program in spreadsheet cells. Furthermore, she can make use of it right away to manage her finances.
THE NERD IS THE COMPUTER.
Forget Logo, get Start Logo. It was described in the book: Turtles, Termites, and Traffic Jams. With it you can run simulations that show emergent behavior in hundreds of little turtles based on the application of rules. It is fun for novices and experienced programmers. If you haven't seen it before you'll both have something fun to explore together.
I have a friend who came within an ace of total mental collapse when programming a complex data-base application with a web front end using VB. I would not wish that on my worst enemy, let alone my own Mother.
Ruby ( but the site is down in expectation of the
SELECT CHILD AS 'My Favorite Son' FROM FAMILY WHERE SEX='Male' AND YOB BETWEEN 1975 AND 1985; -- Put the right years in.
Perhaps start of with a recipe database using Ruby and PostgreSQL
Alternatively she could always learn to design knitting patterns -- It's virtually the same act anyway!
rapid-Q BASIC, Liberty BASIC, XBASIC all can handle windows and graphics. Rapid-Q supposedly integrates well with MySQL.
Supposedly SmallBasic allows all this and even portability of code between the Windows and Linux OS's.
On a programming language, point her over to sourceforge to d/l an interesting program written in said language. Explain the whole FOSS concept to her, and get her to look at the code to look for style elements etc.
fuck you, you fucking fuck.
Why do you lie? If you're going to quote something that changes regularly, at least have the courtesy to quote the current version. Better yet, look at the current version (4.4.7 as of 31 May 2004) before mouthing off.
"suitable for adults"? how old are you? aren't most people who code for a living also old enough to vote? when do people reach actual adulthood these days anyway?
25 - it's the new 18.
I guess what isn't clear in the post is what kind of application might she want to code? That's a potential major influence as to what language. That said, I think Rexx is an excellent, easy to learn and use, yet powerful language that a beginner might try to see if they have an interest in coding. It's available on a plethora of platforms and is quite portable.
"The bigger the lie, the more they believe." - Det. Bunk
Teach her DOS.
Teach her what her file system looks like.
Teach her how so user her "Start" menu. (How quickly an analogy gets lost... none of the [l]users I know look past their desktops for programs; they never start with "Start".)
Teach her what the difference between a "shortcut" and an actual program/file is.
Teach her about computer security, at least to the extent that if a website ever wants to run programs on her computer, click the "No" button.
There are so many better things to teach her that will allow her to get more out of this tool than showing her how to write "Hello World" in twenty different languages.
1. Have her read ESR's How to Become a Hacker.
2. After that, start her on Learning to Program.
3. From there you can cover a little review material as well as some more advanced topics in Dive Into Python.
I made the mistake of leaving "Learning Perl" and "Learn to Program in C in 21 Days" lying around the house. My wife read them and understood them for the most part, but she's not exactly whipping out kernel modules. The track mentioned above is definitely better for, as you put it, a "terrified adult".
-- Stu
/. ID under 2,000. I feel old now.
How about bash? It is a programming language, and most of us use it every day. It also shows you why command lines don't actually suck that bad.
It's probably not the easiest thing, no programing language is, but there is not all that much weird logic stuff (you can skip some of it) and you can also apply what you learn immediately to speed up your day-to-day stuff.
But you haven't installed Linux for her yet have you?
I recommend that you install Linux or some BSD on her computer and then teach her how to program shell scripts in bash.
We don't really know what the author's mom is interested in specifically. Obviously she saw some potential in personal computing that she was missing out on, but that doesn't necessarily mean that programming is the only outlet for her creative potential, and certainly not the most appropriate one.
There are myriad possibilities depending on her interests: landscape/garden planning, digital painting, music composition, interactive learning, personal research, personal finance management, forum discussions, or even multi-player Yahoo! Games.
Some of these are creative outlets while others are means of personal enrichment or empowerment. Whichever category applies, the fact that she was keenly interested in exploring new possibilities in computing suggests that she has the potential to do something serious and exciting with her computer. I see no reason why that engagement has to involve high-level programming.
It would be better to see what she likes to do normally, and then see if you can use a computer to improve on that.
For the amount of time I spend on my computer, I've done very little programing. The little bit of scripting I do now is solely for my website.
Democrats or Republicans. They are both taking us to the same place and they are not afraid of us anymore.
His mother "expressed an interest in learning what I was doing". Behold, one of the signs of the apocalypse!
I'm actually serious- as easy as BASIC to learn and you can actually do powerful stuff once you know your way around.
"Physics is to math as sex is to masturbation." -R. Feynman
I'd recommend Activewords (a Macro?? language for Windows -- it's the easiest to learn), Lazslo (an easy Flash tag based language), or Ruby (an easy object-oriented scripting language)
I think she'll find the Java language is probably the most in-between of all. It's relatively clean with very few machine-specific details and has a nice structure. The other thing to consider is teaching her data-flow diagrams and an overview of objects...
My first language (other than a minimal amount of HTML) was TrueBASIC - it's really easy to learn, mainly because it involves fairly normal syntax and does not have any odd line terminators. Yes, it has only a CLI, although anyone who was inclined could fake a GUIoid object if they so desired. It is also traditionally very geeky... it is also fun. just my 2
RapidQ really is a good, easy language :).
or .bat files. A lot can be done, especially the obvious stuff. A good way to see if she catches on to some of the concepts common to all prog languages. After all she only needs what she thinks she needs, anything more becomes hobby-like until she really understands.
intercal/lisp... if she used to beat you, that is
For young people, learning to program using a programming language comes very natural, but to an adult it's very different.
Start by teaching things like "what's an algorithm", "how computer works". "What are the basic structures (loops, conditionals)". If she gets the grasp of that, I think she could manage any basic (not necesarilly BASIC) language.
In keeping with the fine tradition of "...back in my day we had to walk to school through 2 feet of snow uphill both ways", you should introduce her to assembly. If your mother has tormented you in the past go right to machine language (in order to even the score a little -- "Son, why do I have to mess with these LEA and JNE instructions? Well Mom, remember when you used to make me eat my brocolli?").
BTW, I hear that there is a High-Level Assembler (HLASM) if you decide to take pity on her.
Qbasic to get the basic concepts down...and do it in a way that is useful to her. Many TI calculators use a BASIC-like language. Once that bores her to death, move to something like javascript and HTML (also useful and easy to see real results in a short time). If she's still interested at that point, Java or C#, or if she liked the calculator stuff, try VB, or something like that would be a logical step, or perhaps jump right into C++.
Unpleasantries.
For the first example you give, as it happens, it's possible to determine automatically a partial order in which to execute the statements: you set up a graph saying which statements depend on the results of which others, and you just evaluate them in some order that satisfies this. Sounds like a task for Prolog. Well, I'm kidding, of course, but it's interesting that the way your beginners are thinking is accommodated by logic programming.
Are you adequate?
Start with the basics... command line, runs on an 8088 with 64K RAM, BASIC. BASIC is still a very powerful language and is also very easy to master. (Visual Basic seems to have little to do with BASIC)
... and in the DRM, bind them.
Teach her to create simple Macros in Word or Excel, or some other program that she uses daily. As a bonus she will be able to use her mad skillz at work too.
I started "programming" by creating simple macros for WordPefect 5.1.
Have her learn something that she will be able to use right away and her interest will be peaked.
Euphoria Could be right up your alley, and it runs on Linux, FreeBSD, DOS and Windows. It's powerful, and simple.
Don't eat me
I think HTML is great, that's where I started and now I know Javascript, CSS, VBscript, and VB.NET. It's a great primer to programming. This summer I'm teaching myself Assembly too...so there you go!
Kamran A
If you just type enough, people won't be bothered to read it, and mod you up based on the assumption that something so long must be "insightful". Man, you need to lay off the crack pipe, people are saying html isn't a programming language because html isn't a programming language. Why do you take this as such a personal affront? It seems more like you are the one so concerned about not being a "real programmer", and trying to paint anyone who is a better programmer than you as arrogant.
Karel the robot is good.. 5 commands.. good introuductory to programming
Seriously. Javascript is a fairly conventional looking language that has a really clean object model. Oh, there are some horrible compatibility problems between different browsers, but for teaching you can pretty much ignore those... AND the student will be able to produce something that's actually neat and interesting to other people even if they're not programmers.
It's useful and easy to get started on, and will help to clarify how a computer actually works. It has a fair assortment of basic programming features.
Use a fairly comprehensible language like eg: python. Then teach not the whole language, but a useful subset. print(), for, if, raw_input() and range() are enough to get some simple starter programs going.
How deluded can you be sonny? Do you really think that kids have a corner on brain power? Get over yourself. Many of the people you call "adults" were were writing the code that keeps our economy afloat before you were a twinkle in your momma's eye.
The topic should read more along the lines of "Introducing a neophyte to programming." Age has nothing to do with it. And no, this is not a "old dogs, new tricks" thing. Some people just don't think logically enough to "get it" regardless of age.
Java is one of the best languages you can learn programming on right now. It's useful, there are good tools available, and there are lots of books and tutorials.
-All that is gold does not glitter - Tolkien
www.ra
That thinks Perl or PHP would be a good choice? As scripting languages, you don't have to worry about compile or link errors, but they're also relatively powerful. They can start simple, and, I think, they're pretty intuitive languages. Of course, if you choose the PHP route, you might want to start them off with HTML as was suggested. Ryan
http://smarteiffel.loria.fr/n ks.org/oo_eiffel.html
http://www.cetus-li
Syntactically similar to Pascal, very easy to read and has good attribute feature seperation.
This is obviously slashdot, with most of the replies being programming-oriented and arguing whether or not HTML is a programming language....
However, [IMHO] , the best things for her to do are ones that transcend the 'typical' computer activities.
Instead of choosing a computer-focused hobby, suggest to her to impliment a non-pc based hobby/activity/job onto the computer or internet.
Examples include converting her recipes into a nice database and then print them out and organize them rolodex-style; help her contribute to a computer volunteering foundation, or just volunteer in general, where she could share her skills with others close to her age; convert her old vinyl records & cassettes into mp3/ogg and then burn them onto cd's.
Those are just a few of the ideas that popped into my head...The key point is to integrate an already-existing activity that she's passionate about with the computer, and not vice versa.
Pascal is a great learning language, especially for procedural programming. It sucks for OOP, but who cares? This is your mom.
It's got all you need - libraries (units), pointers, easy syntax (Begin, End, etc). Compilers are free, and it translates well into C.
I don't understand why people are suggesting languages (Java) where you need alot of background and overhead to do simple things - you may like the language but that doesn't make it good for beginngers who are not planning to be fulltime OO programmers.
What are the qualities you want in a language for a novice to start with:
forgiving - perl is very forgiving in terms of syntax and goes as far as trying to guess your intentions (and usually guess correctly), Python is more strict and the whitespace thing cause be puzzling for beginners.
big early "bang for the buck" - so you don't want to have to have a bunch of declarations or helper classes, etc to do simple tasks.
natural language like - some languages go overboard on this. And yes perl _can_ be obfuscated but you are not required to write any program in the least number of characters/lines. perl can be as readable, if not more readable than other languages.
Nice environment - ActiveState has a great (albeit MS funded) perl environment for Windows.
What other qualities would be good for such a situation?
Smalltalk and esp. Ruby seem, nice, fairly easy and powerful ruby has excellent support for the Windows libraries and I wouldn't consider Squeak or Smalltalk too childish either. If someone has to learn an OO language I would rather have them learn the full power of OO by learning Smalltalk/Ruby rather than the hamstrung version of OO in Java.
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.
Three Squirrels
I would suggest she learn graphics + html/css and does some web page stuff. She could put up tips on womenly advice, or maybe a page about a non-computer hobby she likes. She can show it off to her family and friends. This way she can start out with the basics and move up to fancy stuff. If she gets really into it, she could always then learn one of the billions of web programming languages out there.
...and her growing passion for computers.
DEFINETLY PERSUE THIS TASK!
commenting the above.
me thinks, that html seems to be a great choice as the parent points out:
- it is great as an introduction to getting the "machine" to do what "you" want
-> this feeling of control encourages to learn more
- it will make them familiar looking at conventional (as in content) text, mixed with text expressing abstract ideas
-> any one familiar wit LaTeX has to view html as just anoter way of wordprocessing; though what it comes down to and is of interest for the poster is, that learning and using html is a great introduction, especially for those having difficulty with anything 'academic', combining regular text, their content, with controling text. controling in the sense, as it has some form of control over the display of the content by the browser [regarding html].
then there is not only html. once you start to delve into the subject, you will unavoidably be confronted with such things as css, php, javascript, etc. php will again be daughnting, and far to advanced. javascript though, can be hacked by any script kidy.
now we are not only looking at formating text. even if his mother chose css as her next step. she will start to discover how to gain even more power over the machine, as now first actual manipulations are possible. this ability also delivers a sense of capability, encouraging to tackle more difficult issues/tasks. as well as that it trains the brain in abstraction, the basic principals of coding (creating folders, organising files, all very basic stuff, but the UNDERSTANDING delivers far more insight into the actual functioning of a computer), and give a first impression of the linguistic capabilities a machine has.
teaching your parents can be a daunting task, that one want to organise in a way, to make the whole adventure as pleasent, easy, and least time consuming as possible.
with html you can let you mum play around. introduce her to a simple editor where she can easily switch from editor to browser view, and explain this concept to her (first look into the difference of code and application, both are text, but both text have different meanings; to US this concept is as obvious as that the sky is blue, just as proving the existence of a probability is trivial to a mathematician, anyone new to programing is confused, that there is text[code] and that there is text[actuall text displayed through code], as one can note in the way i have written this down, 2 them it is all just TEXT). then give her a simple, but not so trivial, example that she can play around with. give her a bunch of links where to find more information. and then let nature do its thing.
i have tought english to chinese kids, who didn't speak a word of it, while i don't know a word of chinese (exagerating, by then i had learnt how to say 'hello' = 'ni`hao'), i have troubleshoot the troubles of my grandfather and given him basic instructions an application usage via the phone to england, i have helped out most friends and any other family member, besides my job as a software and web deveopment consultant. my experience is: give them the fundementals, and then just be there while they play around. remember all those animal movies, how every animal learns while playing. hhhmmm, (not) sorry if i offend any believers, but we are animals. ergo, we learn through playing. while watching them, guide them. by that i mean, show them how they can gain more. in any game one can not only get stuck, but also go down paths, that lead no where. that is where your job as a teacher comes in: you are their guide. you mountain guide tells you about the pit falls, points out dangers and oportunities, great views, as well as the best way to the desired destination. guide your student (mother) into the computer park .
good luck, and hopefully also fun;)
The crux of the argument depends on whether or not programming involves, at heart, must involve developing an algorithm, or whether or not a simple set of declarations describing a desired result count.
In HTML, you describe a document with some understanding of how a browser will render it. In a traditional imperative or object oriented paradigm, you describe a set of operations to be performed on data. But either way, you're using a language to describe a desired outcome.
In fact, it's very easy to blur the paradigm by thinking of HTML as a set of instructions given to a browser.
Then there's functional languages -- or even further, logical languages like Prolog... where you essentially write down a set of definitions -- declarations about the problem space, and let the interpreter perform inferences that make an implicit solution (or solution set) explicit. If you're doing it in the spirit of Prolog, you don't focus on an algorithm -- you focus on describing the logic of the problem -- and it "renders" a solution from conditions. The first few times you do it, it tends to challenge your understanding of what a program actually is. Was there an algorithm described? Or did a solution just arise from describing the problems? Or (more accurately) was an algorithm simply evoked from an understanding of the interaction between the interpreter and declarations of the problem space?
HTML isn't that different. There's a set of primitives that are used to describe the problem space (the semantic structure and appearance of a document) given an understanding of how an interpreter (the browser) is going to render it. And while the browser/HTML doc abstraction doesn't suggest it when considered in their purest forms, an algorithm *is* still evoked from interaction between HTML code and a browser -- which is why there have existed various hacks to get your browser to do various interesting things, like tie up system resource infinitely (remember nested recursive frames, anyone?), blow up on encountering certain HTML constructions, and improperly execute certain file types without asking you the right questions. The difference is that the abstraction that HTML offers doesn't offer you any set of primitives for creating algorithms that can span the set of possible computations -- it isn't, as they say, Turing complete.
Tweet, tweet.
The How to Think Like a Computer Scientist series is very good for both Python and Java. They also have versions for Logo and C++.
Scheme is not a bad choice for learning programming and the Sussman book which is the intro CS/Engineering text is avaialble for free also.
All of the above have open source or free environments and if she learns the material, will have a very good chance of learning a trade and having it outsourced to India!
"I say we take off, nuke the site from orbit. It's the only way to be sure."
When I was learning the basics of computer science, they taught us to program in a language called TWIPS, the TWelve Instruction Programming System. TWIPS was similar to machine language, and its instructions were (I think) Move, Compare Equal, Compare Less Than, Jump, Conditional Jump, Add, Subtract, Multiply, Divide, Print, Stop, and something I don't remember. Everything that was really necessary to write a functional program.
You started with 100 memory units and had to write an entire program that did something apparently useful. All values and addresses were stored in character form, kind of like Cobol.
Programming in TwIPS it was like a puzzle. It was fun and interesting, and not overly complex. It taught many extremely valuable lessons, including how to think procedurally, and how to break a problem into adequately small chunks. It also very clearly helped my students to decide if programming was something that they might enjoy doing for a living.
I wrote a version of this for a class that I ran to teach some friends programming, but it has no real editing or debugging interface. You just created a 100 character long text file and handed it to the execution program, which gave you a printout of the steps it went through trying to execute it. It would be really cool if I could dig up an original copy of this, if nothing else than for reference, and maybe so I can teach my kids programming one of these days.
Wake up - the future is arriving faster than you think.
Scheme is a nice simple language that doesn't have too many complicate constructs, so it might be a nice way to get started. Still, I looked HtDP ("How to Design Programs"), and it doesn't seem well-suited for beginners.
I glanced at chapter 1, but let's look at chapter 2, where it actually starts getting into what programming is and what Scheme is. I'm going to use what my mom knows about math and programming as an example (since I've thought about teaching my mom programming). The first problem I see is in the first sentence in section 2.1. It mentions "classes of numbers". Even I don't quite know what it means by classes of numbers, and I have a BS in computer science. I have a good idea, but my mom, who hasn't "used math" (as she says) since high school in the early 1960s doesn't know what that means. To her, a number is a number. All numbers are just that. She doesn't know what a rational or a real number is. She doesn't care. Numbers might or might not have a decimal point, but who cares? Whether or not they do isn't important, because you can still add and subtract them and stuff. So already, my mom will be lost trying to understand what classes of numbers are and why this is important.
In the next sentence, they say that "#i1.4142135623731" is "an inexact representation of a real number". I don't see how my mom is going to be understanding that either. As far as she can see, that is a number except with some extraneous crud at the beginning ("#i"). She doesn't know what they mean by "a representation of a number". I do, but that's because I know about the data types computers use (including IEEE floating point, etc.). But my mom is just going to read over that and mentally note that just some text she doesn't understand, and it's probably time to move on, otherwise she'll never get anywhere.
So skip down 2 or 3 sentences and we get to some examples of expressions in scheme, including
"(+ 5 5)" and "(* 3 4)". Then we hear this: "All arithmetic expressions are parenthesized and mention the operation first". OK, great, but what the f--k is an expression? The text doesn't explain this anywhere. How is my mom supposed to know what expressions are when they are really an abstract idea that language designers and compiler writers use to group together syntactic constructs which are usually semantically free of side effects and which often involve operators? And while we're at it, what's an operator? That's another syntactic construct. If my mom is lucky, she's going to maybe GUESS that the plus sign is an operator. But the problem is, this text doesn't explain what an operator or an expression is. It just tells you that they are "parenthesized". Most people can probably figure out what that means, but they will have no mental framework to incorporate it into, so they won't understand the significance of it.
It's like that Far Side cartoon.
Except, in this case, it's more like this:
Bottom line is, in my mind, if they are going to try to explain prefix notation, then they need to start by explaining notation in general. They need to explain that people write "5 + 5" but that we could write it any other way as long as there are rules that everyone can understand. It's just like Spanish versus English. In English, adjectives come before nouns. We are all do OK this way, but if you wanted, you could put adjectives after nouns like they do in Spanish, and it'd be different, but it works just fine if you unde
I've had similar problems with jumping into programming. I have many years experience as a Sys Admin however I wanted to get more into the development. I've struggled with C and C++. Worked a little with pascal (years ago). Basic didn't sound all that glamorous. Someone recently said perhaps I should try Perl Programming. So I bought a few Oreilly books and forged ahead.
:-)
That was 6 months ago. After studying "Learning Perl 3rd Edition" and moving on to the next couple of books (Perl Programming, Cookbook and the references and modules), I'm getting up the courage to write my first module. The "Learning Perl" book was great for people with little to no experienc. I've noticed some stuff I recall from C/C++ coding as I wrote my Perl code. I get the feeling working in C/C++ will be easier in the future once I'm a little more experienced.
It's probably not for everyone but it works for me. This Oreilly book was excellent. Designed for a classroom and explains each step of your example code.
Where to go after this? There are modules that allow you to tap into services such as telnet, ftp, ssh and so on. Heck, Once I wrote a Perl Program that used a module to email me the results
It's a place to start.
Has Comcast disconnected your Internet account? Same here. You can read about it at http://comcastissue.blogspot.com
I suggest POVRAY (http://www.povray.org). It's free, it's less "childish" than LOGO but still shows great results! Of course, might be seen more as a scripting language than a real language but still. Don't let her start with the plain void; start a construct, let her finish the rest, opening her mind... You have to show her the door, she has to walk through it.
Squek is worth the try .. it's a "different" environment but great for kids, beginners and serious stuff alike. I helped my kids to write a simple "swimming fish" screensaver, took a few days after I played with it for 2 weeks or so. <a href="http://www.squeakland.org/">Squeak is here</a>
My mom, born in 1945, had never used a computer before 1999. I bought her one on a whim that year and the first time she used the mouse she laughed like a little kid. She was completely mystified by the whole thing, though, and I wasn't hopeful that she'd actually use it much. But I gave her a couple days of instruction and set her loose. She did master email and web surfing in a few weeks, and I thought that was as far as she'd go.
;)
What really triggered her learning was finding ebay. She got the bug and wanted to start selling off her old stuff. I would never have guessed it would happen, but a few months after buying her the computer I was teaching her the basics of HTML. She loved it and got pretty good at it for a casual user. Today she codes crypto functions in assembly. Okay, that last sentence is a lie, but the rest is true
I think the most important thing is having something enticing that they want to actually do with programming. For my mom this came about naturally from wanting to post fancy ads on ebay.
Programming as an abstract goal or with contrived toy projects isn't likely to stick or be very interesting. But trying to think of a real project with a real language for your mom would probably be difficult. Which is my point.
Another post mentioned HTML, which is a great idea. It's not a programming language, but it teaches people how to make something using a strict (heh) set of text instructions. This is a huge leap of understanding that will go a long way towards understanding the concept of programming. It's also great because it's easy to thing of an HTML project. Just about anyone would like to try their hand at making a web page.
Anyways, those are my somewhat disjoined thoughts. Gotta go!
Good luck!
The htdp looks like it's a bit on the dull/hard side for newbies (admiteddly, that's after only a few clicks around but then the OP said that they fell at an early hurdle). I was going to suggest the free book "How to think like a computer scientist - learning with python" but after picking it up off my shelf I realised that though it's easy to me, that doesn't mean it's easy for anyone.
And that's not because I think I'm brilliant it's because I'm used to thinking a certain way; reading words and knowing what context they fit into; understanding the concepts already; "getting" in-jokes like "foo" and "bar" and so on.
I think my approach would be to find some material that's going to be good for a person who doesn't have a lot of experience with the technical aspects or computers. It's not just about learning how to do for and while loops, it's about why they're necessary. Unfortunately, I don't have any examples of books that are good for what I am suggesting...
HTML seems like a good way to go, it's easy, introduces some concepts that transfer to programming and it produces results that are more interesting that "Hello, World!"
JavaScript MAY be a good direction after this but it depends on how much your mum wants to know (JS can lead to some bad habits - true of most languages though and if she's not going to do much beyond HTML + JS, then what's the problem with a few bad habits? ;). Is she going to start the next big, complicated project on SourceForge that makes you tea and toast whilst doing your accounts? If so, perhaps a language that isn't tied in with browser technology might be the way to go. If on the other hand, programming in C++, Java etc are not going to be of any use to her... why bother? Javascript ties in neatly with HTML so you can make web pages seem even "cooler." From what I've seen, some of the syntax looks tricky but then I've not learnt from the ground up.
You could substitute in PHP or Python for Javascript in the above paragraph I guess, but let's face it, they are all going to present their own problems.
It really is going to depend on how deeply she wants to get into it (which could be affected by how she is introduced to it etc etc). I'd say finding material that's going to treat her like a newbie is your best bet. Alternatively, give her Knuth's books and tell her to come back when she's taken it all in :)
How about WiseScript/SMS Installer. I believe that you can download SMS Installer free from the Microsoft web site, they (the Wise and MS versions) are basically the same program. All the commands available are listed on the left hand side, syntax errors are nearly impossible, no need to setup variables (altho you can), but IF/ELSE statements and while loops are available. Select your command from the list on the left hand side, a fill in pop up box appears for you to complete the details and you're done. Eg. select the "Delete file" command, box appears, type in name inc path of file to delete, check or uncheck the 2 options: 1. Include sub directories 2. Remove the directory containing the file. VERY EASY!! Even easier when you see it in action. You can compile to an exe and it is not limited to installations. It is actually quite flexible and when you get more advanced, you can learn about custom actions to add functionality eg. Calling DLL functions. I use it as a quick and easy way to get things done. It should give your mom confidence without jumping in at the deep end. At the same time, she should be able to achieve useful results. Cheers Chris
I have used a game called CROBOTS to get people started with programming. It is a simple subset of a C compiler with a small game. You program a simple robot to compete with others, and immediately see the results on the screen.
... then watching the results on the screen.
Comes with sample 'robots' making it easy to start by looking at them and trying to make them 'better'
I've used it to introduce people to programming for at least 10 years, and it's available for most platforms.
Either Gogle for it (lots of varients available), of look at http://www.ioprogrammo.it/crobots/home.php
I know the first kind of programming I ever did were simple .bat files on my dad's old windows 3.11 box.
http://www.realbasic.com
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. You can also easily find it on the Windows 95 disc.
REBOL www.rebol.com
Free small, cross platform, interpreted scripting language. Whole development setup less than 0.5MB with GUI and command line.
These one-liners give a good taste of what you can do really easily.
oneliners
Complete example code:
; Send an email to someone
send aperson@aserver.com "Hello from REBOL"
; grab an html page from somewhere and display it
print read http://www.google.com
; GUI with a button to send someone an email
view layout [ button "Send email" [ send aperson@aserver.com "Hello from REBOL/View" ] ]
; Run some code directly over the web
do ftp://aserver.adomain.com/script.r
Many built in data types to make it easier for new users
; eg
>> type? 3-may-2003
== date!
>> 3-may-2003 + 1
== 4-May-2003
>> type? $12.99
== money!
Very powerful and extensible language. Hints of basic, lisp, scheme.
Above all, great fun to code in.
I can't tell if this is a troll, but I should let readers know that the <table> tag is in fact not getting phased out any time soon. Tables are of course a big requirement for representing tabular data, even though a whole bunch of idiots use them for page layout.
However, the <a> tag probably is getting phased out.
And no, I'm not joking about that..
Karma: It's all a bunch of tree-huggin' hippy crap!
My Highschool teacher started us out with 2 semesters of Pascal, 1 of C++ only using linear methods. Finally we switched to Object Oriented with C++ and an Independent study of VB. College started with Scheme, then Java for the comp sci intro classes. Now all of our algorithms classes and such are taught in C-C++. Pascal/fortran were the industry standard for intro classes. I believe only 2 universities teach Lisp/scheme and have them centered on the intro curriculum. If you really want to get the just of programming Linear languages teach an excellent use of syntax, methods of style, and a clear approach to problem-solving in a way a computer understands what is being used. Object oriented is (To me) so abstract that it is difficult to understand exactly what is going on when I first looked at it. If you really want to program there are two things that drive a successful programmer. 1: a goal as to what you're going to do with your programming knowledge. 2: Acceptable steps to get there without taking on something that's too advanced. Pascal worked well enough for me because it's a great language to start out with easy to build number-crunching problems. As the end of our Pascal days was introduced we started learning graphic implementations for use on artillery-games or simple animations. Here's where we noticed what a pain a linear approach is to build these as our code lengths approached a thousand lines of code. imho, I would take a good look at what she likes to do on a computer, and then attempt to clone it. Solitaire is a good program to start off with. You really only need to know read/writes and randoms. Graphics aren't necessary in any language as you can do ascii printouts of location and update functions to show the board. As she becomes more confident with her skills continue to recreate the Same game making it more and more user-friendly. This step allows her to change languages, approaches, and designs so that she can begin to understand the numerous variety of ways programming can solve the same problem. Sorry if this is reduntant to other posts, but it won't work unless you can create interest in something you're going to spend hours upon hours doing.
-Alex
Your response is head and shoulders above what I've read so far.
Find an itch to scratch, then look for the toolset.
gewg_
So, HTML is a great possibility... Just think, if she learned JavaScript or PHP (et al), she would (for the most part) need to know some HTML to get at least the very basic output formatting... Plus, the other definite positive to HTML is that it is almost instantly deployable (and if you get PHP or what-have-you, it requires no compilation, just a simple Apache/PHP setup on the computer which is fairly easy to set up). However, there are other, more creative, less boring for a grandma, ways to learn programming or at least how to instruct a computer. Take a look at simple game creators such as the Official Hamster Republic RPG Creation Engine (http://www.hamsterrepublic.com/). It's a simple DOS-based application that requires very little programming to get some kind of action, and really allows for the creator to develop a story with some complexity behind it (or it can be as simple as she wants it to be). If you don't like that idea, there's always Basic or even Perl or Command-Line PHP (or Python, Ruby, etc etc etc). Good luck, I hope to hear how this turns out! Haha. Matt
"Support Bacteria - Its the only culture some people have" - Circa 1985
BASIC is a nice simple programming language to learn, I'm sure you can recover a old qbasic program somewhere.
Its what I started on, but then again, I'm just a VB Guru.
- No, I am not your imagination
It's a quick and easy fix for someone who wants to "make their computer do something".
Only in the sense that word processing is.
It also tends to push the person to learn Javascript...
Trying to learn Javascript as your first programming language would turn off a lot of people. We only think it makes sense because we're geeks, and generally OOP geeks at that. For someone who isn't quite sure what a variable is, let alone what an object is, Javascript would be a nightmare.
I'd suggest Perl. Yes, really complicated Perl code can get so hairy that fur grows on your screen, but in the main it's a clear, straightforward language. It's also a very forgiving language. It will try its hardest to do what it thinks you want, unlike, say, C++, which seems to delight in shrieking "You didn't say 'mother, may I'!!!"
Despite those people who claim it turns people away from from programming in the One True Way, BASIC also has some notable advantages. One of those is the availability, via the used book dealers, of this book and its sequels.
Come to think of it, I could have a lot of fun replicating some of those games in Perl.
Although I do most of my programmign in Python, I have had the best success in teaching people Ruby. IMO, Ruby is a lot cleaner and easier for people to learn. There is also a book available for free online at http://www.rubycentral.com that will help with the basics.
I see suggestions for virtually every programming language under the sun, and I don't get it. If you want to teach someone how to do something computer programmy, find a task they are interested in accomplishing that requires programming skills. Then help them learn how to accomplish this task. Don't put the technology in front of the purpose for the technology.
The question then is, what would your mom want to accomplish? A lot of tech people I know like to make their own web pages that they read kind of like a morning paper. Mine had news blurbs, comics, movie times, and links to a few other sites. This is the kind of thing that might be achievable with a little html and perl. Then again that's two technologies already and you'd also need regex/lwp/scheduling. It might be a little tough for a first venture into programming.
Another possibility you may want to consider is that your mother isn't really interested in learning a programming language, she's just interested in getting a better understanding of something her son is interested in.
HTML is programming. It is the coding language to control screen presentation.
Does it do useful work? Yes
Is it simple to understand? Yes
Is it hard to get right? Yes
Does it control disk I/O? No
It is this last part makes most think of it *NOT* as a programming language.
Best part, it is free to use on about every machine.
Then again most do not understand that printf function in used in C is a language unto itself. It is not an extention of C, it is function that alot use with C.
Programming isn't like learning how to knit a blanket. You're either adept to programming or your not. I'm tired of hearing from people who think .. hey I'm smart, I could do that. No, you can't. It takes a special kind of person and way of thinking to be a good programmer. I like to compare it to singing. Sure, I could take vocal classes to train me to sing, but will anyone ever pay to hear me sing, most definately not.
I get what you are going at, but along another different but related line, the problem may not be the language used but instead the teaching method being employed.
I've found that most people with even a small interest in programming (yes I've found some to where this won't apply) will understand how if you find the right approach to explaining it. The key is to start small and keep trying new ways to explain stuff until it sticks. The approach that worked well for me way back in the day was the BASIC programming book included with the TRS-80 color computer. If I were to attempt to teach someone to program I'd use that book as a model in the language of my choice.
Important features of a language to teach a beginner are:
If you have a language that has extra features than those listed above I'd highly recommend "hiding" them until the learner has mastered what I have shown. Once they are at that point of mastry it shouldn't be too hard (though I have been surprised) to introduce concepts such as modularity by using functions and procedures, more complex branching and looping and a whole host of other things.
"You can now flame me, I am full of love,"
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.
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.
I agree the the oreilly books are good - Python in a nutshell is wicked for learning the language if you can program, so will probably be great for someone teaching it. for the beginner howerver i think you might find Mark Pilgrim's free book 'Dive Into Python' (http://diveintopython.org/) good - it solves a bunch of interesting problems, and does it in a hands on 'how to program suchand such ' rather trying to be as complete and scientific all at once.
Karel is an introduction to c++. Basically, the object is a robot and you move him around and make him do stuff with beepers. Very simple programming.
The most complex thing I ever did was make a calculator. Since Karel doesn't have any arithmetic or variables (per se), it was a challenge.
Here are some fundamentals that describe the world a bit more.
For all the talk of QBasic here, there is already a version of Basic that is powerful, easy to learn and has a killer IDE. It's VBA and the chances are great that his Mom already has it, seeing how it's embedded into all the Microsoft Office apps starting with version 97. When teaching someone to program (and I used to do it professionally before I started coding for banks), I always found it helpful for them to see results in the environment they're comfortable with and use everyday. Everyone knows what Word looks like, and it's easy to write one line programs that actually manipulate visible objects on the screen. Once a person is comfortable with that, it's easy to start teaching why loops are important. From there it's a short step to Sub's and Functions, which begets classes and so on...
:-)
VBA allows for nearly all of the advanced features of Visual Basic, including forms, classes, file manipulation, use of COM objects, etc... The IDE allows for easy browsing of object libraries, so new users don't have to memorize long strings of object properties. The help system is extensive and the user base (www.deja.com) is phenomenal.
I find VBA to be one of the most underappreciated languages even though it is at the core of manipulating the most widely used desktop software in the world. The banks I have worked for trust it with billion dollar operations for a reason. Not only does it lend itself to RAD development, but it's simple enough to learn that the bankers and traders who use the applications won't be intimidated by it. Most of the apps I've rolled out have seen tremendous improvements by amateur programmers hungry to pore over the VBA code. While they might not be able to optimize my tree search algorithm, they can certainly pick up on most of the basics. Basics...hmmm, that sounds like a good name for a language.
Sorry, had to suggest it - everything else has been!-))
Is not about languages dude is about tutorials. Here is a link for a tutorial geared towards moms:
python for moms
It has an english like syntax and you can make your scriptable apps to useful stuff. Con's: can be very frustrating Pros : can be very rewarding Plenty of sample code, its free with every mac
Your mom isn't trying to learn programming, it's just her way of trying to identify with some control over the computer. She's asking you to help her understand the computer, that's all. What she really needs is for you to sit with her for a couple hours and show her fun stuff like web browsing, email, IM, etc.
If she's interested in programming as an intellectual challenge, I think PLT-Scheme's DrScheme is your tool of choice. I've never used HtDP, but just following the built-in tutorials that come with DrScheme is very instructive. This is especially true if you are willing to set aside the goal of building some particular program. When I get bored, I will occasionally do a problem or two from the DrScheme tutorial. It's much more fun than dumb desktop games like Solitare. Personally, I think of it more as solving puzzles than as "coding." (It's also a Debian package, so life is good.)
If she wants something to tinker with, I suggest getting a little colo box (a UML box isn't too expensive) and hacking around a little with apache, perl, python, shell and web-ish stuff. It's not always strictly programming, but it's a lot of fun and results can be seen without a huge amount of time/knowledge/effort, and she'll have something tangible for her efforts. Well, as tangible as anything in computing can be, anyway.
In spite of the suggestions and all the tests that I have made, I have not cavato a spider from the hole.
My own introduction to programming was through Macromedia Flash. I learnt about HTML later (and thence JavaScript, Perl, PHP, Java, C, C++ ..)
I think this was the ideal introduction because I was able to do animations immediately (instant gratification), just by dragging things around, using non-code skills. As time went on, I learnt to add little bits of code to buttons and so on. Then I realised I could make things happen just with code. As time went on I outgrew it and moved on to greater things. But without the gentle learning curve, I don't think I could have got a handle on why it would be a good thing to know how to write code, and so I'd never have bothered ('Hello world', so what, I could say that myself) .. and coding whole apps seemed way too remote. Flash provided a great first step.
P.S.: I'm sure I'll get flamed for this. But who gives a monkeys.
[ UNSIGNED NOT NULL ]
Hey, get her to learn Brainfuck! It's so simple! It's Turing with numbers! Easy, only eight commands to learn, and you're done!
BrainFu*k of course! It's the simplest language around. Here, I'll teach it to ya. Make an array. It's like a bunch of cups. You have a pointer. it's like a funnel. You can increment or decrement the location of the pointer (move the funnel a cup to the left or a cup to the right) You can increment or decrement the value of a given array location (add or subtract a marble to the cup with the funnel.) You can do a "while" loop. It works like this. You say, While there is more than one marble in this cup, I'll do the following steps, then go back to this step and check again. You can get input from a user (add a given number of marbles to the cup.) You can output to the user. (count the marbles. 1=a, 2=b, etc, 27=0, 28=1, etc (actually ASCII of course, but that makes it easier.) Increments the location of the funnel. + Adds a marble. - removes a marble. , Gets input. . Gives output. [ Starts the above mentioned While loop. ] tells where to loop back from. there. Turing complete programming language, and only eight operators. Of course, getting it to do anything other than a simple hello world, basic math, etc CAN be a tad trying at times, but it's easy to learn!
Not a sentence!
teach her photoshop instead.
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
It's just that most assembly programmers are bent on keeping things difficult for some reason.
A good conversation to have with your mother would be to ask her what she would be interested in writing a program to do.
Once you know the answer to this question, that will guide your choice of programming languages/environments to recommend to her.
Right you are; I forgot to include the comefrom construct and its equivalents in the vice-versa.
Let us split this humble-pie, and I'll scurry out of view before this spirals any further from the topic.
I wouldn't recommend 386 assembly (too complicated to start with), but she might take a look at DroidBattles.
it's a game dedicated to programming.
You use a simple assembly variant to program a droid's hardware in order to obliterate your opponents in an arena.
It's easy to learn, it comes with tons of documentation and the examples are very clear
If your mum is able to program a droid, i386 assembly shouldn't be too hard to learn for her.
r.
Teach her e few unix/linux commands and then teach her to use pipes and other fundamental shell tricks. That's 'programming' om a high level where she will be able to build something useful in short time.
Have you considered Pascal style languages, like Ada?
They're good for teaching, and once she has the hang of say, Ada, it would be easier to move on to a more complicated language.
I would avoid trying to start someone off on an object oriented language.
Have you checked out the Non-programmer's Tutorial for Python?
I'm currently having success teaching my wife how to program with it.
The reason to start with html is that it gets people involved in a development cycle without putting something hard in front of them first.
There are patterns and workflow tricks that you learn that really make the difference no matter what you code in. You learn the way of going about things, get some research skills and teach yourself to program. How many people feel that's an accurate description of how they got into it?
HTML has a fast turnover time for that cycle (people see their results real quick) and leads to more advanced things. Javascript is object oriented and it's syntax is like c. Then they work their way into PHP and PERL.
HTML is an interface thingy. Learning how to do it involves the use of a text editor and QA. Over and over again. Then there are bits you can pursue that involve logic and flow control.
The real problem here is motivation. HTML is an easy baby step that can lead to some more advanced things. A little motivation goes a long way.
>She asked me what I do on my computer and I told her that I was teaching myself programming in Scheme.
So you lie to her and tell her "programming" is how you spend your time (have never heard of browsing porn referred to that way) and we have to suffer through helping your alibi?
I went to university in the eighties to learn comp sci having played wth basic for a number of years before hand. It took me a bit of time to grok procedural programming over the years of my degree program e went from pascal to prolog and throughout the whole thing the best lessons came from knowing the math of logic.
Seriously, if you want to teach your mum (sorry, mom) to program start by teaching her the basics of logic. From there you can use any language, java, javascript, scheme, haskel to demonstrate the specific implementation details until she gets the bug and picks a project to run with.
"The first thing to do when you find yourself in a hole is stop digging."
I'd go for a graphical programming language like PD or jMax . While mainly aimed at musical applications, you can do a lot of generic stuff or graphical stuff as well, and the whole concept of interconnecting "little machines" with "wires" is easy to learn.
I think she could learn programming with Python.
Instant Hacking : Learn how to program with Python
This is an excellent article which explains the basics of programming, with an analogy between a program and a recipe. It is very well written and progressive to teach the different concepts of programming (what is programming, variables, loops and so on).
And Python doesn't seem to be "too complicated" at all to learn programming... Its syntax is the simplest I know, and if you don't do "complex" things it is very easy to understand, even for a total beginner.
Only 8 instructions to learn, fully Turing-complete, implementations which run on almost anything, and a name sure to get your mouth washed out with soap just for mentioning it.
Programming means, in whatever sense you turn it: handling ( an implementation of ) logic. And logic is math. Logic is also a domain of philosophy. So start with teaching basic math - set & group theory + logic - and Aristotle's philosophy to your mum. If she survives that, she can survive assembly, Logo, VB, Java. IF she can't, she won't.
Religous speak to God. Insane are spoken to by God. When all shut up, one can finally hear Shostakovich in peace
Mehe.
Please limit your use of the internet in general to ninety(90) minutes per every seven(7) days. This time is not cumulative.
RTPMatt, it's time to go...
As far as learning to program :
:
I would very stongly avoid the web side of the programming world. It is way too full of oddities which will not aid in teaching programming skills. "Which browser" is a difficult first question to ask for most web programmers to start out with, and everyone know they still miss that one.
Perl is a good area to learn a powerful skill that would be beneficial to move forward to the next language / script. Hey, if a script kiddie can bring an internet site down... mom could too.
For the bold mom
Lisp - get her to make self learning program to WIN that solitaire game, make a mega EQ bot - RAM / HD space is cheap now cheep.
Once upon a time, a soon to be mommy and daddy loved each other very much (the lust was strong as well as the drinks)
Python is an ideal language for teaching people about programming, it has very clear structures, and even the OO support is simple to grasp. The availability of a python language CLI is a huge bonus.
;-) ). Java might be much harder to learn than Python, but the graphics APIs (and especially the ability to throw out a quick applet) might make it the choice of a current generation.
:-)
One disadvantage of Python maybe is that it doesn't have a nice graphical API. Using computer graphics while learning to programme helps a lot (and it's addictive
Finally maybe you might be able to get hold of an Acorn machine. Be it an Archimedes or a RISC PC, these machines are ideal for teaching (it's a major design goal of these machines). The manuals are well known for their tidyness and readability, and you could even learn everything there is to know about programming straight from the full set of manuals (though some teaching is always handy).
The OS has a built in BASIC interpreter which supports structured programming. There's a CLI available for it, naturally.
There's interesting ways to teach people about structure when you also have GOTO available, but I'll leave that as an excersize to the reader.
Having a CLI available in the langauge of your choice is a great boon. Writing statements at a command prompt is a much faster cycle than edit-compile-run. (An alternate language that supports a cli is scheme)
Yea, show her that "popular" internet game Empire, I mean the text networked version, not the flashy stuff that you kids know .. heck even C&C is 3D now .. . The text interface to Empire is so annoying that your Mom simply will have to learn programming and write her own client .. probably in Python and Tk. ;-)
I'm still trying to figure out what people mean by 'social skills' here.
It's a fantastic way to get instant results (HTML) then when she is good at that, throw in some php and she can access database and whatnot, do loops, all the jazz. REALLY good way to get people into programming. Add the ability to show everyone her work and she'll be hooked ;)
This book teaches a lot about logic, patterns, complex systems and (as a side effect) the basic structures of programming (sequence, iteration and choice) - and a lot of other fascinating things. If she reads this book and finds it interesting she has a chance of learning how to program. Otherwise, I'd suggest that she picks up other pastimes that will more easily hold her interest
My opinion? See above.
You're missing the point. She wants to do something 'clever' with her computer but she's never going to be a hardcore 'C' geek, so you need something that is fun, gives fast results and looks good.
If she's got any hint of design skills at all go for Flash. Hell you might even get something 'commercial' out of it - get here to design a flash game that hooks in 'moms' and you have a seriously sellable product!
Did you just call Mindstorms "childish"? Ohh... you and i are gonna' have words, mate! :-)
i actually got paid for a week to reconstruct a lego clock model without instructions. then another few weeks playing with software for it. it was good times.
i speak for myself and those who like what i say.
I see no stripped whitespace.
Qbasic is pretty simple, even my sister the technological disaster sould at least read some of what I was trying to do in that so there's hope.
Good programmers drink beer to relieve job stress.
Great programmers drink hard liquor and work best hungover.
Something nice and simple like a modern pascal or Delphi could be a good introduction. The syntax is clean and readable and you have nice things like array bounds checking. You can get Free pascal compilers for *nix and I think you can do Delphi on Linux in the form of Kylix. Modern Pascals have object extensions, so once you've mastered the basics you can start learning about encapsulation, polymorphism, inheritance etc. It should be a relatively easy jump from there to Java or Python or something. I recommend keeping as far clear of scripting languages like PERL for as long as possible until the student has learned good practices. PERL is the 1990's equivalent of BASIC.
Stick Men
Just teach her APL, and she'll have learned a lesson for life. :)
quidquid latine dictum sit altum videtur.
One of the best intros to programming is BASIC. Not the visual kind but the stuff one use to get in most introductory classes. There you learn the early processes quickl. Let,goto and other commands introduce one to the concepts of programming. HTML is a good introduction but the actual programming concepts are almost automatic in Basic.
Beginning programmers took quickly to Perl because "it allows you to express yourself naturally." For instance, the automatic conversion between string and numeric types is what non-programmers expect:
the string "3" doesn't mean 51; it means 3. And if you add "4" to it, you expect to get "7" back.
In this article you'll find an interview with Simon Cozens about this very issue. There are experiences about theaching perl as a first language that will surprise you.
Cozens firmly believes that Perl should be a first programming language. "Oh, absolutely! It's ideal because it's a real-world language, unlike one designed specifically for teaching, such as BASIC (Visual or otherwise). It's a high-level language that deals naturally with natural concepts like strings and lines of text, unlike something like C; and it allows easy data and text manipulation without a tortuous syntax, unlike something like Python or Tcl. In fact, I don't know if there's a better first programming language."
Sorry to ask this question that way, but even the first page of that book you link to gives me the creeps. And I make a living of writing Software.
How did you get the Idea that a book like that would bring your Mom closer to what computers are all about???
Show her someting PRATICAL! Such as how she can sort the adresses of her friends by name or how she can automatically rearange knitting maps with self made algorythims. Use "O"s "X"es and other characters to resemble different knots.
In case you've forgotten: Computers emulate primitive aspects of human thinking and automate these. Give her examples of this to show her what makes these machines so fascinating. With numbertheory and all that stuff she'll never grasp what you're so exited about.
On a sidenote: I'm right now building my mother a new Linux box. It's her first computer. She's 64 years old. I showed here the screenshots of Fluxbox, KDE and Windowmaker (all three of which I know best) and explained the up's and downs of all. She chose Windowmaker. She's going to do Content Management for me, helping me out a little and that will enable us to pep up her pension a bit. She wouldn't have touched a computer with a ten foot pole if I would've bugged her with spaced-off computer science and number theory.
As PL for what you want to do I recomend Python, because it's the most consitent of the modern ones. Perl, Scheme and whatnot are much to quirky and have to much historically grown inconsitencies to be understandable for someone new to the field.
Bottom Line: Whatever you do, stay practical and try to remember what fascinated you about computers and programming when you got involved. I bet it was something like infinitely printing out 'Pogo was here!' in a Basic loop on the c64 or something like that... That's almost where you should start of anybody else aswell.
We suffer more in our imagination than in reality. - Seneca
> She asked me what I do on my computer and I told her that I was teaching myself programming in Scheme.
Is that the best thing you could think of to keep from telling her about the pr0n?
Robocode
Yes, python. Consider it's interactive feature, you have an immediate feedback in teaching code fragments or typical algorithms. This quality made basic a learnig tool for decades, but basic is inferior in it's expressiveness.
Of course, some people will never understand the paradigm of computing. My mother calls any and all of dozens of computers I have or ever had "that silly thing" for forty years. As an accountant, she used a mechanical calculator for whole life. Her current boyfriend (both are aged over their 70's) was a nuclear scientist in his carrier, and he never touched the computer nor calculator. He did all his computing manually on logarithmic ruler.
There you are, staring at me again.
Robocode
the question is - what for?
we program to automate some tasks.
if there are some tasks to be automated for your mum, let her use tools that are not too far from human language.
She could fill family expenses to *sql, make some queries and it'll be almost readable and definitly usefull, not like perl or bash one-liners.
If her interest grows, then will be time for other tools, like tcl - where you, as system archtect, implement some interfaces - for tasks she explain.
Why not teach her to program a turing machine? Or a register machine? Or recursive functions? Once she has learned the concepts, she can implement Scheme, Assembler, C, whatever. And best of all: no hardware (except pen an paper) required.
cpghost at Cordula's Web.
Teach her some Java. Bluetooth just released an API for Java. I mean frick, then she can learn to program shit to cook, clean, and wash the clothes. Maybe even an ass whooping device, when the kids won't move their ass around the house. I think your mother will find it interesting to say the least. A world of Bluetooth in that sense is definitely a "mommy's utopia."
now stand up and smell your chair...
If she shows any interest at all in text-based games, introduce her to Inform.
About a third of the people who learn Inform do so saying, "I'm not really a
programmer, I just want to create this game I have in my head..." Some of them
move on to other languages later.
Inform is really good for teaching object-oriented design, too. It was my
third language, after GW-BASIC and Pascal, and it revolutionized the way I
thought about certain kinds of programming problems.
Also, the Designer's Manual is really top-notch, especially the section on
the object-oriented world model with the Ruins example game. It's a joy to
read. Really excellent stuff. Recommended.
Cut that out, or I will ship you to Norilsk in a box.
A Mac that runs HyperCard will be virtually any Mac that is available in the second-hand market.
A Mac like a Power Mac 7600 or 7300 would be comfortable to use for HyperCard development work - expect to pay no more than $50 for the hardware, maybe less (excluding display, but you can use most any PC display with an adapter).
A Mac like an early G3 (beige) would be very generous to use even for advanced HyperCard development work - expect to pay $100, maybe $120 for it.
HyperCard itself runs nicely under Mac OS versions between 7.something and 9.2, including Classic under OS X.
Remember, HyperCard/HyperTalk has taken the natural-language (English-like, that is) approach to an all time high, compared to all other programming languages past and present.
As Apple has stopped selling HyperCard just two or three weeks ago, there should still be packages available in the distribution and retail channels. Make sure to try Amazon too, if other wells should have dried up.
http://runrev.com It's based on Apple's Hypercard. Pretty easy to create simple apps. Cross platform as well.
I found that the SDK samples are simple enough to learn fast and build confidence, but useful enough to work the concepts into real apps. Trouble with mickey mouse stuff is he will hit a wall (like nice GUI, or db) and wonder why he wasted time. The SDK help was excellent.
As a middle-aged mechanical engineer, I did something similar. I found David Touretzky's book just the thing. Lisp's syntax immediately made sense to me, and the book is interesting in it's own right.
I had taken the required course in Fortran twenty years before and hated it. I suspect some people find functional languages a pretty good fit. After all, spread sheets seem pretty popular.
Ask her to give up. Senior citizen programming has already been outsourced to Elbonia where moms who are half as bored as yours do programming.
BTW They are way past the introductory chapters.
HTML/CSS is the perfect choice for all the reasons others have mentioned, but also for another reason:
You have the chance to teach proper HTML/CSS to a person who has never been poisoned with frames and tables!
Start with basic semantic HTML and explain to her that the tags offer extra information about the text: this is a title, this is a list, this is a paragraph. Stay away from FONT, TABLE, CENTER, B, I and friends.
Get a proper HTML editor which has syntax highlighting, tag lists, etc.
Then introduce CSS. First start with tag styling, don't use id's or classes. Don't use style attributes (no style="", but only a tag). Show her how to use simple attributes like color/background-color, font-family, font-size, etc. Don't bother trying to explain what the #RRGGBB syntax is: just get her a color picker, or a list of the CSS color keywords (and yes, most non-geeks can perfectly see the difference between 'crimson' and 'red' or 'cyan' and 'turquoise').
Have her make a simple page and show her how to put it online: as a geek you surely have webspace available.
Mail it to friends and compliment her.
I started late, in learning to program. Actually I started learning over 5 years ago, but for some reason I just couldn't wrap my head around certain aspects. Then I happened upon HLA by Randall Hyde Pierce. You may try that Higher Level Assembly I found his white paper ( The art of assembly ) to be what turned me around, and flipped my eureka switch.
Or you could try to teach her perl. Another good one is C++, though I am having some difficulty mastering it, the more I try the easier it gets. Try NeHe.GameDev.net for some excellent C++ graphic tutorial programming. Perhaps you could get her interested in writing screensavers.
I am Bennett Haselton! I am Bennett Haselton!
What about a 3D graphics language like POV-Ray or Alice?
I think BASIC would be a perfect choice, and not because it's an easy to learn language. Hear me out.
I learned to program in BASIC in my early youth. A lot of people think BASIC ruins you for programming; I think it ruins people who don't want to program for programming. Personally, upon quickly learning BASIC, and just as quickly running up against the limitations it imposes on performance, structure, and flexibility, it forged and tempered my resolve to learn a real language. Now I'm a quite competent programmer.
Let her give it a shot. Beginner's All-Purpose Symbolic Instruction Code isn't named what it's named for poetic reasons...
The easisiest way to help your mother learn something is to ask her what she would like to be able to do. Then teach the application and use that to build on. Say she wants to learn what the e-mail program can do (calendars, scheduling) and help her understand how to do that. Then she may find other things to do that you can help her with. In my experience it's easier to teach somthing to adults based on their finding solutions to problems they want to solve themselves.
Get her an old Commodore or Atari computer with Basic built-in, and one of those old program listing books to go with it (or you can fire up an old basic interpreter on an existing machine for the same effect).
This will do one of two things:
1. After typing in 500 lines of code, she will decide to drop the whole silly idea.
2. After finishing off the book and loving all the little noddy programs, she will want more.
At which point you introduce her to Python. If she is really into it, you might suggest some computer programming courses at the local community college to expand her horizons.
Lodragan Draoidh
The more you explain it, the more I don't understand it. - Mark Twain
Scheme/Lisp is absolutely miserable to learn when one has grown up with languages like C or Basic. The endless braces and obscure syntax (lambda!?) make it a struggle to use for even simple tasks. Even if you did become skillfull with it you'd have to unlearn your programming skills to pick up a normal language like C.
Promoting scheme/lisp is the curse of college CS departments.
I know very little about it - just saw a link somewhere.
http://leopardprogramming.com/
Reminds me of these tech-school on late night TV promises abundant jobs and high salaries after taking a couple easy programming courses.
On the other hand, I've seen the exception. A secretary at my last company evolved into an engineering-tech after learning about the work around her. Better than many of the college guys, though the lack of a degree did hurt during downturns.
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.
How about a scripting language like AutoIT as an intermediate step? The natural progression of my own computer knowledge was inside out, hardware, OS, applications, HTML, scripting, Javascript, Perl, python etc...
This gets folks familiar with the concepts of programming and gives them the power to make the computer 'do' something but is fairly simple to learn. She could be cranking out automation scripts within an hour and it would boost her confidence for another language.
From what I have Squeak is a fine language for adults. I would not call it childish it is a version of small talk.
Python is a good first language from what I hear. I would stay clear of perl. There is also javascript.
See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
as you probably already know. There is no way to access/manipulate form values within HTML.
HAND.
One word: Perl. Compared to C/C++ it is poetry. Introduce her to a friendly llama. If she gets stuck, introduce her to some monks who have shown willingness to help out a beginnger. What you'll find is that they are especially kind if you explain who you are, what you're up against and why you want to do what you want to do.
Quod scripsi, scripsi.
No.
You sound upset. Maybe you need to make peace with your innerHTML.
Shop as usual. And avoid panic buying.
I hear Microsoft has lots of entry level programmers working on their products...maybe she can get a summer job there testing or something...after 6 weeks she could be an engineer