DIP27 available for destruction
Dmitry Olshansky
dmitry.olsh at gmail.com
Tue Feb 26 21:51:55 PST 2013
27-Feb-2013 09:34, kenji hara пишет:
> 2013/2/27 deadalnix <deadalnix at gmail.com <mailto:deadalnix at gmail.com>>
> >
> > On Wednesday, 27 February 2013 at 03:46:44 UTC, Andrei Alexandrescu
> wrote:
> >>
> >> On 2/26/13 10:33 PM, kenji hara wrote:
> >>>
> >>> 2013/2/27 Jonathan M Davis <jmdavisProg at gmx.com
> <mailto:jmdavisProg at gmx.com>
> >>> <mailto:jmdavisProg at gmx.com <mailto:jmdavisProg at gmx.com>>>
> >>>
> >>> I believe that both Walter and Andrei have said on multiple
> >>> occasions that one
> >>> of C's big mistakes was conflating function names with their
> >>> addresses, and
> >>> this DIP appears to be trying to do exactly that. And I honestly
> >>> don't see
> >>> what it buys us. It just makes the situation with parenless function
> >>> calls
> >>> worse. At least right now, it's clear when you're dealing with a
> >>> function
> >>> pointer or a parenless function call. With this DIP, it wouldn't be.
> >>>
> >>>
> >>> I agree with Jonathan. DIP27 is a recurrence of C's mistake.
> >>> It would remove a language future, and breaking much existing code, and
> >>> then introduces nothing. Certainly compiler implementation may be
> >>> simplified a little by doing it, however it is too small benefit than
> >>> the D world destruction.
> >>>
> >>> Kenji Hara
> >>
> >>
> >> Agreed. I think it's safe to close it.
> >>
> >> Andrei
> >
> >
> > Andrei, Kenji and Jonathan, can you explain what error of C did this
> DIP reproduce and why it is an error ?
>
> The mistake in C is mixing of function name and function address.
> At least there is one ambiguity which appearance and meaning does not
> correspond one-to-one.
>
And what is the advantage of plain function name over just _always_
having a (constant) pointer to it ?
Since a compiler can inline any "call by pointer" as long as it knows
it's a constant (like manifest constant in this DIP) performance and
codegen isn't an issue.
I'd say the mistake in C is to:
a) introduce nebulous type that's not expressible (plain function name).
b) make things subtly different for func and &func, and let the letter
be done under the covers sometimes
Killing both of these is an improvement.
> In current D, the ambiguity is _already_ resolved - if you want to
> function address, use & operator.
>
> As far as I see, DIP27 will overturn the chess board, remove property
> feature, change the meaning of 'foo', deprecate '&foo', and finally add
> nothing for the language users.
>
--
Dmitry Olshansky
More information about the Digitalmars-d
mailing list