Matthew Smillie wrote:

> 
> Basically, there are many ways to accomplish a given task, which  makes 
> it comparatively easy to write a program that - while it  produces the 
> desired output - completely misses the point of the  learning exercise.

If accomplishing a given task is *not* the point of the  learning 
exercise, then what is, and why might students be unclear on what is 
expected of them?

I'm skeptical that Tim Toady is the culprit here.  If you, as the 
teacher, don't want students diddling arounf with every syntax for a 
conditional, then tell them the one form they are allowed to use for the 
exercise and leave it at that.


> 
> Another difficulty is that while the syntax might *look* straight- 
> forward, but in part that's because a lot of Ruby relies on  programmers 
> having an understanding of how programming works in  general, and a lot 
> of the generic terms can be elided or condensed.   When you're learning 
> programming, you need to know about those  implicit bits, and having to 
> write them out explicitly helps with that.
> 
> To give a concrete example, think of the 'return' statement - it's  
> *required* in Java for the method to return anything, and is optional  
> (but generally not used) in Ruby.  For someone learning Ruby, this  
> means they have to remember that the last statement evaluated is the  
> return value, which is just one more thing to put on their stack of  
> not-quite-understood concepts (and they have LOTS of those concepts  
> when they're learning).

Actually, this is fundamental to understanding Ruby; expressions return 
values; methods are a series of expressions.

The "must remember to type a gratuitous 'return'" seems like the extra work.

Students will learn the Ruby you teach them.  Don't throw a lot of 
syntax at them before explaining basic principles.    Otherwise the 
syntax just seems arbitrary (or more arbitrary than it is), and the 
principles will not make much sense after they've been blindly coding 
with random expressions in search of code that simply runs without errors.

It may be useful to watch the SICP videos from MIT (and they may be the 
best argument for teaching Scheme over Ruby :) )

http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/



-- 
James Britt

"Take eloquence and wring its neck."
  - Paul Verlaine