On 12/01/2024 09:17 AM, wij wrote:
There are several understandings:
https://www.quora.com/As-an-experienced-OOP-programmer-in-your-opinion-whats-the-biggest-problem-of-OOP-object-oriented-programming
>
...
OO can have many meaning. I took OO to mean object, the basic entity of the
programming model and the operation of the object. The concept, as foundmental,
has to be solid, practical and easily usable. Otherwise, more codes and efforts
will be needed latter to fix it, making the original goal ,practically, a lie.
IOW, (nearly) a flawless model is all the basics. ...
https://sourceforge.net/projects/cscall/files/MisFiles/ClassGuidelines.txt/download
>
From my view, programming language has to provide a model, so that programmers
know what they are dealing with, to solve the problem (recent C++ seems solving
just syntax problems).
In (my) OOP, 'portability' (or reusable) is first achieved by making the
probramming object compatible (form platform to platfrom or from time to time
in the same platform, but libwy only considers linux, but the idea should be
generally applicable), i.e. like pod types, structures, union may not be portable.
>
Programming object or 'concept' are 'better' represented/wrapped by class (keyword)
All should be simple, I don't know how to make the idea of 'object' more simpler.
See the guidelines.
>
OTOH, in C/C++, every memory objects/function has address, the language cannot
pretend it is not actually dealing with a large array of raw 'bytes' and its
restrictions (and restrict by Turing Machine). I think that is generally where
many programming problems from. And, understanding C or assembly is nearly a must
before understanding C++, otherwise, no real meaning, simply put.
>
>
An object is so abstract that it's sort of like that
it's just a thing.
Now, arrays and associative arrays, as after values
or value types, then with regards to union and layout,
start making for structured programming, then there's
types, about type and category theory, then about a
very usual description of has-a and is-a, and the
associated methods on objects, which are implemented
as static functions with always an implicit parameter
of the instance, vis-a-vis member functions and
statics and locals and thread-locals, according to
scope, then about namespacing, the names or structures
in structured programming, that "object-oriented
programming" is a great idea, with the above as rather
de facto bog-standard, then about mixins and friends
and otherwise about collaboration and interaction,
object models and models of object models.
Then, it's often that the routines as they may be,
where object-oriented usually also means procedural,
with regards to routines and functions and other
notions that differentiate digital-signal-processors
and event-based or functional programming, as they
may be, from "object-oriented programming as
class structs", make a "surface", that the API
as what's actually employed is sort of its
"contact surface", then with regards to ideas
in meta-programming like the "dynamic", with
regards to what usually otherwise is arrived
at the "static".
So, scope and statics has object-oriented programming
is just namespaces and names, according to conventions,
of the arguments what make parameters the calling conventions,
what most usually often describe the call stack or register
assignment the calling convention, resulting thinking
and writing code in the language of the objects,
not having to know anything about the runtime.
At some point in time after objects and inheritance,
for single inheritance, make perfect sense, then
there's multiple inheritance, and then there's mixins,
each at some point a great profound concept.
So, object-oriented programming is object-oriented programming,
then that "metaprogramming" is a usual idea of thinking about it.
And it's type theory and a process calculus together, then
getting into communicating-sequential-processes, what effect
making for what results eventually "system programming",
or "systems programming".
It's a surface concept of "structured programming".
There are quite a variety of models of computation,
then some things only mathematics can do.