Why I (Still) Won't Use D

Sean Kelly sean at invisibleduck.org
Fri Mar 28 15:32:58 PDT 2008


== Quote from Tim Burrell (tim at timburrell.net)'s article
> Sean Kelly wrote:
> > Hogwash.  C++ has no in-language support for multithreading at all.  OpenMP
> > is simply a library built on top of C++.  It doesn't count.  One could create the
> > exact same thing for D.  Heck, D already has futures, DSCP, a good collection
> > of synchronization primitives (tango.core.sync), etc.
> Since you're allowing Tango library features you might as well allow
> Boost to be included with C++.  Even if you don't, really what I'm
> intending to compare is a typical usage scenario for parallel
> programming in D and C++.
> With C++ you've got scoped mutexes and every multithreading thing you'd
> need (all cross platform) via Boost... PLUS you've got OpenMP support
> which is NOT just a simple library built on top of C++.
> OpenMP does include a library API, yes, but mostly it's compiler
> directives... this allows the compiler to optimize certain types of
> operations based on static analysis, architecture features, etc...

So you're saying that OpenMP is both a library and a language extension
(using double-lowercase-prefixed keyword I assume, for coformance)?
That's fine, but I'm not sure I see how this will change with C++ 0x.

> something that'll be much harder to do via a simple library
> implementation.  This type of stuff really needs to be in the compiler,
> and that's precisely where it is with OpenMP.  Unless D adopts a similar
> strategy it will never be able to compete.
> At any rate, I didn't want this to be a C++ is better than D flame war
> kind of thing, I just wanted to point out that unless D gets some really
> good parallel support (and soon!) it's not going to continue to be as
> interesting as it currently is!

I agree with that.

> >> When C++0x comes out, combined with OpenMP, D won't even be close to
> >> being a viable language for parallel development... unless of course gdc
> >> can leverage some of gcc's (>= 4.2) OpenMP support maybe?
> >
> > I disagree.  D already has basically everything C++ 0x will have in terms of
> > multithreaded support and it has them now.  The only advantage C++ will
> > have is a well-defined multithreaded memory model, and by the time anyone
> > actually supports it for C++ 0x I suspect we'll have something equivalent in
> > D.
> OpenMP, OpenMP, OpenMP.  D won't have OpenMP (or something like it).
> That's what I want to hit home.  Yes you're absolutely correct that D
> already has everything C++0x will have in terms of native
> multithreading, and while those things are a necessity they aren't
> getting us any closer to a good model for parallel programming.
> OpenMP isn't the be-all / end-all, there's tons of other interesting
> stuff out there (join-calculus comes to mind), but it's a good start,
> and without something like it (in terms of compiler support) D isn't
> even a contender when it comes to parallel development.

Thanks for clearing this up.


Sean



More information about the Digitalmars-d mailing list