Is D still alive?

bearophile bearophileHUGS at lycos.com
Thu Jan 27 10:25:14 PST 2011


Andrej Mitrovic:

> Honestly, I think this would just encourage writing sloppy code.

I don't believe this, on the other hand I believe the current behaviour is bug-prone.


> Using min(x, $) explicitly informs the reader of the code of exactly
> what happens.

Right. The problem is that in some cases you may forget to add that min(x, $).


> It's harder to tell when it's implicit.

Slicing syntax is used all the time in both Python and D code, so the Python and D programmers learn quickly and keep in mind what it does. Implicit behaviours are a problem when they are uncommon things, or library functions, etc, much less when they are built-in safety nets you use every five lines of code :-)


Not only that,
> but it can introduce bugs in your code - because while you might use
> any upper bound, you're still not allowed to index beyond the length
> of the array.

Writing hundreds of thousands of lines of Python code I've seen that the saturating semantics we are talking about is not bug-prone (in fact it avoids some bugs).


> Imagine this could was accepted by DMD:
> 
> void main()
> {
>     auto userArgs = ["foo"];  // runtime arguments by some user input
> 
>     auto firstTwo = userArgs[0..2];  // accepted by the new language change,
>                                                   // implicitly
> changes 2 to min(2, $)
> 
>     // more code here
> 
>     firstTwo[1] = "test";  // oops!
> }

Programmers just quickly learn that indexes and slices have a bit different semantics.

Bye,
bearophile


More information about the Digitalmars-d mailing list