comp.lang.ada
 help / color / mirror / Atom feed
* Re: Ichibah flames, and flames out over, Ada 9X
@ 1993-02-24 21:10 John Goodsen
  1993-02-25  3:48 ` agate!usenet.ins.cwru.edu!magnus.acs.ohio-state.edu!cis.ohio-state.edu!ne
  0 siblings, 1 reply; 7+ messages in thread
From: John Goodsen @ 1993-02-24 21:10 UTC (permalink / raw)


koehnema@enuxha.eas.asu.edu (Harry Koehnemann)

>In article <1993Feb17.065421.12021@sei.cmu.edu> wellerd@ajpo.sei.cmu.edu (Davi
d Weller) writes:
>>Speaking of tagged types,
>>it was my impression that this was Mr. Ichbiah's most sour grape.
>>He was rather insistent on creating a class-based language, rather
>>than the tagged types that we have now.  Although I agreed with him
>>on quite a few points, Tucker's counterpoints were far more
>>compelling.  
>
>Now that's interesting, if it is indeed true.  Technical merits are
>not the sole consideration for any design.  WHile the package/type
>extension approach may have advantages over a class based approach,
>it also has disadvantages - perhaps the largest being understanding
>by developers.  Class based langauges are common, their usage well
>understood (well, as understood as things get in CS), and most
>importantly, are currently embrassed by OO developers.  Type
>extensions (tagged types), while by no means a new concept, are not
>seen in the popular OO langauges.
>
>I think it will be interesting to see how the OO community that Ada
>seeks to crack will embrace extensions as a construct for inheritance.
>Particularly considering their past acceptance of the construct.  I
>also think the Ada community has a big sell ahead of itself.  Not that
>it can't be done, but "technical merit" does not directly lead to
>"popular" or "used" (ask FORTRAN and COBOL - and unfortunately Ada83).
>

How true.  A technological feasible solution in no way gaurantees
a success.  There is a concept of "perceived" need versus "actual"
need.  You don't market to "actual" needs, but to "perceived" needs.
The perception in the OO community is that the class is the natural
structuring concept.  The Ada 9X approach to classes, while technically
feasible is going to have a tough sell into NEW markets, because it
lacks the perception necessary to be embraced by a mainstream of
OO developers.  In particular, the concept of a "class" as a basic
object oriented structuring mechanism.  This same argument also
applies to the lack of direct support for multiple inheritance in Ada9X.  
While there have been proposals on how to perform MI using generics
or method delagation (which are still debatable), the perception 
of multiple inheritance as a core component of the language is not
there and will also hinder the marketing of Ada into NEW markets ...
While those of us who already know and like Ada are excited about
9X features, these 2 lacking perceptual needs (Class level packaging
and Multiple Inheritance) will negatively impact the growth potential
of this powerful language.

Before the flame war on this starts again, execute the following:


 If Flamer Has_Not_Read(DRAGOON) then
    Redirect_Flames ( to => "/dev/null" );
 end if;

--
John Goodsen
Software Process & Environments
EVB Software Engineering
jgg@evb.com



-- 
John Goodsen
Software Process & Environments
EVB Software Engineering
jgg@evb.com

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Ichibah flames, and flames out over, Ada 9X
@ 1993-02-25  3:48 ` agate!usenet.ins.cwru.edu!magnus.acs.ohio-state.edu!cis.ohio-state.edu!ne
  1993-02-25 17:08   ` Harry Koehnemann
       [not found]   ` <1993Feb25.150846.20363@seas.gwu.edu>
  0 siblings, 2 replies; 7+ messages in thread
From: agate!usenet.ins.cwru.edu!magnus.acs.ohio-state.edu!cis.ohio-state.edu!ne @ 1993-02-25  3:48 UTC (permalink / raw)


In article <1993Feb24.211028.8076@evb.com> jgg@evb.com (John Goodsen) writes:
>How true.  A technological feasible solution in no way gaurantees
>a success.  There is a concept of "perceived" need versus "actual"
>need.  You don't market to "actual" needs, but to "perceived" needs.
>The perception in the OO community is that the class is the natural
>structuring concept.  The Ada 9X approach to classes, while technically
>feasible is going to have a tough sell into NEW markets, because it
>lacks the perception necessary to be embraced by a mainstream of
>OO developers.  In particular, the concept of a "class" as a basic
>object oriented structuring mechanism.  This same argument also
>applies to the lack of direct support for multiple inheritance in Ada9X.  
>While there have been proposals on how to perform MI using generics
>or method delagation (which are still debatable), the perception 
>of multiple inheritance as a core component of the language is not
>there and will also hinder the marketing of Ada into NEW markets ...
>While those of us who already know and like Ada are excited about
>9X features, these 2 lacking perceptual needs (Class level packaging
>and Multiple Inheritance) will negatively impact the growth potential
>of this powerful language.
>
>Before the flame war on this starts again, execute the following:
>
>
> If Flamer Has_Not_Read(DRAGOON) then
>    Redirect_Flames ( to => "/dev/null" );
> end if;
>
>--
>John Goodsen
>Software Process & Environments
>EVB Software Engineering
>jgg@evb.com

Well, since I have not only read DRAGOON (actually, the _book_ has a
different title :-), but am also working with Colin Atkinson on 
extensions to DRAGOON (and translation thereof into Ada 9X), I feel
qualified to respond to Mr. Goodsen's points.  WARNING: This won't be
a flame -- hope I didn't disappoint anybody. :-)

The 9X community, IMHO, has struggled with this problem, that the
_perception_ that 9X will be a "weaker" language than C++ because
it lacks MI and is not class-based.  Indeed, this was the crux of my
argument against tagged types many months ago (which lead Jean Ichbiah
to chime in with me on this issue, which lead to the tagged vs.
class debate, which lead to "The Vote", which lead to Mr. Ichbiah's
resignation as a DR, which lead to a GCN article on it, which lead to
my reply here, which created this thread.  Ain't it funny how things
come back to haunt you?).  Since that time, I've had several frank
discussions with Tucker, who has done a commendable job of creating
an extension to Ada which supports features that are necessary for
Good Software Engineering(tm).

Ada 9X will indeed have a "tough sell" to the unwashed masses who
believe that MI is a Good Thing for an OO language.  Adding MI
was discussed at great length on here a couple of years ago, culminating
with TUcker's survey of OO developers (trying to find where MI
was actively/genuinely used in _real_ OO projects).  The survey
revealed little, if any use.  And, as I recall, many places indicated
they forbid the use of MI (lattice effects tucked in a class four levels
away are HORRIBLE to fix!).  After careful consideration, the 9X MRT
decided that MI was too difficult to add into Ada SAFELY without adding
excessive overhead.  I'm dredging this all up from memory.  Perhaps
Tuck or Ed Schonberg can throw some more comments in here.  

As for Ada not being class-based -- GREAT!  I'm convinced that, in the
long run (which Ada was designed for, right? :-), tagged types will
prove FAR more versatile.  The problem is SELLING the concept to people
who are so closed-minded as to believe that class-based languages are
the "bee's knees" for OO (then again, one could say us "taggers" are
close-minded, huh?).  Mind you, I was NOT an easy convert on this issue.
I raised my share of stink on the 9X mailgroup (look back in Aug/Sept 92
timeframe).

I'd be interested to hear what your arguments are for making Ada
class-based (meaning, I haven't heard a NEW one for months).  Not
that it matters anymore anyway.

Oh, one final sales pitch for DRAGOON: Seems that the Italian company
that markets DRAGOON isn't having much success in the US, since there
is no marketing agency within the US.  If you know of a software house
that would liek to court TXT Inginerie to market DRAGOON within the US,
that would be great.  I think DRAGOON is a great language, and can grow
with more US usage.  Any takers?

dgw

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Ichibah flames, and flames out over, Ada 9X
@ 1993-02-25 17:08   ` Harry Koehnemann
  1993-03-01 15:59     ` Tucker Taft
  0 siblings, 1 reply; 7+ messages in thread
From: Harry Koehnemann @ 1993-02-25 17:08 UTC (permalink / raw)


In article <1993Feb24.224827.27672@sei.cmu.edu> wellerd@ajpo.sei.cmu.edu (David
 Weller) writes:
>As for Ada not being class-based -- GREAT!  I'm convinced that, in the
>long run (which Ada was designed for, right? :-), tagged types will
>prove FAR more versatile.  The problem is SELLING the concept to people
>who are so closed-minded as to believe that class-based languages are
>the "bee's knees" for OO (then again, one could say us "taggers" are
>close-minded, huh?).

Hard to say.  I hear all this hype about tagged types and I see a
few small examples of how they're used with packages/generics/...,
but has anyone implemented a few OO problems with each and compared
them? Semantically, it was easier to add extensiosn to Ada than a
class construct.  But, I think the jury's still out on the "type
extensions > classes" question.

And, maybe it's not as much close minded as cost.  Someone told me
to invest all this money up front on reusable class libraries.  Now
you want me to switch to a non class-based language?  Doubt it will
happen.  People seem to use what they like and OO developers like a
class construct.  Tagged types are not new and for some reason or
another were never embraced by the OO community.  Should be an
interesting next fwew years.
--
Harry Koehnemann			Arizona State University
koehnema@enuxha.eas.asu.edu		Computer Science Department

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Ada9X, DRAGOON, etc.
       [not found]     ` <SRCTRAN.93Feb26102644@world.std.com>
@ 1993-02-26 23:41       ` David Weller
  1993-02-27 18:28         ` Michael Feldman
  0 siblings, 1 reply; 7+ messages in thread
From: David Weller @ 1993-02-26 23:41 UTC (permalink / raw)


In article <SRCTRAN.93Feb26102644@world.std.com> srctran@world.std.com (Gregory Aharonian) writes:
>
>    But Mike's statements implicitly contradict each other and portend
>a sad future for Ada9X - that it will be less accepted in the non-mandated
>world than Ada83.  I do not believe that the current Ada vendors will be
>able to change their ways.  Even now, one of them, Rational, is gradually
>moving away from the Ada world to the C++ world (as evidenced by the ads
>with Grady Booch's smiling face pushing the C++ version of the Booch
>components).
>

Your claim that Rational is moving away from Ada is false.  You observed
Rational expanding into the C++ domain (which is a good thing) and
concluded a weakening in the Ada domain.  Nothing is further from the truth.
Also, keep in mind, Grady's smiling face pushing conferences like
"C++ by Design" does not imply Rational is throwing their hands up
on Ada.  Grady doesn't always speak for Rational.  

>Greg Aharonian
>Source Translation & Optimization
>"Fund me or flame me - anything else is an insult"
>-- 

OK, I guess it was a flame :-)

dgw
>**************************************************************************
>Greg Aharonian
>Source Translation & Optimiztion
>P.O. Box 404, Belmont, MA 02178





^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Ada9X, DRAGOON, etc.
  1993-02-26 23:41       ` Ada9X, DRAGOON, etc David Weller
@ 1993-02-27 18:28         ` Michael Feldman
  0 siblings, 0 replies; 7+ messages in thread
From: Michael Feldman @ 1993-02-27 18:28 UTC (permalink / raw)


In article <1993Feb26.184152.10231@sei.cmu.edu> wellerd@ajpo.sei.cmu.edu (David Weller) writes:
>In article <SRCTRAN.93Feb26102644@world.std.com> srctran@world.std.com (Gregory Aharonian) writes:
>>
>>    But Mike's statements implicitly contradict each other and portend
>>a sad future for Ada9X - that it will be less accepted in the non-mandated
>>world than Ada83.  I do not believe that the current Ada vendors will be
>>able to change their ways.  Even now, one of them, Rational, is gradually
>>moving away from the Ada world to the C++ world (as evidenced by the ads
>>with Grady Booch's smiling face pushing the C++ version of the Booch
>>components).
>>
>
>Your claim that Rational is moving away from Ada is false.  You observed
>Rational expanding into the C++ domain (which is a good thing) and
>concluded a weakening in the Ada domain.  Nothing is further from the truth.
Time will tell.

>Also, keep in mind, Grady's smiling face pushing conferences like
>"C++ by Design" does not imply Rational is throwing their hands up
>on Ada.  Grady doesn't always speak for Rational.  
IMHO, Grady needs to make more of a distinction between his responsibilities
for Rational and the other things he does. If I recall, the C++ By Design"
"conference" (actually I think it was more like an expensive seminar)
gave his affiliation as Rational. Under those circumstances, we can assume
safely that he was speaking for his employee. If Grady was free-lancing
here, his affiliation should not have been given as Rational.

Just my 2 cents. I have the same problem sometimes, by the way.

Mike Feldman
>
>>Greg Aharonian
>>Source Translation & Optimization
>>"Fund me or flame me - anything else is an insult"
>>-- 
>
>OK, I guess it was a flame :-)
>
>dgw
>>**************************************************************************
>>Greg Aharonian
>>Source Translation & Optimiztion
>>P.O. Box 404, Belmont, MA 02178
>
>





^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Ichibah flames, and flames out over, Ada 9X
  1993-02-25 17:08   ` Harry Koehnemann
@ 1993-03-01 15:59     ` Tucker Taft
  1993-03-02  7:43       ` Dag Bruck
  0 siblings, 1 reply; 7+ messages in thread
From: Tucker Taft @ 1993-03-01 15:59 UTC (permalink / raw)


In article <1993Feb25.170827.2178@ennews.eas.asu.edu> 
  koehnema@enuxhb.eas.asu.edu (Harry Koehnemann) writes:

>. . . I hear all this hype about tagged types 

I'm glad to know that at least we are getting some "hype" out
on Ada 9X.  As any good marketer knows, publicity of any kind is often
better than no publicity at all. ;-)

> . . . and I see a
>few small examples of how they're used with packages/generics/...,
>but has anyone implemented a few OO problems with each and compared
>them? Semantically, it was easier to add extensiosn to Ada than a
>class construct.  But, I think the jury's still out on the "type
>extensions > classes" question.

Actually, there really is not that much difference.  A class-based language
happens to have type = module, whereas in package/module-based languages,
types are declared inside of modules.  If you only declare one type
in a module, you effectively achieve type = module.  It is interesting
that in C++, a need for nested types/classes has emerged, so that one can have
"helper" types (for example an enumeration type) local to a class.
So even in C++ one can end up with multiple types per module.
The details are slightly different, but the functionality and capability
are largely the same.  Also, it is worth mentioning that languages like
CLU adopted type=module even without having OOP.  So this choice
ultimately has relatively little to do with the OOP functionality.

Ada 83 happened to chose the module/package approach, and it seemed unwise to
create an unrelated type=module OOP "corner" for Ada 9X, just to add dynamic
binding and full inheritance.  We felt it was much more consistent to
enhance the existing simple inheritance already provided by "derived types"
to provide type extension.  Dynamic binding has almost nothing to do
with type=module vs type-inside-module, and can be added to either quite
straightforwardly.

But in any case, the debate between Jean Ichbiah and the 
Ada 9X Mapping/Revision Team (MRT) was not really about 
"classes" vs. "type extensions," it was whether we 
should use the keyword "class" in the syntax for type extensions.
The MRT felt that it would simply further confuse the issue by trying
to cloak our type extensions in the word "class."  So the issue was
really about which syntax was most suggestive of the semantics --
a kind of issue that unfortunately does not lend itself to objective
debate, even though it creates strong feelings on both sides.

>And, maybe it's not as much close minded as cost.  Someone told me
>to invest all this money up front on reusable class libraries.  Now
>you want me to switch to a non class-based language?  Doubt it will
>happen.  

Even if Ada 9X were "class-based," this would not magically create
interoperability between C++ and Ada 9X implementations or their
libraries.  In fact, there is no fundamental semantic barrier 
to interoperability between C++ and Ada 9X.  For almost every
feature of the two languages, there is a very direct mapping.

The real barrier to interoperability is an implementation one.  Both
languages allow many alternatives in implementation strategy.
Achieving interoperability between two different implementations of
C++ is hard enough.  The same goes for Ada.  Achieving interoperability
between a given implementation of C++ and one for Ada 9X is highly
doable, but it is by no means trivial, and requires an implementor
to focus on the goal early in the design of the run-time model.
Since both GNAT and G++ will share a backend, it will be interesting
to see how much interoperability emerges "by accident" and how much
"by design." (I don't know what are the goals for interoperability of
GNAT and G++.)

> . . . People seem to use what they like and OO developers like a
>class construct.  Tagged types are not new and for some reason or
>another were never embraced by the OO community.

It is interesting to see the statement that "tagged types are not new."
Presumably you mean "OOP with a type-inside-module language is not new."
True.  You might want to look at Turbo Pascal with Objects, or 
Apple's ObjectPascal.  These represent quite successful "type-inside-module"
OOP languages.  But of course, C++ is the dominant player these days,
and since C didn't have a preexising module facility (other than the
"source-file = module" concept), it made good sense to kill two birds
with one stone and get modules and abstract data types in one "swell foop."

Despite the enormous success of C++, there is still a lot of (at least 
academic) interest in the new OOP languages Modula-3 and Oberon-2, both 
of which have gone the type-inside-module.  So it may be too early to say that
"we have a winner."  And for that matter, once you start using one
of these languages, you will probably discover the type=module vs.
type-inside-module choice has very little effect on how you design
and structure your OOP systems.  You will end up creating groups of
types whether or not the language directly supports the concept of
"modules."  Similarly, you will often end up having one (primary) type 
in a module, even if the language allows multiple such types.
The structure of the problem will probably have more effect on 
the structure of the program than does the type=module vs. type-inside-module
decision of the language designer.

> . . .Should be an
>interesting next few years.

No debate there.

Independent of this type=module vs. type-inside-module issue, 
there are in fact some differences between the Ada (83 and 9X) 
language design philosophy and the C++ philosophy.  But even
in the fundamental philosophy, there has been more convergence
than divergence as time has passed.  

Ada is oriented toward maximizing the number 
of errors that are caught at compile-time, and then,
for those that can't be checked at compile-time, there is a full
set of run-time checks.  The run-time checks can be supressed, but
many compiler vendors take it as a challenge to provide sufficient
optimization that the run-time checks can be left "on" while still
achieving production-level performance.  

C++ clearly has added more compile-time 
checking possibilities, first by providing for function 
"prototypes" (since adopted by ANSI C), second, and perhaps more importantly,
by adding support for abstract data types, and third (most recently),
by adding a full template capability that minimizes the number of
"casts" that must be written outside of the implementation of a template.
Nevertheless, C++ has avoided defining run-time checks (although they are 
adding exception handling so that abstract data types can provide them in
a convenient way).  Now that C++ is being standardized, more rather
than less checks are being defined (e.g., some kind of checked "down-cast").

Interestingly, a number of tools have sprung up to 
provide run-time checks for C++ programmers (e.g. CenterLine's
ObjectCenter, Pure Software's Purify).  However, the run-time checks
provided by such tools currently impose a higher run-time 
overhead than the corresponding (standardized) checks in Ada, 
because they haven't been integrated in with the optimizer, and in 
some cases, are performed by interpreting rather than by direct execution.
The fact that these checks are provided by separate tools (much
as "lint" used to be used instead of having function prototypes) reflects
the C/C++ philosophy of keeping the language semantics simple, and leaving
checking to the environment.  The advantage of this approach is offset
somewhat by the lack of portability in what checks any given environment 
enforces, and in the (currently significant) difference in performance in the 
presence of checks.

If there were a clearly "right" answer, then we would only need one
language.  At any given time, one language, one computer company, one
ISA, one design approach will tend to be dominant.  
However, over time, things change.  It is hard to predict 
whether C++ (and OOP for that matter) will remain predominant indefinitely, or
whether languages that make slightly, or radically, different choices
will emerge to take its place for "mission-critical" systems programming.  

We have tried to make Ada 9X as powerful, flexible, uniform,
and usable a systems-programming language as possible, within the 
constraints of its existing "safety-first" 
philosophy, the time available for revision,
and the desire to minimize new complexity in the language, while
eliminating what old complexity exists in the way of unnecessary
arbitrary restrictions and special cases.  Or, in other words, we
have tried to minimize any *techical* barriers to its use.  Other
people (such as the Ada 9X Project Office) have taken it upon
themselves to try to minimize the non-technical barriers (e.g. by
funding GNAT, encouraging Ada-based courses in universities, arranging
low-cost compilers for academic use, etc.).  

Time will tell whether Ada 9X emerges as an attractive 
and viable alternative to C++, or whether some
as yet unnamed language emerges, or whether C++ remains 
the predominant language indefinitely.  The nice thing 
about competition is that, in general, the users benefit 
in any case, since all of the alternatives are being 
improved and the number of good choices keeps increasing.

>--
>Harry Koehnemann			Arizona State University
>koehnema@enuxha.eas.asu.edu		Computer Science Department

S. Tucker Taft    stt@inmet.com
Ada 9X Mapping/Revision Team
Intermetrics, Inc.
Cambridge, MA  02138



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Ichibah flames, and flames out over, Ada 9X
  1993-03-01 15:59     ` Tucker Taft
@ 1993-03-02  7:43       ` Dag Bruck
  0 siblings, 0 replies; 7+ messages in thread
From: Dag Bruck @ 1993-03-02  7:43 UTC (permalink / raw)


In <comp.lang.ada> stt@spock.camb.inmet.com (Tucker Taft) writes:
>
>Independent of this type=module vs. type-inside-module issue, 
>there are in fact some differences between the Ada (83 and 9X) 
>language design philosophy and the C++ philosophy.  But even
>in the fundamental philosophy, there has been more convergence
>than divergence as time has passed.  

It is worth pointing out that in many cases, classes in C++ are used
only as abstract datatypes, i.e., without using inheritance or virtual
functions.  This common use of classes is very close to Ada packages.

>Interestingly, a number of tools have sprung up to 
>provide run-time checks for C++ programmers (e.g. CenterLine's
>ObjectCenter, Pure Software's Purify).  However, the run-time checks
>provided by such tools currently impose a higher run-time 
>overhead than the corresponding (standardized) checks in Ada, 
>because they haven't been integrated in with the optimizer, and in 
>some cases, are performed by interpreting rather than by direct execution.

I would like to comment as a user of Purify.  Some of the overhead,
probably a significant portion, comes from checks that are not normally
done by a civilized compiler with run-time checks.  Purify will also
check all system libraries, e.g., your X11 library, which are normally
compiled without debugging and checks turned off to improve speed.

>The fact that these checks are provided by separate tools (much
>as "lint" used to be used instead of having function prototypes) reflects
>the C/C++ philosophy of keeping the language semantics simple, and leaving
>checking to the environment.  The advantage of this approach is offset
>somewhat by the lack of portability in what checks any given environment 
>enforces, and in the (currently significant) difference in performance in the 
>presence of checks.

I think this has nothing to do with language semantics.  For example,
it is clear that accessing a piece of storage that was explicitly
deallocated is an error, in C++ as in any other language.  Few, if any,
language implementations check this, but Purify does.

I think this is a typical example where tools go beyond the language
implementation by adding checks that are not normally present, but
still does not add any semantics to the language.

There are of course other advantages to the tool approach.  In the
case of Purify, one advantage is that it can be used on code produced
by several compilers (but not any compiler, of course), which in some
sense increases portability.

Perhaps someone can answer this question: what kind of debugging
support (along the lines suggested above) will typical Ada
implementations give for unchecked deallocation?


			-- Dag



^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~1993-03-02  7:43 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1993-02-24 21:10 Ichibah flames, and flames out over, Ada 9X John Goodsen
1993-02-25  3:48 ` agate!usenet.ins.cwru.edu!magnus.acs.ohio-state.edu!cis.ohio-state.edu!ne
1993-02-25 17:08   ` Harry Koehnemann
1993-03-01 15:59     ` Tucker Taft
1993-03-02  7:43       ` Dag Bruck
     [not found]   ` <1993Feb25.150846.20363@seas.gwu.edu>
     [not found]     ` <SRCTRAN.93Feb26102644@world.std.com>
1993-02-26 23:41       ` Ada9X, DRAGOON, etc David Weller
1993-02-27 18:28         ` Michael Feldman

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