[OT] What are D's values?

Arjan arjan at ask.me.to
Fri Oct 8 09:53:50 UTC 2021

On Monday, 4 October 2021 at 13:23:40 UTC, Paul Backus wrote:
> In ["Rust and Other Interesting Things"][1], Bryan Cantrill 
> talks about the importance of a programming language's *values*.
>     Approachability   Integrity        Robustness
>     Availability      Maintainability  Safety
>     Compatibility     Measurability    Security
>     Composability     Operability      Simplicity
>     Debuggability     Performance      Stability
>     Expressiveness    Portability      Thoroughness
>     Extensibility     Resiliency       Transparency
>     Interoperability  Rigor            Velocity
> I thought it might be fun to ask the D community: **which of 
> the above values do you think are the most important to D? 
> Choose no more than 5, and reply with your answer!**

 From my experience:

Use case: replacing 2 executables with one written in D in a 
system consisting of multiple executables all written in C++ 
using various libraries and a proprietary bus system originally 
designed and build in 2004.

**Approachability + Expressiveness**: almost without any friction 
to get started in D coming from more than 20 years primarily C++ 
and also C C# python javascript. The language feels familiar and 
the code written seems to be better at expressing intend than any 
of the other languages I've used. More succinct code, less 
comments needed for 'explaining'.

**Composability + Interoperability**: The language and its 
facilities made it very easy to plug and plump together the 
solution based on various D C++ and C components. Exchanging one 
implementation with another approach went very smooth in the D 
based code.

**Stability + Safety**: Unit test in D are godsend, it saved me 
from various logic errors/misses in edge cases. The compiler 
(language) saved me several times by erroring out helping and 
telling me what is unsafe.

In general my experience is once a D compiler produces a binary, 
it almost never crashes due to stupid mistakes which happens in 
C++ quite often like out of bound access, not proper initialized 
objects null pointer derefs etc.
Also I had the impression the functional completeness was much 
quicker reached, because there was almost no time needed and so 
no distraction from actual problem solving to get the darn thing 
to run.

Another observation I made is: the final solution barely uses 
classes. D module system as unit of encapsulation seems perfectly 
fit for purpose.

More information about the Digitalmars-d mailing list