On Wednesday, 30 September 2015 at 22:51:24 UTC, H. S. Teoh wrote:
On Wed, Sep 30, 2015 at 10:32:16AM -0400, Andrei Alexandrescu
[...]
I watched most of the video (mainly the first half where he
goes through the C++ version of the code), and I have to
confess I couldn't help noticing just how ugly the C++ syntax
is.
This is a key reason I am using D. I really like C++14+boost but
that syntax brings me back to D every time.
I mean, overloading operator|() for chaining, seriously? UFCS
is
superior any day, IMNSHO.
I seem to recall that in a previous on ranges Niebler said that
operator|() was simply available and had a vague notion of
chaining thanks to *nix shell. He went on to say it would
probably need to change to get through the ISO committee.
I hope it does. If the current plans for overloading operator.()
get up I wonder how well it would fit as a replacement operator.
And overloading operator%() for string interpolation, ugh.
(Though this
one seems to be a Boost thing, not specific to the ranges
proposal.)
This is also a Python thing so it's quite prevelant in the wild.
I find D's ~ much nicer, although minutely slower to type than %
And this is on top of the usual ugliness of C++ template
syntax. Not to mention the RANGE_FOREACH macro (I assume it's a
macro), where D's foreach has supported natively for years now.
(D has seriously ruined my life; I simply can't bring myself
to go back to C++ anymore. At least not voluntarily.)
Also, this seems to confirm that C++ is gradually falling to
the position where it's playing catch-up with respect to
innovations in newer languages like D and Rust. The fact that
ranges are being proposed for the C++ standard library is a big
endorsement of D, IMO.
C++ has been playing catchup for the last 10 yrs and it's been an
amazing transition for the language.
If ranges are accepted into ISO C++ I can't imagine it would be
long before for(auto e:range).
[snip]
One great action item is to backport some of Eric's ideas to
the D example. Currently Eric's final code looks nicer than
the D code. -- Andrei
Do you have a list of ideas that should be backported?
I really liked the namespaces view:: and action:: because it is
immediately clear just reading the code what was lazy and what
was not.
bye,
lobo