[OT] What are D's values?

jfondren julian.fondren at gmail.com
Mon Oct 4 14:30:20 UTC 2021

On Monday, 4 October 2021 at 13:23:40 UTC, Paul Backus wrote:
> One slide in his presentation contains a list of things that a 
> programming language might value:
>     Approachability   Integrity        Robustness
>     Availability      Maintainability  Safety
>     Compatibility     Measurability    Security
>     Composability     Operability      Simplicity
>     Debuggability     Performance      Stability
>     Expressiveness    Portability      Thoroughness
>     Extensibility     Resiliency       Transparency
>     Interoperability  Rigor            Velocity

The explanation for why a language might have X as its #1 value 
but then fall short on X will be that the language is pulled back 
from full-X by its other values. Someone might argue that Python 
values Expressiveness, but that its other value of 
Approachability keeps it from having proper closures.

But the actual reason that Python doesn't have proper closures is 
that Guido thinks they're weird and confusing:

>Most Python users are unfamiliar with Lisp or Scheme, so the 
>name is confusing; also, there is a widespread misunderstanding 
>that lambda can do things that a nested function can't
>I think having the two choices side-by-side just requires 
>programmers to think about making a choice that's irrelevant for 
>their program; not having the choice streamlines the thought 

Does a competing value keep Go from permitting an unused module 
import? When I looked at this and other quirks of go the language 
seemed to me like the product of Rob Pike deciding that he's had 
well enough of some specifically unpleasant experiences with code 
and was just going to make a language where they aren't possible. 
(I think he could list the names of coworkers next to features of 
the language. "And I told Jim, 'if I see any go from you it's 
going to be go *without* your habit of importing the entire 
world. You know how I know that?'")

Does a competing value keep D from supporting boolean expressions 
in version() tests, or keep D from having AST macros? It's rather 
that Walter is familiar with the hazards in those directions and 
wants to stay away from them.

So I don't think listing values is enough to describe a 
language's development. There's also the hazards that the 
language developers are especially concerned with. D probably has 
lots of design decisions that can be explained by "we're avoiding 
this bad outcome of C++". The other day on the discord it was 
mentioned that C++ will implicitly create a struct as a function 
parameter but that D doesn't because C++ does that way too much 
in practice. You could twist this specific antipathy into a value 
like 'Transparency', but that doesn't explain the design as 

And it's not as entertaining to read about. "D has BetterC 
because we value Interoperability, and because we don't value 
Integrity that much." is less interesting than "just look at this 
madness that snuck into dmd when I permitted boolean versions:". 
Both imagined quotes.

More information about the Digitalmars-d mailing list