Sunday, October 7, 2012

Why Ruby is the perfect* teaching language.

I was reading Avdi's post on a new programming langauge designed for learning called Grace, like Skitch, LOGO and others before it, it fails. It fails because computer language designers keep looking in the wrong place. In the PDF on their presentation they discard python because it has "inconsistent method syntax" like that is a point of contention in learning a language.

Look at normal speaking languages. Are they consistent? Heck no. They're full of exeptions and irregularities. The more regular the easier it can be to learn yes, but irregularity doesn't equal difficulty. Some irregularity is expected.

The number one thing a learning language needs to be is readable. It's like the difference between html and markdown. HTML is simple, consistent and easy to understand but it's near unreadable. It's deeply nested, it's interrupted by obtrusive markup and closing tags. While markdown is eminently readable. That makes it easy to learn.

So languages like Grace, Dart, Go, and Lisp just miss the mark. They look like math. Grace looks a lot like Javascript (JS). If you don't know what's going on... good luck figuring it out.

Languages that are great for learning are Ruby and Python as well. Coffee-script would be great if it had it's own compiler and debugger and you didn't have to hit the JS at all. All of these are highly readable languages, unlike C, Java and others. Of course if you already know how to read C, then anything C like looks familiar and easy to read. But that's not where a newbie starts from.

The biggest barrier to learning programming is not the logic, it's the syntax. It's not like LOGO, learning how to control the little turtle that was hard, but reading the instructions and knowing what it would do from the instructions alone.

5.times do print "Hello".upcase end

The command up top is easy to visualize the result, even if you don't quite know what it's doing you can read it and guess.

The logic is weirdly very similar in programming languages and for the most part not the hardest to learn. The quicker you can get to sight reading code, the quicker you can see the hidden harmonies in the logic.

But then again I don't know what they were expecting to get from Grace since a high-level goal was an "A Haskell for OO" and Haskell is not exactly known for its ease of learning (quite the opposite in fact).

* FYI Like I say in the text, when I say Ruby in the title I mean languages like Ruby and that includes the likes of Python for example.

No comments:

Post a Comment