> Of course, in constrained environments like embedded systems or other circumstances where control over resources is crucial
I wonder if we should think of end-user machines as such a constrained environment. Certainly, complaining about software bloat and inefficiency is a popular pastime here on HN and on related message boards. Maybe we have an ethical obligation to our users to make the most efficient possible use of their resources, regardless of the extra complexity we have to deal with. Of course, economic realities prevent us from really doing that in many cases.
And maybe, if software does good, we have an ethical responsibility to deliver software more cheaply and quickly,
(and if it doesn't then maybe we shouldn't write it at all)? Ethics are complex, even more than programming, and you're not going to get a definitive answer to such questions. Rust makes certain choices -- more control, more accidental complexity -- as it targets certain domains, while other languages target other domains and make other choices. It's your responsibility to figure out which domain your application belongs in, and neither ethics nor anything else can give a universally applicable answer here.
I wonder if we should think of end-user machines as such a constrained environment. Certainly, complaining about software bloat and inefficiency is a popular pastime here on HN and on related message boards. Maybe we have an ethical obligation to our users to make the most efficient possible use of their resources, regardless of the extra complexity we have to deal with. Of course, economic realities prevent us from really doing that in many cases.