Relative to the question of how do you keep track of 38,000 (or
41,320) gems, my ex-colleague in Europe has this to say:
I believe that the fact that OO has a mechanism to deal with this is
one of the strongest elements in the success of OO: classification. (I
regard the isolation of storage management at the top level as the
most important part of OO.)
"FBP seems to have a rather good storage management approach of the
IPs, but it misses a look-up mechanism.
"As I highlighted in my pdf:
Application development = documentation processing
"One of the main ideas of documentation is a systematical method of
recording, to ensure an easy retrieval. Classification is very
successful approach, as it is in line with one of the ways our brain
does it. That is one of the reasons of the success of OO. But it is
not such that if somebody uses classification would mean that his/her
approach is object-oriented.
"Back in 1990 I was using the term subject-oriented, because in
business applications classification has almost nothing to do with
objects, but with the subjects of the applications. A subject can be a
real world object, but also an abstract object, a technical software
object, a person, etc. What is stored in the databases are often
conglomerations of subjects, because a record may contain information
that is only added because of its relationship with one or more
specific applications. That may be one of the main problems with the
use of OO at the highest levels of business applications. (E.g. in
order to add a record to the data base, an application must have some
knowledge of fields that have to be added to support other
applications, causing complex interdependencies of object that should
be independent.)
"In FBP a lot of the components deal with rather abstract technical
objects. E.g. Sort is totally independent of the logical contents of
the IP. In OOP the same happens to some degree, but it is more or less
hidden in its object-oriented classification system. E.g. a lot of
"is-a" relationships are only an expression of the way a set of
objects is technically kept together. All collection classes have been
introduced to be able to classify technical processes.
Because FBP does not support a mechanism to express the relationship
between the activity of a component with a technical type of IP (like
methods assigned to an object), classification becomes more difficult.
However, I think that it would be possible to set up some technical
layering.
"Just like OO uses the "is-a" relationship to express a specific type
of technical implementation, A (logically defined) component can be
implemented as an "is-implemented-as" component as a network of a
single component. This is part of what I mentioned in that first pdf
with "multiple views", where the non-technical people will follow the
flow of the logical elements, whereas the programmer will mainly deal
with the technical flow, but such that the relationship between both
views will remain part of the development process (documentation).
"Such a mechanism should support a dual classification scheme: subject
and activity. In that way I believe it could even improve on the OO
classification scheme."
He also feels that his concept of "application development = document
processing" is extremely important, but may be more meaningful to
business types than to academics. As he says, application development
should be efficient from a business point of view.
Any comments on this, Brad, based on your experience with Objective C?
He and I also both agree that powerful search engines are important in
locating useful components, but he says, "In order to build a good set
of reusable components, there must be logically structured set-up of
components. I am not aware of any better approach than the
(hierarchical) classification. Of course there should be enough
flexibility in it, like the use of synonyms or even less strict
equivalence, where the search mechanism may be a great help."