On Thursday, 20 November 2014 at 08:14:41 UTC, Walter Bright wrote:
Computer math is not math math. It is its own beast, and if you're going to write in a systems programming language it is very important to learn how it works, or you'll be nothing but frustrated.

Understanding how it works doesn't mean error prone practices must be forced everywhere. It's not like D can't work with signed types.

Rust made the same mistake and now a couple of times I've seen bugs like these being reported. Never seen them in Java or .Net though. I wonder why...

D is meant to be easily used by C and C++ programmers. It follows the same model of signed/unsigned arithmetic and integral promotions. This is very, very deliberate. To change this would be a disaster.

If unsigned types exist, it doesn't mean they must be forced everywhere.

For example, in America we drive on the right. In Australia, they drive on the left. When I visit Australia, I know this, but when stepping out into the road I instinctively check my left for cars, step into the road, and my foot gets run over by a car coming from the right. I've had to be very careful as a pedestrian there, as my intuition would get me killed.

Don't mess with systems programmers' intuitions. It'll cause more problems than it solves.

Bad things can happen, but why make them more probable instead of trying to make them less probable?

Reply via email to