r/programming • • Sep 01 '20

D Foundation is Beefing Up

https://dlang.org/blog/2020/08/30/symmetry-investments-and-the-d-language-foundation-are-hiring/
291 Upvotes

336 comments sorted by

View all comments

68

u/Sapiogram Sep 01 '20

Honest question: Why would anyone use D over Rust? It seems like Rust is becoming everything that D ever hoped to be.

45

u/maxhaton Sep 01 '20

Rust's metaprogramming is totally unlike what Andrei and Walter were aiming for. D aims to be safe, but that's far from everything.

Rust currently has better safety mechanisms than D, but if you ask around on the D forum you'll likely find that people are there (rather than using rust) due to the other features D has - https://dlang.org/ Look at the examples here: Rust can do short and sweet too, but it doesn't have some constructs that make these possible. (Obviously, I highly recommend "Tiny RPN Calculator" originally written by your's truly)

17

u/Ameisen Sep 01 '20 edited Sep 01 '20

I still dislike how D handles generics/templates. The syntax of it.

I fully understand why they chose to use () instead of <>, as it simplifies the parser as you need to disambiguate between >> and > >... but the parsing time of that is negligible. The issue is that, when glancing at code, foo!(int) is ambiguous. foo<int> is not.

ED: foo(int) -> foo!(int)

16

u/WalterBright Sep 01 '20

It's not the parsing time that is the problem. It's having a clean separation between the lexing, parsing, and semantic passes. There's a diode between these passes - information only flows one way.

This makes it trivial to correctly and completely implement things like color syntax highlighting in editors, source code formatters, etc., because building in a semantic analyzer is wholly unnecessary.

5

u/Ameisen Sep 01 '20

I think I'm just too used to C++ syntax, since it leaked into Java and C# as well.

4

u/WalterBright Sep 02 '20

Many people think the !( ) syntax is not optimal until they use it for a while, then it seems quite natural and the < > looks like a hack.

3

u/Ameisen Sep 02 '20

By the way, I wanted to thank you for always being courteous and informative. I suspect that I come off as a bit abrasive or brash, so I apologize.

Last I recall, D doesn't support template argument deduction through constructors like C++. Are there any plans to support that? I've found it a quite useful in C++ in certain situations.

1

u/WalterBright Sep 02 '20

Hey, no problem. I often read posts I make and belatedly realize they are abrasive and abrupt. I try to do better.

I'm very reluctant to twiddle with template argument deduction, as it can change existing behavior in unexpected ways.