Newsgroups: comp.object,comp.lang.smalltalk,comp.lang.ada,comp.lang.c++
Path: cantaloupe.srv.cs.cmu.edu!europa.chnt.gtegsc.com!howland.reston.ans.net!ixnews.netcom.com!netcom.com!adaworks
From: adaworks@netcom.com (AdaWorks)
Subject: Re: Ada95 not OO (was Re: Has C++ had its day?)
Message-ID: <adaworksDB5KFG.KyI@netcom.com>
Followup-To: comp.object,comp.lang.smalltalk,comp.lang.ada,comp.lang.c++
Organization: NETCOM On-line Communication Services (408 261-4700 guest)
X-Newsreader: TIN [version 1.2 PL1]
References: <NEWTNews.804269222.4596.sellers@sellers.sellers.com> <1995Jun29.153521.5115@rcmcon.com> <3t0p3f$hjl@theopolis.orl.mmc.com> <1995Jun30.212050.26112@merlin.hgc.edu> <DB0IGA.1Cq@world.std.com> <3t3mtb$i5@mail.one.net>
Date: Mon, 3 Jul 1995 18:23:38 GMT
Lines: 60
Sender: adaworks@netcom20.netcom.com
Xref: glinda.oz.cs.cmu.edu comp.object:34193 comp.lang.smalltalk:25384 comp.lang.ada:32043 comp.lang.c++:136411

oconnor@204.248.93.5 wrote:

:  I'll put my cards on the table now and say, though, that
:  Ada95 is still not an OO language.  Dynamic binding and extendable records
:  do not an object make.  The simple reason it is not OO is that there are no
:  objects.  

   Fascinating!  This brings us back to the question of "What is an object?"

   For years, the OOP canon has stated that an object-oriented programming
   language requires:

               * class
               * inheritance
               * polymorphism
               * dynamic binding

   where class is a kind of "cookie cutter" for objects of the class.

   Some software practitioners have discovered that this canon is too small
   a model for large-scale software systems, and too narrow a definition
   for type-based software development.  In recognition of this, some
   languages have extended the list to include:

                * generics   (templates)
                * exceptions
                * subsystems

   and others, such as Eiffel, Oberon, and Sather, have extended it
   even further to include:

                * assertions
                * automatic garbage collection


   Some of us have taken a perfectly good term, "object-oriented ..."
   and individually allowed our mental processes to coagulate around
   some set of terms that we think represents the sanctified canon of
   OO.  The reality is, this is an emerging discipline.  We are all still
   learning.  Some of the good ideas of today will be jettisoned by our
   software descendants.  Indeed, some will be perceived with the same
   horror we have four our own four-letter word, "goto."

   The Ada 95 model does include the canonical OOP features.  It also has
   retained features, such as generics (C++ templates) long-ago adopted by 
   other OO languages.  

   Although it offers a somewhat different model for "class" by enclosing,
   somewhat like Oberon, the type/class within the boundaries of a package,
   that model does support the notion of "objects", and always has.  

   A more important issue than syntax is that of goals.  What are we trying
   to accomplish with OOP.  Sometimes we become so absorbed with the kind
   of tools we have that we fail to appreciate the variety of problems we
   have to solve.

   Richard Riehle
   adaworks@netcom.com
-- 
                                             adaworks@netcom.com
