Newsgroups: comp.lang.ada
Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!think.com!linus!linus!linus!mbunix!eachus
From: eachus@largo.mitre.org (Robert I. Eachus)
Subject: Re: OOP and large systems (was: Ada vs C++, ...)
In-Reply-To: dlindsle@afit.af.mil's message of 4 Jun 91 18:56:32 GMT
Message-ID: <EACHUS.91Jun11182934@largo.mitre.org>
Sender: news@linus.mitre.org (News Service)
Nntp-Posting-Host: largo.mitre.org
Organization: The Mitre Corp., Bedford, MA.
References: <0D010010.vk2p2d@brain.UUCP> <1991May30.004144.24252@netcom.COM>
	<085657.19195@timbuk.cray.com> <1991Jun1.044011.29894@netcom.COM>
	<1991Jun04.185632.18204@afit.af.mil>
Date: 11 Jun 91 18:29:34

In article <1991Jun04.185632.18204@afit.af.mil> dlindsle@afit.af.mil (David T. Lindsley) writes:

   Ada is not an OOPL in the classic sense, no.  But Ada does allow and
   in fact encourage object-oriented _design_.  Encapsulation (packages),
   information hiding (private types), etc., are part of OOD (and OOPLs)...

     Hmmm. In Ada you can (and most software engineers do) use OO
DESIGN methods.  However, the properties of the language are such that
it is very difficult to modify data abstractions in unintended ways.
In the AI field, I have seen lots of Smalltalk, LISP, Scheme, LOOPS,
etc. systems which, like Topsy, just growed.  The lack of information
hiding and isolation of abstractions makes violations of any original
design easy in most "pure" OO PROGRAMMING environments.  And in most
of the OOP systems I have seen not only are these violations notable
by their presence, they make any maintenance a nightmare.

     I think that the ability we have to hide data abstractions in Ada
is precious, and any attempt to break that barrier to permit "pure"
OO programming in Ada is misguided.

     (Flame Retardant:  I am very much in favor of OO extensions in
Ada 9X, we just need to be very careful not to break more important
Ada properties.)
--

					Robert I. Eachus

with STANDARD_DISCLAIMER;
use  STANDARD_DISCLAIMER;
function MESSAGE (TEXT: in CLEVER_IDEAS) return BETTER_IDEAS is...
