Flag proposal
Jonathan M Davis
jmdavisProg at gmx.com
Fri Jun 10 17:09:22 PDT 2011
On 2011-06-10 16:46, Andrei Alexandrescu wrote:
> On 6/10/11 6:26 PM, bearophile wrote:
> > Andrei:
> >> That's good evidence that introducing named parameters would be
> >> quite involved.
> >
> > It's also good evidence that Martin Odersky, one of the most
> > intelligent language designers alive today, is willing to do a lot to
> > support named arguments in his language :-)
>
> I have all respect for Odersky's competence, but that is beside the
> point. Design decisions are always taken in a context, and it's not
> impossible he would've had decided otherwise in a different context.
>
> D is a rich, powerful language _now_. It has classic features present in
> many languages, and a few features that are not present in many. Their
> full combination is not present in any other language, and creates a
> unique context.
>
> We've been historically trigger happy about discussing adding features
> in this group. This is not unique to D - all languages underwent the
> same process. But at this point it is a necessity that we start
> migrating our mindset from an endless wishlist - towards finding
> ingenious solutions within the language. Again, this is the case for
> every single language there is. Combining existing features towards new
> ends is in some ways more difficult than language design because you
> play within a confined ground, and I am a bit disappointed that a few
> posters have shown only contempt for such an effort.
The Herb Sutter interview that you recently posted a link to has an
interesting point of view on that. One of the reasons that lambdas were added
to C++0x was because Boost had shown how close you could get there using the
language as it was and that it just wasn't good enough. Lambdas were added to
the language precisely because they couldn't be done reasonably without
additional language supported. On the other hand, other stuff that they added
which Boost had tried to do - such as shared_ptr - were added as library
solutions, because they worked as library solutions.
As you've said, we've reached the point that D is powerful enough and
complicated enough that we should be first trying to see how well we can solve
problems using the language itself rather than adding new features to it. As
we do that, we should be able to see what is reasonably feasible within the
language as it is and what just doesn't work. As we find things that just
don't work but which we really want to be able to do, we can look at adding
features to the language to deal with them, but we should definitely be
looking at using the language as it is first.
In this particular case, while named arguments might arguably be nice, they're
"nice to have," not a necessity. The question is how close we can get to
having reasonable yes/no enums like we've been trying to do but without
excessive boilerplate code. We may decide to add named arguments later, but D
is really at the point that its current features need to be completely ironed
out before we look at adding additional features that we don't really need.
I think that there _are_ features that we need to look at adding in some form
or other (such as conditional attributes) in order to solve current problems
in the language (such as the inability to use many attributes - such as pure
and @safe - with templates without excessive duplication of code). But if a
feature does not solve a pressing problem and/or can be reasonably solved by
improving Phobos, then we should be improving Phobos.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list