named arguments, string interpolation, please stop.
Hipreme
msnmancini at hotmail.com
Thu Jan 11 13:20:24 UTC 2024
On Thursday, 11 January 2024 at 13:07:52 UTC, deadalnix wrote:
> I have been in the D community for a very long time. I have
> seen D successfully deployed in companies, and the pain points
> associated with it. I have seen D fails to catch on in
> companies and why that is has well.
>
> Let me tell you, none of this has anything to do with feature D
> has or does not have. At large, D has more features than most
> languages.
>
> D chasing the next feature like a crack addict chase his next
> dose. With the same level of success.
>
> The main problem people face with D in the real world are
> almost exclusively of the implementation kind. The list is
> endless (and yes, there are many bugs reports about these
> things). I recently made a post about how the OOP
> implementation is extremely sub-par vs what people in OOP
> languages would expect. no change of the language required to
> fix. See here:
> https://forum.dlang.org/post/hteuczyclxajakrisxjd@forum.dlang.org
>
> But if you are not convinced, here are a few more example of
> thing being implemented wrong or existing feature not working
> right:
> - D runtime is unable to see thread started manually (for
> instance with pthread-create) leading to all kind of bizarre
> behavior.
> - Template symbols are generated as weak, which prevents
> inlining (!).
> - Pretty much no cross module inlining, making helper function
> absurdly costly.
> - scope(success) generates exception handling code.
> - D goes virtual by default for class methods, but LTO is
> unable to finalize (contrary to every other languages going
> virtual by default).
> - The GC implementation is nowhere close to where it needs to
> be.
> - in contracts are dynamically bound (and in the callee)
> instead of statically bounds and in the caller.
>
> These are just simple thing that I have on top of my mind, but
> there are a ton more. I have seen some of the above cause
> projects to fail. None of them require any significant language
> change.
>
> There is nothing features like string interpolations or named
> argument can bring to the table that could pay for the
> implementations problem of existing feature. The cost benefit
> analysis is just a big L for D: the fail to address the main
> pain points, while causing massive breakage in the tooling
> ecosystem (syntax highlighting support in 3rd party IDE, code
> formatter, etc...), and it cost real time and resource to
> upgrade these, or come at the cost of other quality of life
> stuff nullifying their benefit (for instance, the quality of
> syntax highlighting for D has degraded significantly in vim and
> sublime text over the past few years).
>
> In addition, some recent D features, such as @nogc, has been a
> productivity disaster int he wild. While the impact might not
> be felt on smaller codebases, the infectious nature of the
> feature makes large codebase significantly harder the refactor
> than they used to be.
>
> Each time we take steps in that direction, D becomes a harder
> sell.
Named arguments surely was a pretty useful feature, not for any
function, but for one which D was missing that even C had:
```c
struct A a;
a = (struct A){a: 50, b:100};
```
Before named arguments, you could only use that syntax if you
were using in the same line of declaration:
```d
///compiles
A a = {
a: 50, b: 100
};
///Does not
A a;
a = {
a: 50, b: 100
}
```
Right now, it is possible to achieve that in any place:
```d
A a;
a = A(a: 50, b: 100);
```
To me, this was a big win already for making cleaner syntax code,
specially inside configuration parts.
But I feel like obliged to completely agree with your position
and also, am waiting for all the improvements you last commented
on classes which looked like a big win with no code breakage.
Template inlining is fairly essential to D, specially because of
the Range interface nature.
More information about the Digitalmars-d
mailing list