From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=BAYES_00,INVALID_MSGID, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 109fba,b87849933931bc93 X-Google-Attributes: gid109fba,public X-Google-Thread: fac41,b87849933931bc93 X-Google-Attributes: gidfac41,public X-Google-Thread: f43e6,b87849933931bc93 X-Google-Attributes: gidf43e6,public X-Google-Thread: 103376,b87849933931bc93 X-Google-Attributes: gid103376,public X-Google-Thread: 114809,b87849933931bc93 X-Google-Attributes: gid114809,public X-Google-Thread: 1108a1,b87849933931bc93 X-Google-Attributes: gid1108a1,public From: donh@syd.csa.com.au (Don Harrison) Subject: Re: OO, C++, and something much better! Date: 1997/01/09 Message-ID: #1/1 X-Deja-AN: 208771724 sender: news@syd.csa.com.au x-nntp-posting-host: dev50 references: organization: CSC Australia, Sydney reply-to: donh@syd.csa.com.au newsgroups: comp.lang.c++,comp.lang.smalltalk,comp.lang.eiffel,comp.lang.ada,comp.object,comp.software-eng Date: 1997-01-09T00:00:00+00:00 List-Id: David Emery writes: :>> - A completely consistent type structure, in which :>> even basic types such as INTEGER are classes, :>> present in the general inheritance structure. :>> (In C++ or Java, for example, the basic types :>> are completely separate from the class and inheritance :>> structure.) :> :>OK, here you have me. But, Eiffel hedges a bit here as well with its :>"expanded types". : :I think that there is not a clear consensus on this as A Good Thing. :From a practical perspective, there seems to be a significant price to :pay for 'full generality' (e.g. integers are classes just like :user-defined record types.) Java, for instance, has primitive integer :types, and my understanding that the reason for this is performance, :pure and simple. Making 'int' a class would result in unacceptable :performance, both compile-time and runtime, for simple things like :"a[i++] := b + c;" (for int a, b, c). Eiffel expanded types (one of which is class INTEGER) are not accessed via references so do not carry that overhead. Hence, they can be implemented as efficiently as Ada/C++ integers. However, if you *do* need to define a more specific integer type, you can inherit from the parent (reference) type, INTEGER_REF. Don. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Don Harrison donh@syd.csa.com.au