Children's Programming Languages
Created | Updated Jan 28, 2002
Teaching children to program DRAFT
WORK IN PROGRESS
There was a time, not so long ago, when the mouse was still compatible with the digestive tract of your cat, a hard drive involved negotiating the Magic Roundabout in Swindon and even the word "floppy" had a different meaning from the one it has today. Those were the early days of personal computers: a world of microdrives and recycled monochrome televisions. An era when the alien music of BASIC programs was broadcast by the BBC at three in the morning for us to record on audio tape and a time when we thought we had, at last, found a reason for learning algebra and trigonometry at school. In order to use a computer you had to learn how to program: there was no other way.
The Clickerati
Twenty years on and the world belongs to the clickerati: the new generation who can draw a circle on their computer without knowing that x2 + y2 = r2. Their mice are compatible with USB keyboards, hard drives are measured in gigabytes and floppies have come and gone.
How will young people learn how to program? Is the computer programmer doomed to extinction? What will those boys who want to grow ponytails do for a job? This guide entry addresses the first of these questions along with the related question "Why will the clickerati generation learn how to program?"
The matter of ponytails is left for others to research.
What is programming?
There is little point in attempting a formal definition of the terms "programming" or "programming language": there are no versions that would satisfy everyone and it would be a shame if the forums attached to this article to become full of that sort of esoteric argument. The important thing is what the word means in this guide entry in the context of children learning to program. The word programming will be used to describe any activity in which some skills similar to those used in professional computer programming are used to make an artefact containing a computer chip do something useful or entertaining. Examples of such skills would include sequencing instructions, debugging and variable handling.
Here are some examples to clarify the meaning of the term "programming" in this article. Using an ATM is not programming. This is because the user gives one instruction at a time as a reaction to the machine's output. Similarly, other forms of interfacing with a computer, like typing or surfing through hypertext are not programming because there is one action followed by one reaction. On the other hand, setting your VCR to record Coronation Street is a programming activity because several instructions are linked together by the user in a sequence for the machine to execute at some time in the future. And likewise, although it is not programming language in the same sense as, say, C++, the mark-up code used to write Guide entries (GuideML) requires many of the same sequencing and debugging skills. This is the sort of programming task for which ordinary folk (and other entities) might wish to be prepared.
Why should children learn to program?
It is clear that in the grown-up world there are activities carried out by many of us that require modest programming skills of varying degrees of formality. Such tasks include the use of scripting languages, spreadsheets and databases, macros in word processing packages, programmable calculators and handhelds. Hence, in the short to medium term, it can be argued that children should learn to program because they will probably need to have those skills at some point in the future. Of course children may also want to carry out programming-like activities.
On the other hand, arguments against teaching children to program can be made. One train of thought is that we should have the ultimate aim of removing the need for programming skills by the improvement and increased use of natural language processing and embedded computers. This idea goes by the name of ubiquitous computing. (The world is not a desktop - Weiser). However, this is irrelevant if you believe that children should learn how to program because it is good for them.
This latter point was made vehemently by Dr. Seymour Papert, Professor of Learning Research, MIT and the inventor of Logo, arguably the first computer programming language specifically designed for children.
Logo is essentially about teaching mathematics, especially the topic of angles, through programming. In his influential and inspirational book, Mindstorms, Dr. Papert extols the benefits of developing technological fluency arguing that "learning through design" might allow programming to become a learning vehicle that helps children identify themselves as part of a technical world (Papert, 1983). Papert coined the term constructionism for his "theory of learning and a strategy for education", Constructionism, Logo and Papert's concept of syntonicity (humans identifying themselves as part of a technological world) are strong theoretical influences on my research into children's programming languages.
The past, present and future of programming for children
The Past
For those who have used it, the most memorable part of the Logo programming language is turtle graphics. In order to draw shapes children control a turtle (real or virtual) which has a pen in its tail.
The starting point for many programmers used to be one the variants of Basic (Beginner's All -purpose Symbolic Instruction Code) e.g., BBC Basic or Commodore Basic. The main advantages are an English-like structure and portability across platforms.
At the same time as Logo was being born Smalltalk, a language envisaged as a simple language for use by children, was under development. It was the first computer language based entirely on ideas of objects and messages. Smalltalk-72 served as a base for experimental programs in teaching object-orientd programming to high-shool children but the project had mixed aims and perhaps remained in research phase too long. Smalltalk never became a favourite of those early young pioneers in the same way as Basic but it is not dead yet.
Children were also thrown in at the deep end with Fortran or Pascal but (perhaps surprisingly or perhaps indicating the strength of an underlying human drive to program) children did use these languages successfully given the right contexts, motivations and teachers.
Peripherals may have been a bit on the thin side but there were advantages to the early computers that we have since lost. They had simple ports and lots of 'em. The machine code was accessible. There was no operating system to restrict you even if speed and memory weren't on your side. The ZX80 allowed us to experiment with a range of inputs and outputs: it may have had a silly rubber keyboard and no monitor but you could connect it to sensors and motors with ease. Compare it to the iMac, a wonder of design and technical sophistication but it traps the user inside the glass box.
So can we just give up any idea of programming? No, the arguments for programming because we must, because we want to and because it is good for us applies just as much today.
The Present
Perhaps inspired by newsworthy early successes and optimistic photographs in school prospectuses, the imperative to teach children to program is being maintained by government intervention in many parts of the world. Modelling to learn and learning to model (in a computer sense) is the order of the day. {Example}. The languages that have been devised to offer the opportunity to model are AgentSheets, LegoSheets and ToonTalk.
The real world, as opposed to the world of personal computing, increasingly forces the programmer to step back from the glass box. From the control of toys and appliances within our homes to increasing automation elsewhere. From School/ University science and technology, control, data collection to industrial automation (Lab view and Prograph)
So how might kids program NOW? Inside the glass box. Examples of Languages using GUIs.
Text-based languages | Scripting languages | Spreadsheets and databases | Visual Languages |
Basic and variants Logo and variants Java C, C++ Smalltalk and variants | HTML/ XML/ DHTML, JavaScript Lingo AppleScript Tcl/Tk Macros | Excel SQL | Agentsheets, Legosheets Toontalk Stagecast (previously known as Cocoa and KidSim) Lego RCX Code |
To be continued
Appendices
References to Papers and Books
Knudsen, J. B.(1999) Lego Mindstorms Robots, O'Reilly.
Papert, S. Mindstorms
Example of a Logo Program
Commands like this would draw a square:
DRAW WITH A BLACK PEN
DO THIS FOUR TIMES:
MOVE FORWARD 10 PACES, DRAWING
TURN RIGHT 90 DEGREES
Example of a Basic Program
Example of a Smalltalk program
List of Programming Languages
ABC
Agentsheets
Basic
Logo
RCX Code
Smalltalk
Squeak
UCBLogo
Other Useful Links
Those wishing to play with Logo should look at Bill Kendrick's Web Turtle page. http://www.sonic.net/~nbs/webturtle/
Compare programming languages by looking at Hello World programs.