`restricted` member variables

forkit forkit at gmail.com
Thu Jun 23 10:34:53 UTC 2022


On Thursday, 23 June 2022 at 10:18:29 UTC, deadalnix wrote:
>
> ..
> Then you see how providing more has a cost, at least and 
> `implementation/design/educational` one. So there is a point at 
> wish adding that expressivness is counter productive, it is at 
> the point when the value of the extra things that you can 
> express is lower than the cost incurred by implementing the 
> change required for that extra expressivness to be possible.
>
> There are other costs:
>  - Tooling will not support that feature initially. D tends to 
> be cavalier with that, and as a result, has worse tooling than 
> pretty much any other language out there.
>  - There are now many ways to express the same thing (put 
> things in different module and use `private` or put thing in 
> the same module and use `private(this)`). This has an adverse 
> effect on readability by providing ways to subvert the 
> expectations of the reader.
>
> I'm also convinced that there are costs I cannot really 
> pinpoint, but that are real. The existing landscape clearly 
> demonstrate this. For instance, while Java provides class level 
> visibility, it is actually commonplace to have one Java class 
> per file in numerous projects.  Amongst the top languages, more 
> than half have little to no visibility constraints, and these 
> who do like Java tend to have idioms to map visibility with 
> files.
>
> There is something there that remains under explored.

There's always a cost in giving people choice.

In C++, C#, Java, Swift, .... I have this choice, and my choice 
is to use it, and my software engineering is better because i 
make that choice. If it was useless, i wouldn't use it.

In D, I don't have that choice.

Nor do the millions of C++, C#, Java and Swift programmers.

I mean this is something you need to take seriously.

This is not an argument over bracing preferences.

This is an argument for, a programming language to provide proper 
support for strongly typed abstract objects. That's all there is 
to this. All the other nonsense in these threads, is just 
distracting noise to confuse people, and to ensure they never get 
to make that choice, in D.



More information about the Digitalmars-d mailing list