"Competitive Advantage with D" is one of the keynotes at C++Now 2017
H. S. Teoh via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Fri Apr 28 15:11:30 PDT 2017
On Fri, Apr 28, 2017 at 05:11:29PM -0400, Nick Sabalausky (Abscissa) via Digitalmars-d-announce wrote:
> On 04/28/2017 04:26 PM, Atila Neves wrote:
> > The other day I was reminded that in C++ land one has to manually
> > write `operator<<` to print things out and `operator==` to compare
> > things.
Not to mention you have to overload operator<, operator!=, operator==,
operator>, operator<=, *and* operator>= in order to get the right
results in all cases.
In D, you have to overload opEquals and opCmp. Hmm, I wonder why I
enjoy programming in D more than C++...
> What, seriously?!?
>
> That's the thing about C++: The right way is the obscure way, and the
> straightforward way is the wrong way. And yesterday's right way is
> today's wrong way. And apparently (it would seem), the only way NOT to
> completely fuck *everything* up is to become an expert on every corner
> of the language, and STAY an expert on all the latest changes. In the
> immortal words (and voice) of Duke Nukem: "What a mess!"
Yep, this always reminds me of:
https://bartoszmilewski.com/2013/09/19/edward-chands/
> Seriously, I don't care about the political incorrectness of bashing
> or comparing to other languages, this right here is and always was D's
> killer feature, the whole reason I got into it in the first place and
> have stayed: D takes all the current (and former!) application domains
> of C/C++, and brings to it basic programmer sanity. 'Nuff said.
D is not without its own flaws and WAT-worthy dark corners, mind you,
but in spite it its warts, I still prefer D any day over the masochistic
labyrinth of 99 wrong ways to do the same thing (and only 1 "right" way
-- until next year) that is C++.
The latest WAT I found in D is this one, see if you can figure it out:
char ch;
wchar wch;
dchar dch;
pragma(msg, typeof(true ? ch : ch)); // char - OK
pragma(msg, typeof(true ? ch : wch)); // int - WAT?
pragma(msg, typeof(true ? wch : wch)); // wchar - OK
pragma(msg, typeof(true ? wch : dch)); // uint - WAT?
pragma(msg, typeof(true ? dch : dch)); // dchar - OK
How an alternation between two character types ends up being int is
beyond me, but even more inscrutible is why ch : wch produces int but
wch : dch produces uint.
See: https://issues.dlang.org/show_bug.cgi?id=17141
Unfortunately, my dmd-fu isn't up to snuff so my hamfisted PR to fix
this problem didn't get very far: it broke a ton of stuff, which is a
big no-no, oh noes, we cannot afford to break code, even though
basically every dmd release breaks code! Oh well.
T
--
Those who've learned LaTeX swear by it. Those who are learning LaTeX swear at it. -- Pete Bleackley
More information about the Digitalmars-d-announce
mailing list