Confessions of a Python fanboy

Bruno Desthuilliers bruno.42.desthuilliers at websiteburo.invalid
Fri Jul 31 09:12:42 EDT 2009


Masklinn a écrit :
> On 31 Jul 2009, at 13:38 , Bruno Desthuilliers wrote:
>> Steven D'Aprano a écrit :
>>> On Thu, 30 Jul 2009 18:47:04 +0100, Tim Rowe wrote:
>>>> That and the fact that I couldn't stop laughing for long enough to 
>>>> learn
>>>> any more when I read in the Pragmatic Programmer's Guide that "Ruby,
>>>> unlike less flexible languages, lets you alter the value of a 
>>>> constant."
>>>> Yep, as they say "Bug" = "Undocumented feature"!
>>> That's no different from Python's "constant by convention".
>> Ruby's code blocks come from Smalltalk, where they are an absolute 
>> necessity since message passing (which code blocks are part of) is the 
>> *only* builtin control flow in Smalltalk - so you just *need* this 
>> construction to provide branching and iterations.
>>
> I'm not so sure about the way you say it.

I'm not sure about the way you understand it !-)

> I'm pretty sure "traditional" 
> flow control structures preceded Smalltalk by a pair of decades

Yes, of course - and that's not the point. What's important is that:


> so it's 
> not that Smalltalk's designers found it necessary to use blocks & 
> messages, but that they understood blocks & messages could trivially 
> replace most control structures (making *those* unnecessary), making the 
> core language simpler and more flexible.

Exactly.

> In other words, I see it the other way around.

My wording may have been a bit confusing, indeed. It was implied (but 
perhaps a bit unclear) that restricting control structures to messages 
and blocks was a design choice.

>> Wether it makes sense to have code blocks in Ruby is another question 
>> since Ruby does provide traditional control flow features
 >
> Well it does at least allow for the creation of new flow control 
> structures in library land when the existing ones aren't enough (e.g. 
> allows Ruby not to require the introduction of a `with` statement). 

Yeps. But then other "traditionnal" control flow features become redundant.

> Though Ruby's blocks are nowhere near as flexible as Smalltalk's.



More information about the Python-list mailing list