Scott Meyers' DConf 2014 keynote "The Last Thing D Needs"
Ali Çehreli via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Wed May 28 15:42:02 PDT 2014
On 05/28/2014 03:10 PM, Jonathan M Davis via Digitalmars-d-announce wrote:
> On Tue, 27 May 2014 06:42:41 -1000
> Andrei Alexandrescu via Digitalmars-d-announce
> <digitalmars-d-announce at puremagic.com> wrote:
>
> >
>
http://www.reddit.com/r/programming/comments/26m8hy/scott_meyers_dconf_2014_keynote_the_last_thing_d/
> >
> > https://news.ycombinator.com/newest (search that page, if not found
> > click "More" and search again)
> >
> > https://www.facebook.com/dlang.org/posts/855022447844771
> >
> > https://twitter.com/D_Programming/status/471330026168651777
>
> Fortunately, for the most part, I think that we've avoided the types of
> inconsistencies that Scott describes for C++, but we do definitely
have some
> of our own. The ones that come to mind at the moment are:
>
> 1. The order of the dimensions of multi-dimensional static arrays is
backwards
> in comparison to what most everyone expects.
However, those expectations are based on the inside-out syntax of C.
Naturally, wanting to be consistent, especially compared to C, D should
deviate from that syntax.
> int[4][5][6] foo;
That is sane: It is alwasy "first the type then the size":
int[1] good
Animal[2] good
Following from that rule (i.e. first type, then size), how would I have
an array of 3 elements where each element is an array of 4 elements.
Let's see... Each element is int[4]. There:
int[4]
Then, I want an array of 3 of those. There:
int[4][3] good
This is one of the commonish arguments in the D forums that I have the
strongest opinion because there is no problem with D's syntax at all. It
is consistent.
It is consistent even when indexing. The index is for the array:
int[1] a;
a[0]; // the first element of a; it is an int
int[2][3] b;
b[0]; // the first element of b; it is an int[2]
I don't see any problem at all. :)
Remembering that there is no such thing as a multi-dimensional array in
D (nor C), it just follows naturally:
b[0][1]; // the second int of the first int[2]
> is the same as
>
> int foo[6][5][4];
That's beyond ridiculous. I am glad that D avoided that problem for both
function pointers and arrays.
> and has the same dimensions as
>
> auto bar = new int[][][](6, 5, 4);
That makes perfect sense to me, because this is a function API, not D
syntax. There is no ambiguity in saying "you go deeper into the element
sizes as you provide the arguments."
Ali
More information about the Digitalmars-d-announce
mailing list