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