Confessions of a Python fanboy
Masklinn
masklinn at masklinn.net
Fri Jul 31 09:39:47 EDT 2009
On 31 Jul 2009, at 15:12 , Bruno Desthuilliers wrote:
> 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.
>
[misunderstandings on my part/clarifications on yours]
>> 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.
They can be anyway: Ruby doesn't deprecate most control flows as the
actual usages of blocks are a bit restricted (cannot be used for
`while` as it would require the serialization to a Proc, and Ruby's
syntax doesn't allow sending multiple blocks to a method so `if…else`
is out as well). And I assume they reintroduced the for…in sugar to
ease the transition from more traditional languages (using #each and
others seems the suggested collection iterators across the community).
More information about the Python-list
mailing list