On Wednesday, 29 October 2014 at 08:55:39 UTC, ponce wrote:
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.
On Ubisoft's presentation at CppCon, Nicolas Fleury even mentions
that they have written tools to generate code, instead of relying
on templates due to error messages and compilation time.
--
Paulo