comp.lang.ada
 help / color / mirror / Atom feed
From: "Lon D. Gowen, Ph.D." <gowen@microware.com>
Cc: "Lon D. Gowen, Ph.D. (@Microware)" <LonG@Microware.com>
Subject: Re: PL/I Versus Ada (Was: Arianne ...)
Date: 1996/08/29
Date: 1996-08-29T00:00:00+00:00	[thread overview]
Message-ID: <3225E4D3.6F5992E1@microware.com> (raw)
In-Reply-To: Pine.GSO.3.92.960828172250.8140A-100000@nunic.nu.edu


Richard Riehle wrote:
> 
> On 21 Aug 1996, Tony Konashenok wrote:
> 
> > What exactly is an "object-oriented version" of a language? Why is PL/I
> > not object-oriented? IMHO, one can do object-oriented programming even in
> > assembly language, given enough skill and dedication. Too many people are
> > confusing object-oriented programming as a method with the usage of
> > C++/Ada-specific features.
> 
>   Well you may have your own idea of object-oriented programming.
>   We usually think of encapsulated classes which support extensible
>   inheritance, dynamic binding, and polymorphism.  We ordinarily do not
>   consider the heroic efforts of a star programmer as being sufficient
>   to implement the method.  There are specific, widely-accepted criteria
>   for object-oriented programming which are not language-specific.
>   So I will rephrase the question.

Well, now that poor Tony is ducking arrows from Richard, allow me to take
a few arrows.  Tony is correct in a sense.  A coder can do OOP without
using an OOP language such as C++, Ada 95, etc. (see "Software Engineering"
by Ian Sommerville, which is a well-known text on SE ideas).  However,
using an OOP language does make the coding of an OOD easier.

The beginning of OOP came from SIMULA 67; however, no one ever made this
connection until Hoare did in 1972.  The basic tenants of OOP go back to
its originator SIMULA 67, and they basically focus around the ideas of
the "class construct," which allowed a person to keep a data structure
and its associated routines packaged together (i.e., data abstraction).
Unfortunately, SIMULA 67 did not have "information hiding" (i.e., the
inforcement of abstractions; or, put another way, multiple-access
paths to data types).

One of the big (supposed) benifits and one of the most important
components of OOD/OOP is this idea of data abstraction.  All languages
(even assembly languages) can support data abstraction (and, therefore,
functional abstraction too).  Additionally, there are various levels of
data abstraction (e.g., all high-level languages--HLLs--use simple data
abstractions such as their builtin abilities to manipulate integers,
reals, strings, etc.).

OOP uses the ideas of data abstraction; and data abstraction, by definition,
includes encapsulation (i.e., the ability to group data or operations into
separate syntactic containers), functional abstraction, and sometimes
information hiding.  There are various groups of OOPLs, which we can break
up into two main groups:  pure OOPLs (e.g., smalltalk and Eiffel) and
hybrid OOPLs (e.g., C++ and Ada 95).  Generally speaking, an OOPL has the
following "features":  data abstraction, inheritance, and a particular
type of dynamic binding (i.e., a kind of polymorphism).  The purpose of
inheritance is to facilitate the reuse of abstract data types (ADTs).  And,
reuse is supposedly beneficial to software development efforts.  Therefore,
the big attraction to OOP is through the supposed improvements of ADTs,
dynamic binding of requests, and inheritance.

The information above comes from Bob's book on programming languages
(see "Concepts of Programming Languages" by Robert W. Sebesta, third
edition).  By the way, Bob Sebesta currently chairs the computer science
department at the University of Colorado at Colorado Springs:  At least
he was still there when I had dinner with him this Spring.  As a side
not on this whole issue, Chapter 10 (on Abstract Data Types) of Bob's
book begins with a picture of George Radin, who (as the book states)
"was one of the principal designers of both the PL/I language and IBM's
first compiler for PL/I"--kind of ironic :-)

> 
>   Is there a version of PL/I which:
> 
>      1) has explicit syntactic support for extensible inheritance
>         of encapsulated classes (i. e., supports Meyer's "open/closed
>         principle") ?

You can implement inheritance in PL/I (see prior articles regarding a
white paper by Smedley and Smith).  Most (if not all) PL/I compilers,
however, do not come with the proper libraries to facilitate it.

> 
>      2) supports dynamic selection of class object based on run-time
>         evaluation of class membership  (dynamic binding and
>         polymorphism)?

You can also support dynamic binding in PL/I of just about anything
including classes.  Once again, see the white paper by Smedley and
Smith.  Remember, PL/I's pointers are untyped, which means extreme
flexibility (and usually a decrease in reliability).

> 
>      3) permits the definition of a type/class with hidden data
>         structures that are visible only via their exported
>         methods?  (a la "programming by contract")?

This concept is information hiding and not necessary to do OOP.  The main
benefit of IH is to keep programmers from gaining access to an item
without following the proper channels.  IH is a "big brother" (liberal)
concept that programming in general could live without.

> 
>      4) allows the definition of "abstract classes" (deferred classes)
>         for implementation, through extensible inheritance and
>         polymorphism, of variants of that class.  This should include
>         the capability for late binding?

Again, I see no problems here.  Once again, you would have to build in
the features yourself or borrow (or buy) the ideas from someone else.

> 
>    None of these characteristics are language-specific, but each is
>    included in any language defined, by contemporary usage, as an
>    object-oriented programming language.  How does PL/I compare?
> 
>    Richard Riehle

The designers of PL/I wanted it to cover everything, and it pretty
much fulfills their expectations.  Depending on how you view
things, PL/I does support OOP; however, you have to do a little
work beforehand to make life consistent and easy.

Lon

-- 
Lon D. Gowen, Ph.D.
Phone:      (515) 223-8000 x217         Fax:  (515) 224-1352
e-mail:     gowen@microware.com         WWW:  www.microware.com
U.S. Mail:  Microware Systems Corporation
            Research & Development Department for Core Technologies
            1900 N.W. 114th Street
            Des Moines, IA 50325-7077

Disclaimer: All opinions are mine and not necessarily those of anyone else.

"Only when we have built a similar system before is it easy to determine the
requirements in advance."  --David L. Parnas




  reply	other threads:[~1996-08-29  0:00 UTC|newest]

Thread overview: 188+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1996-07-25  0:00 Ariane 5 - not an exception? Simon Bluck
1996-07-25  0:00 ` Multiple reasons for failure of Ariane 5 (was: Re: Ariane 5 - not an exception?) Kirk Beitz
1996-07-26  0:00   ` Robert I. Eachus
1996-07-26  0:00   ` ++           robin
1996-08-05  0:00     ` Darren C Davenport
1996-08-06  0:00       ` U32872
1996-08-07  0:00         ` Robert Dewar
1996-08-08  0:00           ` Pascal Martin @lone
1996-08-09  0:00             ` Robert Dewar
1996-08-10  0:00               ` dwnoon
1996-08-11  0:00                 ` Robert Dewar
1996-08-15  0:00                   ` dwnoon
1996-08-16  0:00                     ` Robert Dewar
1996-08-20  0:00                       ` dwnoon
1996-08-12  0:00                 ` Ken Garlington
1996-08-15  0:00                 ` Richard Riehle
1996-08-22  0:00                   ` ++           robin
1996-08-23  0:00                     ` Ken Garlington
1996-08-31  0:00                     ` Ada versus PL/I " Richard Riehle
1996-09-02  0:00                       ` ++           robin
1996-09-02  0:00                         ` Richard A. O'Keefe
1996-09-03  0:00                           ` ++           robin
1996-09-03  0:00                             ` Robb Nebbe
1996-09-17  0:00                             ` shmuel
1996-09-17  0:00                               ` Jay McFadyen
1996-09-18  0:00                                 ` John McCabe
1996-09-20  0:00                               ` shmuel
1996-09-03  0:00                       ` J. Kanze
1996-09-07  0:00                         ` Robert Dewar
1996-09-09  0:00                           ` ++           robin
1996-09-09  0:00                             ` Robert Dewar
1996-09-09  0:00                               ` Ken Garlington
1996-09-03  0:00                       ` ++           robin
1996-09-04  0:00                         ` Robert Dewar
1996-09-07  0:00                           ` ++           robin
1996-09-06  0:00                             ` PL/I or PL/1 Larry Hazel
1996-09-11  0:00                     ` Multiple reasons for failure of Ariane 5 (was: Re: Ariane 5 - not an exception?) J.Worringen
1996-09-12  0:00                       ` Ken Garlington
1996-09-14  0:00                       ` Use DejaNews to retrieve Ariane discussion David Alex Lamb
1996-09-19  0:00                         ` Earl H. Kinmonth
1996-09-14  0:00                       ` Multiple reasons for failure of Ariane 5 (was: Re: Ariane 5 - not an exception?) David Alex Lamb
1996-08-11  0:00               ` ++           robin
     [not found]               ` <4uibvh$References: <Dv45EJ.8r@fsa.bris.ac.uk>
1996-08-16  0:00                 ` A. Grant
1996-08-08  0:00         ` bohn
1996-08-23  0:00   ` Jon S Anthony
1996-08-23  0:00     ` ++           robin
1996-08-23  0:00       ` Richard A. O'Keefe
1996-08-23  0:00         ` Ken Garlington
1996-08-26  0:00         ` ++           robin
1996-08-27  0:00           ` Ken Garlington
1996-08-28  0:00             ` Larry Kilgallen
1996-08-29  0:00               ` Ken Garlington
1996-08-30  0:00             ` ++           robin
1996-08-30  0:00               ` David Weller
1996-09-04  0:00               ` Ken Garlington
1996-09-06  0:00                 ` Sandy McPherson
1996-09-09  0:00                   ` Ken Garlington
1996-08-30  0:00         ` Jon S Anthony
1996-08-26  0:00       ` Ken Garlington
1996-08-26  0:00         ` Dave Jones
1996-08-27  0:00           ` Ken Garlington
1996-08-30  0:00             ` ++           robin
1996-09-04  0:00               ` Ken Garlington
1996-09-06  0:00                 ` ++           robin
1996-09-18  0:00               ` Merlin Dorfman
1996-09-20  0:00                 ` John McCabe
1996-08-30  0:00         ` ++           robin
1996-08-30  0:00           ` John McCabe
1996-09-06  0:00       ` Jon S Anthony
1996-09-06  0:00         ` Robert Dewar
1996-08-23  0:00   ` Jon S Anthony
1996-08-26  0:00     ` ++           robin
1996-07-26  0:00 ` Ariane 5 - not an exception? ++           robin
1996-07-29  0:00   ` Bill Angel
1996-07-29  0:00     ` Paul_Green
1996-07-30  0:00     ` Bob Kurtz
1996-07-30  0:00     ` Nancy Mead
1996-07-31  0:00       ` Steve O'Neill
1996-07-31  0:00       ` Tucker Taft
1996-08-01  0:00       ` root
1996-08-01  0:00         ` Tucker Taft
1996-07-30  0:00     ` Richard Shetron
1996-07-30  0:00       ` ++           robin
1996-07-30  0:00     ` Lloyd Fischer
1996-07-30  0:00     ` Ken Garlington
1996-08-04  0:00     ` Richard Riehle
1996-08-05  0:00       ` John McCabe
1996-08-05  0:00       ` Nigel Tzeng
1996-08-06  0:00         ` John McCabe
1996-08-05  0:00       ` Fergus Henderson
1996-08-13  0:00       ` ++           robin
1996-08-13  0:00         ` Ken Garlington
1996-08-13  0:00           ` Kirk Bradley
1996-08-14  0:00             ` Ken Garlington
1996-08-18  0:00           ` PL/I Versus Ada (Was: Arianne ...) Richard Riehle
1996-08-19  0:00             ` Robert Dewar
1996-08-20  0:00             ` Lon Amick
1996-08-21  0:00             ` Tim Dugan
1996-08-21  0:00             ` Lon D. Gowen, Ph.D.
1996-08-21  0:00             ` Tony Konashenok
1996-08-28  0:00               ` Richard Riehle
1996-08-29  0:00                 ` Lon D. Gowen, Ph.D. [this message]
1996-08-30  0:00                   ` Tony Konashenok
1996-08-30  0:00                     ` Adam Beneschan
1996-08-30  0:00                 ` John McCabe
1996-08-23  0:00             ` arbuckj
1996-08-22  0:00           ` Ariane 5 - not an exception? ++           robin
1996-08-22  0:00             ` Ken Garlington
1996-08-13  0:00         ` Darren C Davenport
1996-08-14  0:00         ` John McCabe
1996-08-19  0:00           ` Chris Papademetrious
1996-08-22  0:00           ` ++           robin
1996-08-22  0:00             ` Martin Tom Brown
1996-08-22  0:00             ` John McCabe
1996-08-23  0:00               ` Ken Garlington
1996-08-24  0:00                 ` John McCabe
1996-08-26  0:00                   ` Byron B. Kauffman
1996-08-27  0:00                     ` John McCabe
1996-08-28  0:00                       ` Byron B. Kauffman
1996-08-28  0:00                         ` Robert Dewar
1996-08-29  0:00                           ` Ted Dennison
1996-08-30  0:00                         ` John McCabe
1996-08-23  0:00             ` Bob Gilbert
1996-08-24  0:00               ` Robert I. Eachus
1996-08-25  0:00                 ` John McCabe
1996-08-27  0:00                 ` Tom Speer
1996-08-26  0:00               ` Jon S Anthony
1996-08-20  0:00         ` Richard Riehle
1996-07-30  0:00   ` Steve O'Neill
1996-07-31  0:00     ` Martin Tom Brown
1996-07-31  0:00       ` Nigel Tzeng
1996-08-02  0:00       ` Ken Garlington
1996-08-03  0:00         ` Thomas Kendelbacher
1996-08-01  0:00     ` ++           robin
1996-08-01  0:00       ` Ken Garlington
1996-08-05  0:00         ` John McCabe
1996-08-06  0:00           ` Ken Garlington
1996-08-06  0:00           ` Ken Garlington
1996-08-06  0:00           ` Mark van Walraven
1996-08-02  0:00       ` Pascal Martin @lone
1996-08-03  0:00         ` Dr. Richard Botting
1996-08-05  0:00           ` system
1996-08-06  0:00         ` ++           robin
1996-08-08  0:00           ` Darius Blasband
1996-08-10  0:00             ` dwnoon
1996-08-12  0:00               ` Thomas Kendelbacher
1996-08-13  0:00                 ` ++           robin
1996-08-13  0:00             ` Roy Gardiner
1996-08-13  0:00               ` Ken Garlington
1996-08-13  0:00               ` Lance Kibblewhite
1996-08-13  0:00             ` ++           robin
1996-08-15  0:00             ` Richard Riehle
1996-08-05  0:00       ` Steve O'Neill
1996-08-06  0:00         ` Frank Manning
1996-08-08  0:00           ` Steve O'Neill
1996-08-09  0:00             ` Pat Rogers
1996-08-09  0:00           ` JP Thornley
1996-08-06  0:00         ` Francis Lipski
1996-08-07  0:00           ` Martin Tom Brown
1996-08-09  0:00             ` Ken Garlington
1996-08-13  0:00         ` ++           robin
1996-08-13  0:00           ` Steve O'Neill
1996-07-30  0:00   ` Ken Garlington
1996-08-02  0:00     ` Craig P. Beyers
1996-08-01  0:00   ` Jon S Anthony
1996-08-02  0:00   ` James Kanze US/ESC 60/3/141 #40763
1996-08-06  0:00   ` Robert I. Eachus
1996-08-06  0:00   ` Stefan 'Stetson' Skoglund
1996-07-26  0:00 ` Bob Gilbert
1996-07-29  0:00   ` Martin Tom Brown
1996-07-30  0:00     ` John McCabe
1996-07-31  0:00       ` Greg Bond
1996-08-03  0:00         ` John McCabe
1996-07-26  0:00 ` JP Thornley
1996-07-29  0:00   ` Ken Garlington
1996-07-29  0:00   ` Nigel Tzeng
1996-07-29  0:00   ` JP Thornley
1996-07-30  0:00   ` Robert I. Eachus
1996-07-31  0:00     ` JP Thornley
1996-08-01  0:00       ` Alan Brain
1996-08-02  0:00         ` JP Thornley
1996-08-01  0:00   ` Ken Garlington
1996-07-26  0:00 ` Theodore E. Dennison
1996-07-29  0:00   ` Ken Garlington
1996-07-27  0:00 ` Bill Angel
1996-07-30  0:00 ` Dr. Richard Botting
1996-07-30  0:00   ` David Weller
1996-07-30  0:00     ` Robert Dewar
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox