|
|
|
OOP cannot Emulate True Component Oriented Programming
|
|
If
underlying programming paradigm do not support higher-level
abstractions, it would become practically impossible
to implement such higher-level concepts and abstractions.
The Components are higher-level abstraction to the Objects.
Therefore, it is impractical to stretch the OOP or Object-abstraction
to more than one layer to get a workable Component abstraction
(e.g. Component Oriented Programming).
|
|
There
is great parallel in the past, which provides an excellent
example and explanation to this problem. We know structured
programming has lot of benefits over nonstructural-programming. However, earlier programming languages, such
as, FORTRAN-4 did not support it (i.e. structure or
records). For example, if we try to emulate the Structured
paradigm in FORTRAN, what would happen? Consider a simple
example of a structure (in ‘C’ or Pascal’s
‘Record’) for the Employee. Lets assume
it has five fields: Name, Salary, Age, Phone,
and Social-Security Numbers.
|
|
In
the Structural-Programming this can be unified into
“indivisible”
unit. (Sorry, for the use of the word “indivisible”,
I have to find a better word for it. Here it means,
for most practical purposes it could function as a variable
or could be handled or operated as a physical
unified-unit).
|
|
However, it might be possible to emulate the “structure” in nonstructural
Programming, by declaring and keeping all the variables of a structure together.
But they are not a physically unified-unit (i.e. they cannot be operated through
a "unified handle"). If one needs to pass an array of Employees to a
function, he would end up creating five arrays, one for each field in the
structure.
|
|
Exceptions and problems start emerging for simple operations.
If a structure has 20 fields and a function may
need to use only 5 fields, he would only pass five arrays.
“Employee Structure” is already fractured.
What happens, if one of the functions needs 2 more fields
for next release? He ends up changing parameters
for many functions in the chain of function calls (results in many changes at
many places).
|
|
What would happen, if we need to create structural hierarchy?
For example, if one or more fields in the structure
are again a structure with 5 fields each. How does any
one maintain the “indivisibility” and logical-hierarchy
of the structure?
How one can
possible manage, if one of the fields is a variable
length array?
|
|
How can he pass an array of such structures?
The harder we try, the stranger mess the code would
become. For large applications, the code becomes, incomprehensible,
if dozens of people working on the project. The exceptions
and workarounds would be subjective to individual diverging
interpretation that would create fiction. No two people
would think or do in same way.
|
|
|
|
Imagine,
the mess, if we have to negotiate and document, which
part of each structure (and its substructures or arrays)
need to pass to each function. How do we handle, if
one of the fields in the structure is a variable length
array of sub-structures? (e.g. List of subordinates). No one would know, what he might need
in the future updates. How do we add 2 more fields to
a substructure? Imagine the mess it creates, if you
have to update all the functions in the chain to deliver
them to appropriate location/function-body for proper
manipulation. We would be better of, if we create a
best possible design that not necessarily emulate the
Structured-abstraction. |
|
An
ideal component paradigm needs “indivisible” encapsulation (i.e. unified
handle), an abstraction that
could be handled as a physical-unit. Also, one should
be able to build component-hierarchy;
as we could build “structure-hierarchy”
that preserves encapsulation of the
structure and can be operated through "handle",
even if it contains sub-structures, variable length arrays or even arrays
of sub-structures.
|
|
If one
starts to break the structures to create the same in FORTRAN, it would end up with so many
exceptions that are subject to individual interpretations.
It would be a mess, which is the state of the OOP
today. How is it possible to emulate the "structured-hierarchy"
without physical encapsulation of variables? Likewise it is
impossible to build component-hierarchy without physical encapsulation of
Objects.
|
|
P.S: Please read the argument carefully and map it against
your experiences. We explained why "Component-hierarchies" are
essential for a viable CBSDF. I know this assessment is right. Can you find any apparent flaw
in the argument? However, I understand, if you cannot bet on their validity. If you
are skeptical, I like to know, could you feel, it is convincing enough or highly plausible
to explore further?
A win-win proposition: If any one
willing to help prove the technology to
the world, Pioneer-soft is willing to grant exclusive-license in select few
verticals. Both could win by driving the competition out-of-business. There
is no better proof than driving the competing-application out of business, if it
uses alternative technology. To start, they must spend time to understand the
proof for themselves or allot couple of days time for
Pioneer-soft to show conclusive proof. Absolutely there is no obligation, if they are not fully
convinced after the initial evaluation.
Dr.
Vinton Cerf (founding father of Internet) says that 99% of the internet
applications yet to be invented. Our GUI-API
is indispensable for building emerging online GUI applications.
|
|
If I am right (and I believe that I am absolutely right),
we can save billions of dollars a year
to the world economy. The US alone spends about $250 billion a year on IT applications. Not only this,
it could have far reaching implications: For example,
It gives a new perspective for the researchers to invent
next generation platforms, CASE-tools and programming
languages to help us build "replaceable-containers" for the higher level
abstractions (that eliminate costly irrational
dependencies).
|
|
I think, one should use the components and the component
process for few weeks to see and experience the difference.
Once, one gains experience he likely would never go
back to painful manual spaghetti coding of Objects to
build the online application. As you know, once you
get used to Structured programming or OOP, it is impossible
to go back to FORTRAN-4, especially to build large million
line business applications. You should consider this
argument in the context of large applications and
not in the context of small applications that need effort
of just few man months.
|
|
If you are wondering, how this applies to our CBSDF.
As you know, the data structure offers physical-encapsulations to group of variables. This
allow you to build data structure hierarchies. Likewise, the
CF offers encapsulation
of replaceable parts to operate on components/component-arrays, which allow us to
create larger and larger component-hierarchies (since, each CF may contain
many sub-CF and so on).
|
|
The component technology offers many fringe benefits as
well. For example, as you may know, emerging processors/CPUs (or Nvidia GPUs) are moving in the direction of the multi-core. Not just
Intel and AMD; but look at the ‘CELL’
processor with 10 PowerPC cores from IBM and Sony consortium. (Latest news: Intel
shown a low-power teraflop supercomputer on a
chip, which contains 80 cores).
Guess what. The components are asynchronous. We can run each component one a ‘Core’/’Thread’.
For example, each character such as a Jet
fighter or helicopter in a game (or real-time modeling of a battlefield) can be assigned
to a 'Thread'.
We need to worry about only 1%-2% of the code (e.g. service request/response between the components in Fig#3) to synchronize the communications.
On the other hand, the OOP extensively uses tightly coupled Objects , Object-sharing
[Fig#1] and unstructured data-exchange (e.g. from DB-Object
to Pie-chart), which makes very hard for the asynchronous
or parallel execution of each object on a separate thread.
|
|
|
|
|
|
|