* Java: Java spec says "pass by value"
* C: pass by value
* C++: pass by value and reference(with ref qualifier)
* C#: pass by value and reference(with ref keyword)
Do you know a language that defines "pass by reference" in a very different way?
> but they define reference and value passing similarly
Well, If all of them have been derived from C++ or designed by people trying to improve on C++, they would be very likely to have the notion defined similarly regardless of how anyone else would use the term, so there's not much surprise there.
BTW the page you've linked seems to contradict some of your statements:
> so they are typically described as call by value even though implementations frequently use call by reference internally for the efficiency benefits
As you seem to be arguing that this is not call by reference you should probably correct the page.
EDIT: It also seems that there IS some amount of language specificity anyway, since in another place of the page it says:
> "In particular it is not call by value because mutations of arguments performed by the called routine will be visible to the caller. And it is not call by reference because access is not given to the variables of the caller, but merely to certain objects"
I'm reasonably sure that the first part would be called "call by value" in C++ even if in context of CLU it wasn't if the usual way of doing the same in C++, namely passing a pointer to an object, were to be used.