On Tuesday, 14 February 2023 at 15:34:17 UTC, bachmeier wrote:
On Tuesday, 14 February 2023 at 10:16:47 UTC, ProtectAndHide
wrote:
In any case, there is nothing 'picky' about wanting to be able
to explicately 'declare' a member of my class type as being
private. That to me, is what a programmer should expect to be
able to do in a language that says it supports OOP.
What you are saying is that you want an implementation of a
particular language that calls itself an OOP language. [There
is a lot of controversy about the definition of
OOP](https://wiki.c2.com/?NobodyAgreesOnWhatOoIs). I do not
think the explicit ability to declare a member of a class
private in a particular way has anything to do with it. You are
certainly entitled to your opinion, but it doesn't help to say
D is not an OOP language because you don't like some of the
design decisions.
It's true that not everybody understands what OOP is.
But I think everyone would agree, that data hiding is at the core.
First, I'm not advocating for OOP, or against it.
It's just a tool that's suitable in some scenarios, and not it
others.
I'm also not a OOP purist.
Now with that out of the way....
D claims to support OOP. Put that to the test. Because there is a
difference between programming with modules ('Decide which
modules you want and partition the program so that data is hidden
in modules.') and programming with 'user-defined types' ('Decide
which types you want and provide a full set of operations for
each type').
Data hiding is at the core of using modules.
It's also at the core of using types.
I refer interested people to:
"Most, but not all, modules are better expressed as user defined
types." -
What is 'Object-Oriented Programming'? (1991 revised version)
Bjarne Stroustrup
https://www.stroustrup.com/whatis.pdf