Jump to content

Article: Object-flow Programming - Merging Dataflow and Object-Oriented


Recommended Posts

I just posted an ExpressionFlow article:

I guess you may find it interesting. If you like it, you should bookmark it with one of the social bookmarking tools (click the bookmark link next to the timeline image in the article). That may help us to get readers and comments from outside the LabVIEW community. And don't hesitate to participate the discussion. I'd love to hear you comments on the subject.

Tomi

Link to comment

A new critique on the "object oriented" way of thinking has been uncovered within the Archimedes Palimpsest (article here):

QUOTE

A provisional translation of the commentary is currently being undertaken.

It reveals a debate on some aspects of Aristotle's theory of classification, such as: if the term "footed" is used for animals, can it be used to classify anything else, such as a bed?

The passage reads:

For as "foot" is ambiguous when applied to an animal and to a bed, so are "with feet" and "without feet".

So by "in species" here [Aristotle] is saying "in formula".

For if it ever happens that the same name indicates the differentiae of genera that are different and not subordinate one to the other, they are at any rate not the same in formula.

This refers to Aristotle's Categories. From the article Categorization: "The classical Aristotelian view claims that categories are discrete entities characterized by a set of properties which are shared by their members."

And yeah, I know quoting Wikipedia is asking for trouble.

Link to comment

QUOTE(AdamRofer @ Apr 27 2007, 12:43 PM)

This refers to Aristotle's Categories. From the article Categorization: "The classical Aristotelian view claims that categories are discrete entities characterized by a set of properties which are shared by their members."

So, Adam, your post made me go do some digging across the Internet. An interesting dig. ;-) You said this raised a new critique of OOP, so I had to go see what was up.

The only section of the critique that I could find was the section already posted by you -- no further text appears to be available. The authoritarian site (cite) for this work would be here.

Based on reading, I find that Aristotle believed in a tree of categories. Have you ever played the game 20 Questions ? You think of an object, the program asks you 20 questions about that object, and then tells you the object you're thinking of. Basically, it is a 2^20th decision tree, large enough to include all the items that a person might commonly think about. (the goal of the game is to find something that it couldn't guess, but that's a tangent from my point). Such a tree seems to be what Aristotle believed the world could be organized into. That very much resembles the presumption of OOP -- that there is one or more root clases (a presumed "root of all trees" class would be "things that we can think about").

The palimpeset raises concerns about such a hierarchy of things (see the quoted translation above). To answer the critique, Aristotle (or the OOP programmer) might reply that the critiques is abusing language. In the case of "footed", Aristotle might say, "It is ambiguous to ask about footed. You need to ask about 'animal-footed' or 'construct-footed', but not generic 'footed'. Using 'footed' is only valid in an already established context." This is akin to saying in programming that you can use the same class name twice, but only if you use it in different namespaces, and when both classes are used together, you have to use the fully-qualified name to specify.

But that's a shallow response. After all, we really do have the same meaning for footed when talking about animals as we have when talking about beds. The critique is really pointing out the need for multiple inheritance and -- specifically -- diamond inheritance (A derives from B and C, both of which derive from D, thus forming a diamond in the inheritance tree, something that we discourage among human inhertiance). In this sense, the critique is not a new critique -- it is one that has been recognized by programmers over the years. The most recent answer to the challenge -- the one that I prefer -- is the JAVA interfaces, which create a secondary tree of attributes that map onto the core tree of objects.

I am now thinking you meant 'new' as in "newly discovered", not as in "original." The critique is indeed a valid critique, but I didn't find anything in it that hasn't already been found by other thinkers about the problem. And, yes, it would be a valid critique of the classes as they currently stand in LabVIEW.

Did I miss something?

Link to comment

Yes, AQ, I did intend for "new" to refer to "newly discovered." I also figured that Aristotle had not published without some discourse since, but I am always wary of the way of thought that "everything has been discussed" over these topics (or any topics). As the palimpsest uncovering seems to be from Alexander of Aphrodisias (the Wikipedia article needed updating), I thought that a fresh (counter) look from waaay back when this sort of stuff was just beginning to take fruit would be real nice since OOP has been mulled over in completely new context recently. In learning more about the old philosophies that brought about such conceptual advancements (as taxonomy), people with complaints and concepts targeting OOP can take a step back and say "ok, so this is a fundamental limitation to this way of thought" as opposed to "this is a bug."

In reading what we have so far in the palimpsest, I have the same (shallow) response you do. I'm not as familiar with ancient Greek as I once was, but I do believe that when referring to feet one cannot assume that these feet will be able to move unless the context (namespace) of the type of object is inherent in the discussion. This sort of "same name" difficulty is what can make a language easy or hard to use, versus how fast you can communicate concepts. See it as language compression, if you will. Yes, "foot" means the same thing in that it usually represents something at the end of a "leg" that keeps an item up, and in that sense you can apply anything you want to that definition. I think the flaw is inherent to how you use it...if you say you went into a house and counted the feet you found, nobody could say if you meant animal feet or table feet.

I've played the 20 Questions game several times, and as a result I almost thought about demanding some royalty fees...They usually got my items wrong, and whenever I provided them with what I am thinking of that information was stored. This stored information now helps them sell the portable units that have a stripped down version with probably pretty compressed data stored on the pucks that are sold. Wikipedia, Digg, del.icio.us especially, and virtually any Web 2.0 application has one intended purpose: taxonomy. Taxonomy simplifies thought and focuses efforts on core problems (in most cases, if done properly) and as a result one does not have to work as hard in the best situations of OOP as the same ones in non-OOP languages.

I'm pretty sure we won't see anything that hasn't been asked before, but in this case we can certainly cut through the junk and get right down to the core OOP elements with this discussion (and more appropriately in your new direction here).

I'm glad I could spark such an involved discussion on this topic...I've somewhat avoided OOP in the past!

P.S. The article you link to looks awesome but I'm afraid a lot of people don't have a SIG or ACM membership, which appears to be required. Free web signup does not allow one to download this PDF.

Link to comment

QUOTE(AdamRofer @ Apr 30 2007, 03:19 PM)

P.S. The article you link to looks awesome but I'm afraid a lot of people don't have a SIG or ACM membership, which appears to be required. Free web signup does not allow one to download this PDF.

Weird. I don't have an ACM membership -- I've let mine lapse the last couple years since I had access to most of the journals in other places. Yet I was able to download it. I couldn't get to any of the secondary documents. Seems like its a good thing that I saved it off -- perhaps a momentary lapse in their security?

So do I post the document somewhere or not? I guess not -- I thought it was a free download, but if it turns out not to be I probably shouldn't promote their security mistake.

Link to comment

QUOTE(Aristos Queue @ Apr 30 2007, 02:12 PM)

For me, I get:

QUOTE

The following subscription(s):

Purchase this
.

A quick click on the "Terms Of Usage" below garners:

QUOTE

You may make digital or hard copies of the individual articles that you are entitled to access for personal or classroom use, as long as the copies are not made or distributed for profit or commercial advantage and they bear the ACM copyright notice. You may assemble and distribute links that point to works in the ACM Digital Library.

Please do not republish these ACM works, or post them on other servers, or redistribute them to lists, without first getting explicit permission from ACM. Contact
. Please do not abuse your access rights to the ACM Digital Library by wholesale duplication of all or substantial sections of the ACM Digital Library.

It looks like a really cool article.

Link to comment

QUOTE(Aristos Queue @ Apr 29 2007, 06:03 PM)

So, Adam, your post made me go do some digging across the Internet. An interesting dig. ;-) You said this raised a new critique of OOP, so I had to go see what was up.

Yes, "newly discovered" not JUST discovered for the first time.

But, unlike two of the other comments posted in this thread, I think this is a fundamental issue that both reveals the power of OOP but also points out how it can become an exercise in OOPs!

Language is context bound, not hierarchical. It is community-based as well as in it is determined by and determinative of (over time) its own use within a community of users. There is a "within-timeness" to it, as the Existential-Phenomenological thinkers would put it and that "within-timeness" is not quite synonomous with what we do when "versioning" code.

So to put all of this briefly, the point IMO is that the Requirements "stage" and process is the place in which the "language of use" is first developed (and ongoing refined) by those will use the deployed system of code as well as those who will code it. Actually developing a useable OOP architecture means -- among other things -- that the "lived complexity" of the tasks imagined by the users, was able to be reduced to a functional hierarchy -- even when it actually involves a much more complex structure.

It is this later part that makes the overall architecting and coding process SO interesting, because there's lots of "slip and slide" in mapping the lived complexity of/for the users into the hierarchical constructing favored by OPP so as to maximize reusability, simplicity of construction and straightforward debugging, etc.

And, yes, I have a background in philosophy so it's easy for me to "slip into" that world.

Link to comment

QUOTE(Aristos Queue @ Apr 29 2007, 06:03 PM)

I got about 75% of the way through the paper, last night. Yes, it is a very enjoyable read. I never took Greek philosophy (although I regularly have philisophical discussions with a real live Greek person), so this was all pretty new information. It's interesting to see concepts that we're all so comfortable with (like categorization and reason) dissected into first principles. It's also interesting to learn more about the origin of words (and thier original meanings) to understand better how they are used (and abused) today.

Link to comment

Some of you had commented this blog article but the comments never appeared on my blog. I've now resolved the issue (I hope). I was able to reconver the lost comments, so very interesting discussion is going on...

Sorry again for the inconvenience.

Tomi

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.