comp.lang.ada
 help / color / mirror / Atom feed
From: Georg Bauhaus <see.reply.to@maps.futureapps.de>
Subject: Re: The A-Z of Programming Languages: Ada, interview with S. Tucker Taft
Date: Thu, 05 Jun 2008 21:40:55 +0200
Date: 2008-06-05T21:40:55+02:00	[thread overview]
Message-ID: <48484147$0$7547$9b4e6d93@newsspool1.arcor-online.net> (raw)
In-Reply-To: <ibs82g.kbj.ln@hunter.axlog.fr>

Jean-Pierre Rosen wrote:
> Georg Bauhaus a �crit :
>> IIUC what Taft says in the interview, Ichbiah didn't like the
>> _way_ OOP was to be implemented. OTOH he had been working on a
>> Simula compiler at INRIA.  So maybe OOP alone was not the elephant.
>>
> Certainly. Actually, Ichbiah was well aware of the benefits of OOP, and
> actually that's why he insisted for having derived types in Ada83,
> against the opinion of the rest of his team.

Thanks.
As promised, here is what Meyer quotes from Ichbiah's resignation
letter:

"A massive increase in complexity will result from 9X adding one or more
additional possibilities where Ada now offers two. For example, 9X adds:
[...] access parameters, to IN, OUT, and IN OUT; tagged types, to normal
types; dispatched subprogram calls, to normal subprogram calls; use type
clause, to use package clauses; ... With 9X, the number of interactions
to consider is close to 60,000 since we have 3 or more possibilities in
each case (that is, 3^10)."    (OOSC2, �33.7, p.1095)

The comment "adds: tagged types, to normal types" is particularly
interesting, I think, because it touches on a consequence of
this distinction:  sloppy versus exact base type systems:

  Eiffel tries to have basically one kind of type definition,
namely the class---even though "expanded class" "adds one or more
additional possibilities", if I may aim Ichbiah's comment at
Eiffel. Compiler magic is/was used for types such as INTEGER or REAL.
Some operations of INTEGER are "require"-predicates used for testing
whether or not an integer value fits a subsets of INTEGER,
e.g. 8-bit integers.

  Ada, as mentioned by Ichbiah, has "normal" types for defining
integers, reals, etc., and tagged types for defining polymorphic types.
You want integers between 0 and 10_000 only? Define a corresponding
normal type, or do "normal" derivation from another integer type
adding the needed constraint.
(Part of the language since Ada 83 as pointed out by J.-P. Rosen above.)

What I find so interesting is that these ways to define basic types
might show that there are undeniable reasons to require two type
definition mechanisms. (I guess this is not news to people who worked
on either Ada 9X or Eiffel, but it appears to be news to a new audience
tackling the base type system. And the presence of one or the other
always affects programs.)

Do the Eiffel base types work well?  Do they match the "normal"
integer types of Ada in practice?  Using cut&paste polymorphism
and renaming one can change INTEGER to a different INTEGER with more
specific require predicates, predicates even more powerful than Ada's
range constraints(*).  Still, people coming to Eiffel have more than
once asked for more programmer control of basic Eiffel types such as
INTEGER and FLOAT.  Messing with base types, renaming and cluster
management do not look like the best solution.

So maybe there is good reason to have both normal types, and tagged
types, even if this complicates the language?

_____
(*) Some hard work has been done with the goal of enhancing
Ada's type constraints in the sense of DbC. It has been published
as AIs and elsewhere.

X'Post
-- Georg Bauhaus



  reply	other threads:[~2008-06-05 19:40 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-06-04 10:52 The A-Z of Programming Languages: Ada, interview with S. Tucker Taft Ludovic Brenta
2008-06-04 14:14 ` Georg Bauhaus
2008-06-04 14:59   ` Ludovic Brenta
2008-06-05  2:01     ` Marc A. Criley
2008-06-05 13:58       ` Georg Bauhaus
2008-06-05 14:13         ` Jean-Pierre Rosen
2008-06-05 19:40           ` Georg Bauhaus [this message]
2008-06-05 20:46             ` Dmitry A. Kazakov
2008-06-06 17:57               ` Georg Bauhaus
2008-06-06 19:34                 ` Dmitry A. Kazakov
2008-06-05 15:00         ` Ed Falis
2008-06-12  1:57           ` Randy Brukardt
2008-06-12  7:25             ` christoph.grein
2008-06-06 14:09 ` Ludovic Brenta
replies disabled

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