[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
>process.
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
neatly.
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