On 28/03/14 03:48, Daniel Micay wrote:
On 27/03/14 11:04 PM, Tommi Tissari wrote:
Case by case is all fine and good. But you're trying argue what a programmer 
*should* do if he knew what was good for him.
Rust doesn't view the programmer as an infallible, trusted entity.

Actually, I believe it does, with this policy. The "infallible programmer" it imagines, however, is not the developer; true. It is worse: this policy currently assumes that the policy makers / compiler creators themselves are infallible; that language users (even language users of the future, who may have much more knowledge and experience than anyone participating in this discussion today) are idiots who don't know what they're doing, or at least, will never know more than the language creators. This is NOT trusting the tireless work of a compiler: it's being arrogant, and trusting yourself more than others, whose abilities and circumstances you do not even know.

Worse: it is failing to learn from history. The very reason that C / C++ succeeded is that they don't force things on developers: they assist, give options. They choose defaults, yes, and make things easier, yes; but they always provide the option to move out of the way, when it turns out that those defaults are actually making things harder. The very reason that many other languages fail is that they failed to provide the ability to adapt to changing needs.

Forcing bounds checking on everyone is really not that different from forcing garbage collection on everyone: it may seem like a good idea to some --- even many --- but to others, it is overly limiting.

As another point of consideration, you should probably bear in mind that Rust's boundary checking IS very limited, and people may actually want to override it because they have something better. QA, as mentioned before, can do it better (once, at the right time, on the right variables, only for the right values of those variables, before each release, and only for the code touched in that release), but so might a separate static analysis tool, for another instance.

There seem to be a few people saying that providing an option to disable boundary checks would constitute an ABI change. If so, that's fine: maybe it makes it more trouble than it's worth to do. Maybe that's scary. OR, maybe the fact that it requires an ABI change is an indication of a deeper design flaw. Maybe that's even scarier. But, one way or another, these knee-jerk reactions to a simple request to disable a feature do smack of fear. I would suggest that people face that fear, and acknowledge the real problem, rather than telling people they shouldn't be asking for the freedom to build a program as they see fit.


--
Lee

_______________________________________________
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to