Worst ideas/features in programming languages?

JN 666total at wp.pl
Thu Oct 14 11:06:00 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!

Worst features in a non-toy language. This is going to be 
controversial, but templates. They start innocent enough, just a 
way for functions to work with generic arguments. But then you 
build templates upon templates, and suddenly IDEs get lost, 
auto-refactoring stops becoming a possibility because most code 
doesn't exist yet, and you have to read documentation to 
understand what the return types and input types are of method T 
doStuff(T, U)(T val, U min, U max);


I wouldn't say worst, but I feel like D has many features which 
just don't get much use. For example contracts. Sure, they sound 
nice in principle, and I am sure there are some users of that 
feature. There's nothing wrong with that, but every feature adds 
more complexity and bugs to fix.

Features I'd like to see in D? Named arguments and 
struct/associative array initializers working outside of 
initialization, e.g. as function arguments.

Some syntactic sugar I like from other languages:

Named constructors as a replacement for factory static methods:

```d
class Angle {
     this.fromDegrees(float deg) { ... }
     this.fromRadians(float rad) { ... }
}

Angle a = new Angle.fromDegrees(90.0f);
```

Initializer fields:

```d
class Person
{
     string firstName, lastName;
     int age;

     this(this.firstName, this.lastName, this.age);
}
Person p = new Person("Michael", "Schumacher", 52);
```


More information about the Digitalmars-d mailing list