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.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!mx02.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: was Ada 83 in fact object oriented ? Date: Fri, 25 Sep 2015 10:03:29 +0200 Organization: cbb software GmbH Message-ID: <1sklzs8uj38km.ferazxphgbhx$.dlg@40tude.net> References: Reply-To: mailbox@dmitry-kazakov.de NNTP-Posting-Host: jSS3it0g+GyWYSMU5pi+5g.user.speranza.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: 40tude_Dialog/2.0.15.1 X-Notice: Filtered by postfilter v. 0.8.2 Xref: news.eternal-september.org comp.lang.ada:27819 Date: 2015-09-25T10:03:29+02:00 List-Id: On Thu, 24 Sep 2015 15:23:57 -0700 (PDT), halfmaddad@gmail.com wrote: > OO is a huge topic but I am wondering what are the basic requirements for > a language to be said to support object orientation. It is an unsettled question. Usually dynamic polymorphism is considered essential for an OOPL. In Ada 95 dynamic polymorphism was represented by tagged types and primitive operations. Ada 83 was said "object based", but not "object oriented." > Ada 83 had packages and one package could be instantiated more then one time. You mean generic packages. That is static polymorphism, usually, it is not considered OO. > Is it fair to say that basic class and methods were therefore supported? No. Because the key difference is that with static polymorphism you cannot have a polymorphic object. E.g. if you have a type declared within a generic package. Then each instance of the package produces a new type. You cannot have an object capable to hold values (or their equivalents as strong typing requires) of both types. Therefore, there is no run-time class. The class of all instances exists, but not in the language. Thus the language does not make it. > Do you have any examples of a language that just meets the threshold of being OO ? >From above, if you have polymorphic objects, the language is OO. Bordering cases could be ones when some types have no classes or some classes have to explicit types etc. Considering this, all languages are probably at the threshold. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de