Am 29.04.2012 10:42, schrieb Timon Gehr:
On 04/29/2012 08:31 AM, Paulo Pinto wrote:
Am 28.04.2012 20:47, schrieb Walter Bright:
Andrei and I had a fun discussion last night about this question. The
idea was which features in D are redundant and/or do not add significant
value?
A couple already agreed upon ones are typedef and the cfloat, cdouble
and creal types.
What's your list?
- two different ways of creating function pointers is confusing
(function and delegate)
I understand the reasoning, but makes one think all the time when
to use what.
'delegate' is more powerful, 'function' is more efficient. If you don't
want to think about it, just use 'delegate'. I'd rather see 'function'
implicitly convert to 'delegate' than to have it gone. D can be used for
systems programming after all!
That is what I mean. The compiler could make the distinction between
function and delegate itself.
I am not arguing to remove the feature, rather to have the compiler
check it for me. Surely it can see if I am passing the delegate to D
code or extern C/C++ code and act accordingly.
- sometimes D code looks like template and mixins gone mad
While I do appreciate the power, it can be quite confusing to try
to understand what the code does. Specially with the lack of support
in mixin's debugging
pragma(msg, ...) ?
Too low level?
- misuse of enum to declare constants
I prefer that the use of const would be possible
const infects the type and const-qualified data can exist at runtime, so
it is not possible.
Yeah, but it brings me back bad memories from the early days, when C++
compilers did not fully support C++98, and we had to resort to the enum
trick to create constants.
- conditional compilation is hard to follow without syntax highlighting
Other languages with conditional compilation make it easier to follow
what is what. e.g. Turbo Pascal/Delphi, C#, Modula-3, Ada
That is not a language issue.
How come?
In the languages mentioned above, the conditional compilation stands out
in clear text that is doing something at compile time.
In D you need to be aware which statements are compile time and which
are not.
Not a big deal to argue about, but easy trap for D newbies.
--
Paulo