comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Ichbiah's Letter
Date: Sat, 25 Oct 2014 12:04:04 +0200
Date: 2014-10-25T12:04:04+02:00	[thread overview]
Message-ID: <1pgm5po9g6xht$.1svdogelukl6r$.dlg@40tude.net> (raw)
In-Reply-To: 87k33oecnw.fsf@ixod.org

On Sat, 25 Oct 2014 10:12:03 +0100, Mark Carroll wrote:

> Of course, as an Ada novice, it raises the question for me of to what
> extent the voiced concerns were actually borne out.

There was much truth in what Ichbiah wrote. Newer versions of Ada added
greatly to complexity. Still all underlying concepts were sound and
necessary. But the shape they took was questionable at best.

The only way to maintain complexity of this sort is breaking a new level of
generalisation. Ada's design consistently failed this which led to a blown
up language.

[...]
> So, did Ada get all kinds of confusing extra interacting-features stuff
> added? Despite any greater consequent complexity in the compiler or
> run-time, is it easy for people needing to write really clear, certain
> code to avoid those corners of the language and keep with a
> solid-feeling subset, or is it all clear enough that there's no need to
> hide from scary corners?

Language subsets is a very popular and deeply wrong idea, IMO. It is
frequently promoted by many in Ada community, e.g. notorious claims that
one could choose if he wanted to use OO features or stay strictly
procedural. Exactly this attitude leads to explosion of complexity as you
need all functionality anyway in all popular subsets of single language.

> Basically, if I am learning about modern Ada, I wonder how soon I'll
> reach high confidence about what my code that actually compiles will do
> when I execute it, or to what extent I'll have to adopt certain
> disciplines, or avoid certain things, to achieve that.

The concept of safe language Ada 83 promoted was that disciplines must have
been a side effect of applying the language rather than of persistent
awareness of the programmer moving across the minefield. From the software
engineering POV, you cannot depend on willingness to follow the rules to
obtain predictable result and desired level of quality.

> For instance, I
> would imagine that the contract-based programming offered in Ada 2012 is
> actually a move toward greater reliability without making the actual
> code that does stuff any harder to understand,

Actually most these features significantly decrease code reliability as
accessibility checks did to Ada 95. Ichbiah mentions them. Presently
approximately 50-80% of all run-time faults are due to false-positive
dynamic checks. I don't know how large will be the rate of false-positive
checks with dynamic constraints. This depends on practice and yet to be
seen. However seeing predicates containing Integer'Value (Text) discussed
here, I would suggest it high.

> and the way they seem to
> be written in some logic-based language looks encouraging: plenty of
> languages have some kind of "assert <Boolean>" statement, but writing
> the predicates declaratively means that the "rephrasing" of at least
> some aspect of what the code does

This is another problem with it. Declarations shall *not* contain
implementation of the behavior. New features do exactly the opposite.

A contract should state verifiable constraints on the implementation. It is
not "what" it is "how".

> might (a) make me think more clearly
> and deeply about what it does and (b) being a rephrasing, not propagate
> bugs in the code to become matching bugs in how I check that things are
> as I thought.

There are two related but different concepts:

1. Contract [how]

2. Correctness proof [what]

#2 includes checking contracts. Neither shall produce executable code. Yes,
both are incredible useful.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de


  reply	other threads:[~2014-10-25 10:04 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-24 18:20 Ichbiah's Letter vincent.diemunsch
2014-10-24 18:47 ` Jeffrey Carter
2014-10-24 19:39   ` David Botton
2014-10-24 20:50     ` David Botton
2014-10-25  8:05   ` vincent.diemunsch
2014-10-25  9:12     ` Mark Carroll
2014-10-25 10:04       ` Dmitry A. Kazakov [this message]
2014-10-25 11:25         ` Simon Wright
2014-10-26  5:33           ` Randy Brukardt
2014-10-26 16:28   ` Jacob Sparre Andersen
2014-10-26 17:46     ` Simon Clubley
2014-10-26 22:36       ` Jacob Sparre Andersen
2014-10-27  3:00       ` Shark8
2014-10-26 17:59     ` invalid
2014-10-27  0:35       ` Dennis Lee Bieber
2014-10-27  3:01     ` Shark8
2014-10-27 22:10     ` Randy Brukardt
2014-10-28  9:45       ` Georg Bauhaus
  -- strict thread matches above, loose matches on Subject: below --
1993-04-20 10:10 cis.ohio-state.edu!zaphod.mps.ohio-state.edu!howland.reston.ans.net!torn!
1993-04-16  9:24 pipex!uknet!warwick!zaphod.crihan.fr!univ-lyon1.fr!scsing.switch.ch!sicsu
1993-04-16  7:26 Hu Man
1993-04-15 19:34 David Emery
1993-04-15 18:01 cis.ohio-state.edu!zaphod.mps.ohio-state.edu!howland.reston.ans.net!usene
1993-04-15 17:04 Michael Feldman
1993-04-15 13:08 Wes Groleau X7574
1993-04-15 12:23 Dave Hawk
1993-04-15  3:24 Alex Blakemore
1993-04-14 23:24 usenet.ufl.edu!eng.ufl.edu!spool.mu.edu!sdd.hp.com!cs.utexas.edu!utnut!no
1993-04-14 21:08 news
1993-04-14 21:08 Alex Blakemore
1993-04-14 21:00 Alex Blakemore
1993-04-14 20:17 Michael Feldman
1993-04-14 19:08 Robert I. Eachus
1993-04-14 13:58 enterpoop.mit.edu!spool.mu.edu!howland.reston.ans.net!noc.near.net!inmet!
1993-04-14 13:16 Robert Firth
1993-04-14  0:12 cis.ohio-state.edu!zaphod.mps.ohio-state.edu!usc!news.aero.org!jordan
replies disabled

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