I think the presentation exposes the big picture: D is a <i>very</i> loaded language. It tries to serve every possible exotic need imaginable. Probably not as much as C++ but that’s a committe-designed language, it doesn’t count.<p>The feature bloat makes it very hard to learn D, let alone being an expert on it. I think it’s telling why its creator focuses on individual features to assess its success. Now, all those missed features either have to be maintained or carefully removed which is a lot of work and might actually break existing code.<p>I like D because of its vision: C++ for humans. It fails on that vision simply because it has become a gigantic incoherent product like a research project.<p>It probably needed a harsher approach to feature requests to make sure the language stayed on the vision. Now it’s a programmer’s dream and a programmer’s nightmare at the same time.<p>I think Go, for instance, has made a better decision to stay barebones.<p>I see that the creator intends to include Rust’s borrow-checking semantics which reminds me that Rust is probably what D should have been in all aspects.
Looks like this is slides from a talk Walter Bright gave which has been posted to YouTube [1]. It helps with some missing context.<p>For example, I wondered why in the slides he felt implementing contract programming in D was a miss; it seemed like a strong selling point for the language. According to the talk (around 1:34:30), however, he felt that contract programming was relatively unpopular/unused in D and that "assert" covered most of the use cases for it.<p>[1] <a href="https://www.youtube.com/watch?v=p22MM1wc7xQ" rel="nofollow">https://www.youtube.com/watch?v=p22MM1wc7xQ</a>
I use binary literals all the time, for what it's worth, in code involving hardware interfacing. Only complaint with C++14's implementation is that they didn't allow underscores to be inserted for clarity, a la Verilog.<p>Those underscores turn out to be a <i>really</i> big deal, and leaving them out of C++ was a massive mistake. Nobody wants to read constants like 00110100101101011011011101011110, but 00110100_10110101_10110111_01011110 is fine. An implementation of binary constants that doesn't allow this is going to be less popular.
Interesting that garbage collection is listed as a miss due to latency, and Go has gotten popular with garbage collection with an emphasis on low latency.
What I find D interesting is that it is a really good fit for scientific programming. Maybe Julia is an answer, but in terms of producing interoperable code, it is the holly Grail. And people can port their Java code mostly painlessly. Science is the killer app of D where GC is a blessing in disguise.
Some of the slides are contradictory: miss lack of safety by default and miss focus on GC.
Well if you want safety by default, then either you use a GC or you're a Rust/cyclone clone, I don't see a third way..