On Tuesday, 20 March 2012 at 19:02:16 UTC, Andrei Alexandrescu wrote:

There are a few features of D that turned out to be successful, in spite of them being seemingly unimportant or diverging from related consecrated approaches.

What are your faves? I have a few in mind, but wouldn't want to influence answers.

I know people have said all of these already, but I still want to vote for them, because they're so useful, and I routinely find myself wishing I had
them in other languages.

    1. Array slices. These allow for a lot of gains from structure
sharing and "flyweighting"; safe structure sharing is one of the potential big wins from GC, but in most languages with GC it's tricky to share structure that's in arrays, leading to a lot of
       extra space overhead for pointers and worse cache behavior
       due to excessive scattering of objects around the heap.

2. Scope guard. At first I thought it was a neat little curiosity, but it makes it so easy to write and (more importantly) *read* error handling code that, whenever I use D, I find myself thinking about and dealing with potential failure modes that I would gloss
       over in another language.

3. Template syntax. When I first saw that it used an infix '!' of all things, and that the parentheses were optional, I thought it was the dumbest syntax ever. In practice, though, it's so much better than
       C++'s <> disaster that it's just not funny.

A bunch of other features, like type inference, I totally expected to be extremely useful. The way auto lets you work with objects that have unutterable types is pretty cool, though I picked that up from the C++11 materials I've seen. They really need the feature to make the new lambdas
work.

Cheers,
Pillsy

Reply via email to