perché le strategie di valutazione call-by-value ecc. sono discusse solo nel contesto delle chiamate alle funzioni?

1

Mi riferisco a varie discussioni sulle differenze e le sfumature nella semantica del pass-by-value, pass-by-reference, ad es. in SO o Wikipedia articolo sull'argomento .

La mia domanda è: perché questi articoli e conversazioni discutono sempre di pass-by-value, pass-by-reference, ecc. esclusivamente nel contesto del parametro passing e delle chiamate di funzione e non nel contesto dei compiti?

es. assumendo quanto segue:

A a1 = new A();
A a2 = a1;

... perché è dato per scontato che l'oggetto assegnato non venga copiato dal valore?

Non sto chiedendo il motivo per cui sarebbe una decisione discutibile sul design del linguaggio fare della semantica del compito copiare l'oggetto "in base al valore" - sto chiedendo se e in base a quale terminologia linguistica la specifichi esplicitamente o sotto quale lingua dell'intestazione la teoria del design tratta tali decisioni.

    
posta Marcus Junius Brutus 13.02.2015 - 19:04
fonte

1 risposta

1

My question is why do these articles and conversations always discuss pass-by-value, pass-by-reference, etc. solely in the context of parameter passing and function calls and not in the context of assignments?

Come Doval menziona nei commenti, la ragione principale è che l'assegnazione è spesso modellata come una chiamata di funzione (e può quindi essere ignorata).

why is it taken for granted that the assigned object is not copied by value?

Intendi come in C, C ++ e una pila di altre lingue? In questi giorni, la ragione più comune è che copiare oggetti non banali non è un'operazione atomica. Dal momento che non è un'operazione atomica, rende molto più difficile rendere sicuri i programmi concorrenti, il che è già molto difficile.

Inoltre, poiché la maggior parte dei programmatori spesso non desidera la semantica del valore per i loro oggetti.

I am asking whether and under what terminology language specifications explicitly spell this out or under what heading language design theory treats such decisions.

I termini comuni sono tipi di riferimento / valore e semantica di riferimento / valore (come menzionato nei commenti).

    
risposta data 13.02.2015 - 20:00
fonte

Leggi altre domande sui tag