This is a theoretical question about languages and development theoretically.

What do software development theorists say about functions that modify the values of parameters passed to them? Is it bad practice, theoretically speaking? It is of course common for this to be done. In C++, it is very common for pointers to be passed as a parameter, and it is common for parameters to be passed using references.

JScript does not support the modification of non-object parameter values by functions, and some JScript programmers consider all languages that do to be undesirable old technology. Is C++ and VB old technology? Does Java and C# have equivalent capability or do they not support modification of parameter values by functions?