The Case Against Autodecode
Ola Fosheim Grøstad via Digitalmars-d
digitalmars-d at puremagic.com
Sun May 15 02:48:59 PDT 2016
On Sunday, 15 May 2016 at 01:45:25 UTC, Bill Hicks wrote:
> From a technical point, D is not successful, for the most part.
> C/C++ at least can use the excuse that they were created
> during a time when we didn't have the experience and the
> knowledge that we do now.
Not really. The dominating precursor to C, BCPL was a
bootstrapping language for CPL. C was a quick hack to implement
Unix. C++ has always been viewed as a hack and was heavily
criticised since its inception as a ugly bastardized language
that got many things wrong. Reality is, current main stream
programming languages draw on theory that has been well
understood for 40+ years. There is virtually no innovation, but
a lot of repeated mistakes.
Some esoteric languages draw on more modern concepts and
innovate, but I can't think of a single mainstream language that
does that.
> If by successful you mean the size of the user base, then D
> doesn't have that either. The number of D users is most
> definitely less than 10k. The number of people who have tried
> D is no doubt greater than that, but that's the thing with D,
> it has a low retention rate, for obvious reasons.
Yes, but D can make breaking changes, something C++ cannot do.
Unfortunately there is no real willingness to clean up the
language, so D is moving way too slow to become competitive. But
that is more of a cultural issue than a language issue.
I am personally increasingly involved with C++, but
unfortunately, there is no single C++ language. The C/C++
committees have unfortunately tried to make the C-languages more
high performant and high level at the cost of correctness. So,
now you either have to do heavy code reviews or carefully select
compiler options to get a sane C++ environment.
Like, in modern C/C++ the compiler assumes that there is no
aliasing between pointers to different types. So if I cast a
scalar float pointer to a simd pointer I either have to:
1. make sure that I turn off that assumption by using the
compiler switch "-fno-strict-aliasing" and add "__restrict__"
where I know there is no aliasing, or
2. Put __may_alias__ on my simd pointers.
3. Carefully place memory barriers between pointer type casts.
4. Dig into the compiler internals to figure out what it does.
C++ is trying way too hard to become a high level language,
without the foundation to support it. This is an area where D
could do well, but it isn't doing enough to get there, neither on
the theoretical level or the implementation level.
Rust seems to try, but I don't think they will make it as they
don't seem to have a broad view of programming. Maybe someone
will build a new language over the Rust mid-level IR (MIR) that
will be successful. I'm hopeful, but hey, it won't happen in less
than 5 years.
Until then there is only three options for C++ish progamming:
C++, D and Loci. Currently C++ is the path of least resistance
(but with very high initial investment, 1+ year for an
experienced educated programmer).
So clearly a language comparable to D _could_ make headway, but
not without a philosophical change that makes it a significant
improvement over C++ and systematically adresses the C++
short-comings one by one (while retaining the application area
and basic programming model).
More information about the Digitalmars-d
mailing list