On Wednesday, 29 October 2014 at 04:37:47 UTC, Walter Bright
wrote:
http://www.codergears.com/Blog/?p=421
This is interesting as it relates to D's choices:
1. No common build system ,Visual Studio, make and CMake are
the most widely used
D - no change.
2. Namesapces not widely used
D - forces use of namespaces, i.e. modules
3. Inheritance and polymorphism are widely used
It's my impression that D uses a lot more parametric
polymorphism (i.e. templates) than virtual inheritance.
4. Design Patterns not widely used
Don't know if D changes that.
5. No common frameworks for the GUI, database access and
logging needs.
Same for D, though std.experimental.logger may change that.
6. Smart pointers not enough used
The general problem with SP is you have to proactively use
them, they are not the default. D's gc pointers are the default.
7. STL widely used , not boost
Phobos' ranges appear to be widely used.
8. Exceptions not widely used
Exceptions are embraced in D, perhaps even excessively :-)
9. For many projects two or more ways used to represent a
string class
D's strings are built-in to the language, which is a huge win
for consistency. Even modern C++ suffers from two distinct
string types.
10. New created projects use more the new C++ standards
As they should.
The sad reality of C++ programming is that you can't use most
things, and people might resist basic stuff like exceptions and
smart pointers on unfamiliarity alone. Some small things like the
lack of std.path in the STL cause inordinate amount of damage.