2010/5/26 Peter Hugosson-Miller <[email protected]>
> Thanks, Lucas!
>
> I like nice clear concise lists of logical reasons like this :-)
>
> Not that I disagree with Stef in any way at all, but can you think of
> reasons - other than the historical ones - why #value:value:value: and
> friends are to be preferred over #valueWithArguments: ?
>
The fundamental ones are that value[:value:]* a) avoid consing up the array
to hold the arguments and b) avoid determining the array's size and
dereferencing it when evaluating. The value[:value:]* primitives are as a
result usefully more streamlined than the valueWithArguments: primitive.
That may still be a historical argument but I still find it compelling:
| b n |
b := [:aa :ab| ].
n := 10000000.
{ Time millisecondsToRun: [1 to: n do: [:i| b value: 0 value: 0]].
Time millisecondsToRun: [1 to: n do: [:i| b valueWithArguments: {0. 0}]].
Time millisecondsToRun: [1 to: n do: [:i| b valueWithArguments: #(0 0)]]
}
Squeak 4.1.1beta2: #(1357 2129 1457)
Cog: #(141 844 568)
(2.66 GHz Intel Core i7)
> --
> Cheers,
> Peter
>
>
> On Wed, May 26, 2010 at 1:20 PM, Lukas Renggli <[email protected]> wrote:
>
>> > not right to me. I wanted to express the feeling that, for me, the one
>> > of the best things about Smalltalk is its readability in difference to
>> > C, which is very fast. The »new compiler optimize« both, anyway.
>>
>> - The "New Compiler" does not yet work.
>>
>> - The optimized #and:and:and: code never decompiled correctly.
>>
>> - The exact semantics of #and:and:and: is not clear without knowing
>> how it is implemented.
>>
>> - There are subtle semantic differences between "a and: [ b ] and: [ c
>> ] and: [ d ]" and "a and: [ b and: [ c and: [ d ] ] ]" if the
>> conditions have side-effects.
>>
>> - The #and:and:and: constructs are very confusing to newbies, I have
>> seen that numerous times.
>>
>> - The use of #and:and:and: doesn't shorten code.
>>
>> - #and:and:and: is not necessary from a language point of view.
>>
>> - And most important for me: #and:and:and: is incompatible with the
>> rest of the world.
>>
>> Lukas
>>
>> --
>> Lukas Renggli
>> www.lukas-renggli.ch
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [email protected]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
>
> _______________________________________________
> Pharo-project mailing list
> [email protected]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project