Why aren't computer languages part of the standard grade-school curriculum?
I have taught using all of these languages. Each language has its advantages; but they also all have major drawbacks for teaching. None scales all the way from kindergarten to college. The best advice today is for students to learn half a dozen different languages. The implication is that, to learn programming, you need to be pretty devoted to the task.
Unfortunately, for the routine teaching of regular kids in mainstream schools, the lack of a standard notation means no languages are taught at all.
Remembering LOGO and BASIC
The best "universal learning language" efforts to date have been LOGO and BASIC. BASIC is not a well-loved language today. With line numbers, goto, and a lack of encapsulation, BASIC forced you into bad habits and sloppy thinking.
However, in the years when it was popular, BASIC had the advantage that it was both the first language to learn and a language that was used to write commercial software. BASIC was everywhere. And by taking a peek at big programs written in BASIC, a student could see endless fields of possibility stretching out ahead.
LOGO is a better-designed language. Although LOGO feels abandoned and antiquated in the Internet age, LOGO also got a key thing right: the goal of "No Threshold, No Limit." That slogan meant that LOGO was both easy enough for children who want to see feedback after typing five letters, and powerful enough for advanced learners who want to build an AI.
In 2013 is there any modern equivalent to LOGO or BASIC?
Yes, there is a modern language with the easy elegance of LOGO and the practical hackability of BASIC. A single language that scales from kindergarten to pros. But it is a new language, not listed above. It is a language that does not even aspire to be an educator's language. Yet it is a language that has fortuitously appeared in the "no threshold, no limit" sweet spot.
More thoughts below....Continue reading "No Threshold, No Limit"
I have posted a new learning-to-program sandbox at turtlebits.net. It is designed as a modernized "LOGO" friendly for beginning programmers. For example, as a first program you can write simply "fd 100".
As with LOGO in 1967, the goal of TurtleBits in 2013 is No Threshold, No Limit, which means that it is easy enough for kindergarten kids, and yet it scales all the way to professional-level software experimentation and development. The language is Coffeescript plus jQuery plus jquery-turtle, and it runs in any modern browser (Chrome, Firefox, IE10)....Continue reading "Turtle Bits"
Three little examples of Coffeescript and the turtlebits functions.
The basic turtle motion functions are the same as LOGO: "fd 100" moves forward 100 pixels; "bk 100" moves back 100 pixels; "rt 90" turns right 90 degrees and "lt 90" turns left 90 degrees.
RichB commented yesterday about his 7-year-old's experience with the TurtleBits editor: "He expected the editor just to create new blank space at the end for him. So every few minutes I had to come back to the computer and hold the return key to generate some blank lines."
I have had the same experience with my 6-year-old! So now I have fixed up the editor to always insert a blank line at the end. Let's see if that helps with this issue.
TurtleBits should be as beginner-friendly as possible. Here are a few notes on the use and design of the TurtleBits editor....
A note on queuing and animation in TurtleBits.
RichB comments that the following program hangs the browser in TurtleBits:
# Program 1: will hang your tab. while true turnto lastmousemove fd 10 wait 1
This program is perfectly valid Coffeescript, but running it will freeze your browser tab. If you bring up the debugger and force the program to pause, you will find that it is forever in the middle of looping super-fast within the infinite "while" loop without drawing anything interesting on the screen.
A couple solutions below....Continue reading "Ticks, Animation, and Queueing in TurtleBits"
A note on await and defer in TurtleBits.
Iced Coffeescript is now supported on TurtleBits, so two new keywords are available in the language: await and defer.
Together these keywords allow you to write a function that stops and resumes again in the middle, yielding control while waiting for some long-running task. If you like, your program can even be paused in several places waiting for several different long tasks at once. More examples below...