Comment by ionfish

15 years ago

Matz was a researcher working on compilers and programming languages when he created Ruby, so it doesn't seem obvious to me that he was "relatively clueless about language design" at the start.

He was definitely clueless about the implementation of Ruby. MRI started as a half-assed Scheme implementation, which is easy to see when you read the MRI source code. Scheme has lexical scoping, while Ruby has...python/perl-style scoping.

Scheme has first class anonymous functions, while Ruby has blocks, which are a hack around MRI's slow function calls.

  • while Ruby has blocks, which are a hack around MRI's slow function calls

    Is this really the reason? I thought Ruby has blocks because Smalltalk has blocks.

    • I believe smalltalk block are BlockClosure objects that can be passed around like any other parameter.