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.

Reply via email to