What are the worst parts of D?

Walter Bright via Digitalmars-d digitalmars-d at puremagic.com
Tue Sep 23 23:54:32 PDT 2014


On 9/23/2014 11:20 PM, Jacob Carlborg wrote:
> On 24/09/14 07:37, Walter Bright wrote:
>> So help out!
> You always say we should help out instead of complaining.

That's right. Complaining does nothing.


> But where are all the users that want C++ support. Let them implement it instead and lets us focus on
> actual D users we have now.

I was there at the C++ revolution (and it was a revolution) almost at the 
beginning. And in fact, a reasonable case could be made that I caused the 
success of C++ by providing an inexpensive C++ compiler on the most popular (by 
far) platform at the right moment.

What sold C++ was you could "ease" on into it because it would compile your 
existing C code.

Later on, other C++ compilers came out. I'd talk to my sales staff at Zortech, 
asking them how they sold Zortech C++. What was the line that sold the customer. 
They told me "Zortech C++ is the only C++ compiler that can generate 16 bit 
Windows code. End of story. Sold!"

I.e. none of the features of ZTC++ mattered, except one killer feature that 
nobody else had, and that nobody else even had a story for.

Now, consider interfacing with existing C++ code. Which top 10 Tiobe languages can?

C: no
Java: no
Objective C: sort of 
http://philjordan.eu/article/strategies-for-using-c++-in-objective-c-projects
C++: yes
C#: no
Basic: no
PHP: no
Python: no
Javascript: no
Transact-SQL: no

and:

Go: no
Rust: no

The ones marked "no" have no plan, no story, no nothing.

This means if we have some level of C++ interop, we have a killer feature. If 
users have a "must have" C++ library, they can hook up to it. Can they use other 
languages? Nope. They have to wrap it with a C interface, or give up. Wrapping 
with a C interface tends to fall apart when any C++ templates are involved.

C++ libraries are currently a language "lock in" to C++. There are no options.

I've often heard from people that they'd like to try D, but it's pointless 
because they are not going to rewrite their C++ libraries.

Case in point: last fall Adam Wilson started on Aurora, a C++ Cinder clone. I 
had thought he could simply wrap to the C++ library. No way. It was just 
unworkable, and Cinder was too big to rewrite. Aurora was abandoned. If we could 
have interfaced to it, things would have been much different.

This story is not unusual.


That said, C++ interop is never going to be easy for users. We're just trying to 
make it possible for a savvy and determined user. And he'll have to be flexible 
on both the C++ side and the D side.



More information about the Digitalmars-d mailing list