On Monday, 13 June 2022 at 17:08:55 UTC, Ali Çehreli wrote:
>Then I thought more about what encapsulation actually means. Then I realized encapsulation has nothing to do with access control.
How did you reach that conclusion?
There are at least two important aspects of encapsulation in components: information hiding and access control.
Information hiding has to do with preventing the user from making assumptions about how something works beyond what is documented.
Access control has to do with reducing the number of failure points that has to be inspected in more complex software.
The latter aspect is quite important in complicated low level scenarios, like performance oriented concurrency code, as well as complex setting with many moving parts at any level (also at the cloud level).
In Python the latter is not so critical as you typically don't care too much about performance or concurrency and have many opportunities to avoid complexity.
Maybe the typical usage of D falls somewhere between Python and C++. Whether something is ok or not depends on the use case…
The key question is: what usage scenario is D trying to be best for? Answer that, then we can discuss concrete features. Without an answer to that question discussions will either be personal or abstract.