Lee Hart wrote:
To summarize and extend: Lee Hart wrote:What does a computer need to be a great learning tool? One that can capture a person's imagination; make him/her *want* to learn more? Here are some ideas: 1. It needs a built-in easy-to-use programming language.- some version of LOGO (for very young pre-literate kids) - some version of BASIC (for older kids) - source for the BASIC and LOGO, written in a better language (like C?), so they can be studied, extended, and modified I think the next critical tool is: 2. A machine-language development environment - editor - assembler - debugger This allows one to get at the machine-code level, both for learning and because there are certain tasks where speed and memory requirements force you to use it. I would imagine users would progress from BASIC to C to assembler as their interests and abilities grew. A lot could be learned from modern software development tools used for today's microcontrollers. Languages like FORTH also offer some very interesting ideas, like incremental assembly and compilation.
I would have a totally different opinion on this. I'd like to hear what you think about it.
1-It need to be Linux on a cheap machine setup to boot into a GUI and have all the needed tools ready to go.
2-(I agree) that it needs something like Logo with the turtle and simple commands like "right 90" "Foraward 50" that have graphical feedback for little kids.
I disagree completely that kids should be learning BASIC and then they should go into C! The gap between the two is huge. The worse thing is that your going to produce about 28 "hack and slash" guys per class of 30 and only about 2 that write good code.
The number one problem is learning how to program is learning how to manage complexity. Anyone can learn how to write a good 60 line program but few can write a good 60,000 line program. BASIC doesn't have features that allow one to do this-- so that class isn't going to teach them anything but how to write a one pager.
C does how the ability to do huge programs but the tools that it provides are non-obvious to the beginner. C is a KISS (Keep it simple stupid) language it provides minimum tools needed to write powerful programs. For example C has no namespaces per se. But these can and are simulated in C using idioms that use what C does have including the header files. Is it going to be easier to teach about namespaces with a language with direct suport for them via a "namespace" keyword or are you going to have a leacture where the class looks at a hieracrcy of c header files and maybe two of them get it.
I guess we have just totally given up on teaching OO programing, since niether BASIC nor C support it. This in turn makes teaching GUI programming harder since c/gui APIs look fugly and therefore will be harder to teach than OO gui APIs. To do a GUI in C you need (as far as I know) to use Function Pointers and callbacks. The basic class is going to be zero help on this tricky material. In fact the current issue of Dr Dobbs Journal has an article on "Generalized callbacks in C++ [or c] and C#" which means that the editors think most of the professional programmers who read the magazine don't know how to do this yet.
BASIC is good becuase it has the one line hello word. But thats about all its got going for it. You should also be looking at how big and complex some other common programs are like:
A simple word processor. A simple paint program. A simple gui calculator. A simple replacement for DIR or ls. A simple web server. A simple RPG game. A simple solve for X algebra program.If kids can make these they are likely to consider going into a career in programming with some confidence. If they take 2 years of classes and still are totally confused about how a game like bard's tale works they are likely to dismiss programming as non-creative, pointless, tedious, etc.
It makes a lot of sense to me to teach applications programming first. Learning from the ground up is like asking never to get to the top. The kids might get a sense for how their microware works but will be clueless about how their Playstation software works. It is the complex high level software that they are naturally going to be interested in.
Glen.