Worst ideas/features in programming languages?
FeepingCreature
feepingcreature at gmail.com
Mon Oct 11 16:12:59 UTC 2021
On Monday, 11 October 2021 at 15:59:10 UTC, Atila Neves wrote:
> I'm brainstorming about what I'll talk about at DConf, and
> during a conversation with Walter I thought it might be cool to
> talk about:
>
> * Worst features implemented in a non-toy language
> * Worst features (in your opinion) in D
> * Features you'd like to see in D
>
> Ideas? Examples?
>
> Thanks!
Objectively worst feature: mutability/referenceability by
default. It takes away *so* much optimization potential and
introduces so many opportunities for state changes. `var = value`
should be opt-in. Just as importantly, `&var` should be opt-in.
My D hobbyhorse, of course, is `__traits(compiles)` (see my last
DConf talk) and the SFINAE-like mess that it enables but doesn't
give us the tools to address. "Why did the template not
instantiate?" Who knows~ That syntax error got suppressed five
instantiations down.
And there's obvious stuff like the half-baked `immutable` that
works in about half the stdlib and a smaller fraction of
libraries. D2 const was a mistake, cmv. (Nonreferenceability
allows safe reassignment of immutable struct member fields, btw!)
But I'm actually convinced that the worst thing is the lack of
implicit construction for sumtypes. Because when you try to
actually use sumtypes, you end up with stuff like
`Nullable!MySumType(MySumType(MemberType("Hello World")))`. *All
over the place.* And it adds no value! The whole point of
`MySumType` is that it's "one of n types, including
`MemberType`". Writing out the full type of a nested container
type like that adds nothing of value.
Sumtypes should be built-in, and they should implicitly construct
from its member types.
PS: But staring at this post interface, what I want the most
*right now* - a "Discard all drafts" button. :)
More information about the Digitalmars-d
mailing list