Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!husc6!bloom-beacon!gatech!udel!rochester!PT.CS.CMU.EDU!CIVE.RI.CMU.EDU!jwb From: jwb@CIVE.RI.CMU.EDU (John Baugh) Newsgroups: comp.lang.misc Subject: Re: Software ICs (long! was Re: C++ vs Objective-C) Message-ID: <331@PT.CS.CMU.EDU> Date: Mon, 9-Nov-87 13:59:19 EST Article-I.D.: PT.331 Posted: Mon Nov 9 13:59:19 1987 Date-Received: Wed, 11-Nov-87 06:51:50 EST References: <3405@ece-csc.UUCP> <638@its63b.ed.ac.uk> <1811@watcgl.waterloo.edu> <3179@ames.arpa> <1662@ppi.UUCP> <4398@well.UUCP> Sender: netnews@PT.CS.CMU.EDU Organization: Carnegie-Mellon University, CS/RI Lines: 33 In article <4398@well.UUCP> mitsu@well.UUCP (Mitsuharu Hadeishi) writes: ... > I would like to add, it is also because of the lack of object- >oriented design of the libraries themselves. When someone writes code >that depends on the specific internal representation of an object, rather >than its interface, it makes it difficult if not impossible to change those >libraries or to improve their implementation. You've recognized the benefits of *data abstraction*. By *specifying* an abstract data type and the semantics of its operations (and requiring that your clients know only this information), you effectively encapsulate the internal data representation and the implementation of its associated operations. As a result, I (the implementor of the ADT) can change either the internal representation or the operations in any way such that the specification of the ADT holds (and *guarantee* that users of my ADT will see no change in the new implementation, other than perhaps speed). Back to the library problem. The problem is not their lack of object- orientedness (whatever that is :-), but that they are based on functions instead of ADTs. I contend that MODULA *modules*, CLU *clusters*, ADA (tm) *packages*, etc. can be just as effective in accomplishing what you have described. Polymorphic functions, which are (partially) supported in only one of the above, however, can be useful in building libraries (as noted earlier in the discussion). Math libraries, for example, (should) have zillions of internal representations for matrices, and its nice to avoid the 'matmulhyper' syndrome required to multiply hypermatrices. John Baugh (jwb@cive.ri.cmu.edu) Carnegie Mellon University -- %%%%% John Baugh Department of Civil Engineering %%%%% %%%%% jwb@cive.ri.cmu.edu Carnegie Mellon University %%%%%