On 20 March 2014 17:04, Eliot Miranda <eliot.mira...@gmail.com> wrote:

>
>
>
> On Thu, Mar 20, 2014 at 2:03 AM, Christophe Demarey <
> christophe.dema...@inria.fr> wrote:
>
>> Hi Eliot,
>>
>> Le 19 mars 2014 à 16:25, Eliot Miranda a écrit :
>>
>> Hi Christophe,
>>
>> On Mar 19, 2014, at 1:45 AM, Christophe Demarey <
>> christophe.dema...@inria.fr> wrote:
>>
>>
>> Le 18 mars 2014 à 19:50, Eliot Miranda a écrit :
>>
>> On Tue, Mar 18, 2014 at 10:10 AM, Christophe Demarey <
>> christophe.dema...@inria.fr> wrote:
>>
>>> Why arguments should be read only?
>>> They are just temporary variables with an initial value.
>>>
>>
>> Read the blue book.  It was a decision of the language designers to
>> forbid assignment to arguments to allow debugging.  The assignment to block
>> arguments is a side-effect of the old BlockContext implementation of blocks
>> where block arguments were mapped onto temporary variables of the home
>> context.  It is an anachronism and should be forbidden also.
>>
>>
>> Thank you for the explanation.
>> I'm just curious why it is so difficult to implement a debugger if
>> arguments are assignable?
>> If you need to restart the execution of a method, and so you need to get
>> the initial value of the argument, I understand you cannot find the value
>> anymore in the method context but it is available in the caller context, no?
>> As I never implemented a debugger, I cannot figure out the difficulties.
>>
>>
>> the args are no longer available; they get moved from the caller context
>> to the callee.  If you think about stack frames then what happens is that
>> the slots containing the outgoing arguments are used as the slots for the 
>> incoming
>> arguments.  So if arguments are assigned to they are indeed lost.
>>
>>
>> ok, I understand. Thank you for the explanation.
>>
>>
>> But look at how many methods in the system (or in any system).  The
>> proportion of methods/functions/procedures that could be written to assign
>> their arguments is very small so the Smalltalk trade off is a good one.
>>
>>
>> I agree we don't really loose something. You can always assign arguments
>> to temporary variables and update temporary variables. My point was just:
>> if possible, why don't do it?
>>
>
> It's that tricky trade-off between value and cost.  Is it worth it?  Does
> doing it provide as much value as doing what it displaces (opportunity
> cost).  IMO it simply doesn't provide enough value, and there are different
> priorities in the compiler.  But if you disagree implement it your self and
> then it'll be done.
>
>
self := super agreed.


> --
> best,
> Eliot
>



-- 
Best regards,
Igor Stasenko.

Reply via email to