Last Comments

Emily Bache (Coke machine proj…): It seems very agile to me…
William Pietri (Coke machine proj…): Interesting! I’m not clea…
Amber Shah (WeVouchFor): What a great idea, I only…
William Pietri (Looking for consc…): Interesting question! I…
Keith Braithwaite… (WeVouchFor): Zombie project or zombie …
halmac3 (Quality, Safari a…): People treat “quality” as…

Archives

01 Oct - 31 Oct 2009
01 Jun - 30 Jun 2009
01 May - 31 May 2009
01 Nov - 30 Nov 2007
01 Oct - 31 Oct 2007
01 Jul - 31 Jul 2007
01 Jun - 30 Jun 2007
01 May - 31 May 2007
01 Mar - 31 Mar 2007
01 Jan - 31 Jan 2007
01 Oct - 31 Oct 2006
01 Feb - 28 Feb 2006
01 Nov - 30 Nov 2005
01 Sep - 30 Sep 2005
01 Aug - 31 Aug 2005
01 Jul - 31 Jul 2005
01 Jun - 30 Jun 2005
01 May - 31 May 2005
01 Mar - 31 Mar 2005
01 Feb - 28 Feb 2005
01 Jan - 31 Jan 2005
01 Dec - 31 Dec 2004
01 Nov - 30 Nov 2004
01 Oct - 31 Oct 2004
01 Sep - 30 Sep 2004
01 Aug - 31 Aug 2004
01 Jul - 31 Jul 2004
01 Jun - 30 Jun 2004
01 May - 31 May 2004
01 Apr - 30 Apr 2004
01 Mar - 31 Mar 2004
01 Feb - 29 Feb 2004
01 Jan - 31 Jan 2004
01 Dec - 31 Dec 2003
01 Nov - 30 Nov 2003
01 Oct - 31 Oct 2003
01 Sep - 30 Sep 2003
01 Aug - 31 Aug 2003
01 Jul - 31 Jul 2003
01 Jun - 30 Jun 2003
01 May - 31 May 2003
01 Apr - 30 Apr 2003
01 Mar - 31 Mar 2003
01 Feb - 28 Feb 2003
01 Jan - 31 Jan 2003

Pivot Homepage
Pivot Forums
Pivotstyles
Pivot Help

To change the links in this list, edit the file '_aux_link_list.html' in your Pivot's templates folder. You can do this by directly editing the file, or you can go to Administration » Templates in the Pivot interface.

Miscellany

Powered by Pivot - 1.40.6: 'Dreadwind' 
XML: RSS Feed 
XML: Atom Feed 

« Test-driven example f… | Home | Live from AYE confere… »

Team-based object languages

I recently attended a mini-conference on the topic of "object languages after 20 years". Have objects failed ? Is a new "post-object" era being ushered in, and can we guess what new ground will be broken in that era ?

The answers seem to cluster around two major and opposing axes. There are those who predict the end of Objects as an inclusive paradigm and herald the coming of age of Models. They are the tenants of MDA, model-driven architecture; of "platform-independent models", among which business process models, service models etc.

Actually I'm not quite sure that these people are at all talking about the same thing as the people who discuss object languages, but the impression is definitely that languages in general (object or otherwise) are not something of interest, and models are where all the action will be. Maybe. To my way of thinking, "model" is to "class" as "class" is to "object" : a drive to generalization, the grander and more sweeping the better.

The ideal of MDA, as stated, is to be able to describe the essence of a business in a set of models, and then automate more or less fully the generation of code (actual applications, plus the platform-specific plumbing) that allows people to perform the work. The unstated implication, if you throw in the notion of "reusable models", is that there is a sort of Platonic abstraction which every business under the sun is a somehow distorted reflection of; modeling captures the Platonic essences, and programming is mere correction, a way of adjusting for the inevitable imperfections and divergences that arise when the essence is realized in the physical world.

Several authors, Jim Coplien most recently, have warned against the error of identifying object languages with the notions of classes and inheritance. This is the second trend I see - a direction away from the classifying and Platonic school. Actually, according to Richard Gabriel this was the original object philosophy but was derailed along the way:

[...] with C++ and Java, the dynamic thinking fostered by object-oriented languages was nearly fatally assaulted by the theology of static thinking inherited from our mathematical heritage and the assumptions built into our views of computing by Charles Babbage whose factory-building worldview was dominated by omniscience and omnipotence.


Coplien goes on to argue that "type" is a less useful notion in an object design than "role". The way I think of object designs based on roles and responsibilities is by analogy with organizational concerns. If you are building a project team, you can proceed in two different ways to select the next person you hire. You can be interested in whether that person "is a" Programmer, or Architect, or Tester, or Manager - and at a finer level, a Senior Programmer or Junior Programmer, an Integration Tester or an Acceptance Tester. In other words, you can take an interest in types and classifications. Or you can be concerned with making sure that your team, as a whole, includes the appropriate mix of programming skills, testing skills, management skills, etc. The next person you hire doesn't have to "be a" Programmer, but might be a good recruit because they can in part fulfill that role thanks to their programming skills, and also complement existing testing skills.

We see this kind of approach in a recent programming language, Scarlet, which does away completely with class inheritance and class hierarchies; rather, the main approach to reusing implementation is aggregation. In Scarlet you find interfaces, which are akin to roles, and implementations - which we can think of as persons with the skills required in these roles. You compose objects which are associations of implementations brought together to perform tasks - in other words, objects which look a lot like teams.

No comments:


No trackbacks:

Trackback link:

Please enable javascript to generate a trackback url


  
Remember personal info?

Emoticons / Textile

Comment moderation is enabled on this site. This means that your comment will not be visible on this site until it has been approved by an editor.

To prevent automated commentspam we require you to answer this silly question
 

  (Register your username / Log in)

Notify:
Hide email:

Small print: All html tags except <b> and <i> will be removed from your comment. You can make links by just typing the url or mail-address.