Programming for kids: Difference between revisions

From OLPC
Jump to navigation Jump to search
(Add section for Free Software)
 
(18 intermediate revisions by 16 users not shown)
Line 1: Line 1:
==Logo==
In the purest sense, [[LOGO]] is a programming language; it is a full-featured computer language derived from LISP, the language of artificial intelligence. More important, however, '''[[LOGO]] is a language for learning'''. It is the right tool to teach the process of learning and thinking. [[LOGO]] provides an environment where ''students assume the role of teacher''.


==Squeak==
[[Squeak]] is an open source version of the Smalltalk programming language/environment that is already widely used in [[constructionist]] teaching. There is [http://squeakland.org/ a community] already building educational applications that could be used on the OLPC.


==Pascal==
Scratch is a scripting environment for children being developed at MIT which is built on top of Squeak; http://weblogs.media.mit.edu/llk/scratch/
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==
==3D Communication==
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
[http://www.sketchup.com Sketchup] is a very powerful 3D modeling program that is very intuitive and easy to use. After watching me for only an hour, my little 6 year old sister was making some pretty cool looking houses with rooms, stairs and such with absolutely no help. This ability to communicate in 3D is a very useful skill. The creators of the product have shown a deep commitment to helping advance education, (E.G. software is free for students and educators), and might be interested in this project if someone contacted them.


==Assembly==
But is there a Linux version? --[[User:Walter|Walter]]
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==
:It is closed software. Sketchup was bought by Google recently. It is unlikely (but not impossible) to have this software under a free license. -- [[User:Mathias Schindler|Mathias Schindler]] 02:30, 4 April 2006 (EDT)
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==
:No Linux version, non-free, we will certainly not ship this. --Ivan Krstic
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.
* [http://wiki.laptop.org/go/Category:Aplicaciones_de_Actividad_Terminal Collection of shell on-liners for the XO]

==Logo==
When implemented as originally intended, [[LOGO]] is a full-featured computer language derived from [[Lisp]]. [[LOGO]] is one of many languages intended for learning.

* See also [[Turtle Art]], which combines LOGO's turtle graphics with snap-together visual elements (also found in [[Scratch]]).

==Squeak==
[[Squeak]] is an open source implementation of the Smalltalk programming language/environment. There is [http://squeakland.org/ a community] already building educational applications that could be used on the OLPC.

Scratch is a scripting environment for children being developed at MIT which is built on top of Squeak; http://weblogs.media.mit.edu/llk/scratch/


==Python==
==Python==
[[Python]] is an object-oriented language that combines LISP-like features with a more modern syntax. Since much of [[Sugar]] is written in Python, the language will be available.
[[Python]] is free, open source, clear, object-oriented, many advantages. Code is very good readable, very short, huge libraries, cross platform, large and growing community. Easy to learn. Programmers find that they tend to write very stable code, which is easy to understand by others. This is why it is included in the [[OLPC Python Environment]].


There has been serious work done on teaching [[Python]] to young people, including [http://www.livewires.org.uk/python/index.html the Livewires program in the UK]
There has been serious work done on teaching [[Python]] to young people, including [http://www.livewires.org.uk/python/index.html the Livewires program in the UK]

*Also see [[Pippy]]


==Processing==
==Processing==
Processing (aka Proce55ing) was built by Ben Fry and Casey Reas on top of Java as a multimedia-geared IDE that was more friendly than Java to hybrid programmer-designer/artists.
I have searched many websites during the last hours. I believe children love quick results and graphical results. I find this one is worth having a look at it. It seems to be free and available for Linux: http://processing.org/


Processing is freely and available for Linux at http://processing.org/
Although it looks complicated. Haven't tried it, just providing the link.
The language itself is very similar to C or a simplified version of Java.

To install and run processing, follow the steps at http://villamil.org/?p=106


----
:I believe children love quick results and graphical results.
:I believe children love quick results and graphical results.
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?
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?


[[Category:Software development]]
==Nelements==
[[Category:Pedagogical ideas]]
[http://nelements.net Nelements] is a generic 3d knowledge representation system that can be used to represent knowledge in a language of thought.
[[Category:Developers]]

==Free Software==

* Debian Junior Programming

Latest revision as of 21:12, 20 February 2012


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.
  • Collection of shell on-liners for the XO

When implemented as originally intended, LOGO is a full-featured computer language derived from Lisp. LOGO is one of many languages intended for learning.

  • See also Turtle Art, which combines LOGO's turtle graphics with snap-together visual elements (also found in Scratch).

Squeak

Squeak is an open source implementation of the Smalltalk programming language/environment. There is a community already building educational applications that could be used on the OLPC.

Scratch is a scripting environment for children being developed at MIT which is built on top of Squeak; http://weblogs.media.mit.edu/llk/scratch/

Python

Python is an object-oriented language that combines LISP-like features with a more modern syntax. Since much of Sugar is written in Python, the language will be available.

There has been serious work done on teaching Python to young people, including the Livewires program in the UK

Processing

Processing (aka Proce55ing) was built by Ben Fry and Casey Reas on top of Java as a multimedia-geared IDE that was more friendly than Java to hybrid programmer-designer/artists.

Processing is freely and available for Linux at http://processing.org/ The language itself is very similar to C or a simplified version of Java.

To install and run processing, follow the steps at http://villamil.org/?p=106

I believe children love quick results and graphical results.

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?