Earlier quoted context omitted.
I think the problem with those languages is they're too different for a starting course. Scheme is obviously very powerful, but its syntax is wildly different than most popular programming languages used today. As for Ruby, don't even get me started. There's practically no syntax at all; merely reading it agitates me. I think, in the beginning, people are most likely to understand concepts like Objects (Circle, Squar…
Forth, Factor, and Io are languages that come to mind that have "no syntax". Ruby is certainly at the "more syntax" end of the spectrum. puts(("foo #{bar} %s %s" % [bat, baz]) * 2.+(0b0010)) There are a huge number of syntax rules in that line.
# from http://news.ycombinator.com/item?id=404609
bar = 3
bat = 4
baz = 5
puts(("foo #{bar} %s %s" % [bat, baz]) * 2.+(0b0010))
And here's a grammar for the subset of Ruby it uses: this
I have tested it (in http://github.com/kragen/peg-bootstrap/tree/master/peg.md) and it seems to work for that fragment, although I haven't examined the parse tree to see if it's right. (Obviously the definition of namechar is wrong, and there's no $end token separating statements, and you can't call methods on things that aren't constants or self, etc.)