Does D have too many features?

Paulo Pinto pjmlp at progtools.org
Sat Apr 28 23:31:07 PDT 2012


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.

- 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

- __traits should be given a proper name
   It looks out of place in regard with the rest of the language, by 
making use of the underscores

- AA should be a library type
   I am on the C++ and Scala camp where the language should be 
extendable via the library

- misuse of enum to declare constants
   I prefer that the use of const would be possible

- 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

- unit tests
   I would rather have them as a library.

While it is fun to discuss what we like and not like, I vote that 
priority should be given to make the language stable and have better 
tooling.

We need to have safer languages with native code generation for systems 
programming in the mainstream OS, that take us away from the buffer 
overflow exploits and dagling pointers legacy that C and C++ brought 
upon us.

Someone that does not know D and sees the amount of bugs still existing,
or this type of discussions, will run away to Go or some future version 
of C#/Spec#/Bartok, or back to whatever he/she was using before.

I don't agree D is complex, any language that aims to be used in large
application domains, needs a certain set of abstractions. If it does not
support them, it is condemmend to keep getting new features until it 
turns in what the language designers were fighting against.

--
Paulo


More information about the Digitalmars-d mailing list