D isn't fully backwards compatible, which makes converting code to D troublesome. Without libraries and backwards compatibility, few large application developers will embrace it. As a result, general support for it will be limited. When the support is limited, compilers and other tools will not be as up to date, tested and optimized as C++ compilers. The percentages I gave above aren't scientifically proven in any way, however.
The second point is that the language design is still as unstructured and sometimes ambiguous as C++, while removing a lot of useful features and adding a few new ones, most of which aren't better than those that were removed. It's more like "alternate C++", than a new, higher-level language "D", IMO. For instance they remove preprocessor, multiple inheritance, include files, non-virtual member functions and bit fields. While these may not be used often, whenever there's need for them they're really handy. Removing multiple inheritance makes it as inflexible as Java for object oriented applications. Without bit fields, you can't as easily program hardware interface code and communicate with ports etc. Removing the preprocessor and conditional compilation makes D programs difficult to port between platforms, and for handling debug and release versions of the code.
Bookmarks