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

Reply via email to