Programming for kids

From OLPC

Contents

Pascal

Pascal is another old language that was used for teaching programming. It was more structured than BASIC. A modern descendent (with object-oriented programming features added) is Delphi. Although the Delphi IDE is a proprietary software, the free clone Lazarus (with the FreePascal compiler) can be used as an alternative.

C

While not the easiest language to learn, C is a relatively simple language. Most of the XO's software is written in C, including the Python interpreter. The normal C compiler is gcc, which requires less than 10 MB of space. A faster and smaller (100 KB) compiler called tcc is an interesting alternative, particularly because tcc allows C programs to be treated as scripts. Unlike most other languages, C allows relatively full exploration of the system's capability and operation. Only assembly language gets the student closer to the fundamentals. C++ is an advancement in C

Assembly

Assembly language has an undeserved reputation for being mysterious and fearsome. It is an excellent teaching language; Donald Knuth used it in his well-regarded series of computer science books. Students gain a much clearer understanding of computers when they learn assembly language. High-level languages present the learner with a black box, often making the oddities of computer programming difficult to observe and explain.

ActionScript

ActionScript is the programming language of flash. It is related to JavaScript. The resulting programs can be played in gnash, directly or via the web browser.

JavaScript

JavaScript is the programming language which web browsers have built-in support for. It is related to ActionScript. Programs can be played in the web browser.

shell scripting

Every laptop comes with bash, awk, and sed. These relatively high-level programming languages are frequently used together as one. They are particularly effective for automation of tasks on the laptop.

This also will introduce the children to files, which are a very easy concept, and so useful: once you have learned files, you can begin understanding links and named pipes and stuff (these can be useful to just about anyone). When you know files, you can also eventually understand device nodes and network sockets concepts (these aren't (directly) useful or necessary; I've never directly manipulated the latter myself actually). When you learn about files you would also usually learn about directories, which aren't just as easy a concept as files are, but once you've learned them you can begin understanding things like mountpoints.

This sound to me like #Logo. Anyway I don't think this should turn into a language-war. I guess the laptops could come bundled with language1 and language2 and language3 if they all fit in. But to be useful, the laptops need come be accompanied with something else. The language interpreter/compiler is, of course, not enough. What do we need to put in there to make the use of the language educational?