From: Richard D Riehle <laoXhai@ix.netcom.com>
Subject: Re: Printing Enum Variable Re: Linux World
Date: 1999/03/08
Date: 1999-03-08T11:23:15-08:00 [thread overview]
Message-ID: <7c1833$2n@sjx-ixn6.ix.netcom.com> (raw)
In-Reply-To: 7c0knr$v5$1@nnrp1.dejanews.com
In article <7c0knr$v5$1@nnrp1.dejanews.com>,
robert_dewar@my-dejanews.com wrote:
>In fact Ada fully allows a low-level form of expression
>corresponding to C...
As a follow-on to Robert's comment, and for the benefit of the
Mr. Young, who indicated an interest in learning more about Ada, a
key idea in Ada is to make all possible expressions possible, but
to start with the default level of "safe." That is, strong typing,
separation of scope and visibility, and strict accessibility rules
for access and tagged types, are the default in Ada.
It has often been noted that one principal upon which Ada is
founded is to have a language design for which one can write
a compiler that catches the maximum number of errors before we
ever see an executable program.
One may start with a language in which the default is "safe" and relax
the rules to make it less safe. For example, use clauses, unchecked
operations, and other built-in features of Ada relax the safety
default. It is more difficult to start with a language where the
default is "unsafe" and make it more safe. This is a built-in
problem for the C family of languages. That is, every language
built on top of C has the problem of starting with a model in which
the default is "unsafe." With C++ we can define class modules that
improve the safety of a design, but the characteristics of the
foundation language are still there. The C foundation makes it
all too easy to revert back to unsafe practices. If it were rare
among programmers to revert back to unsafe practices, many of the
complaints about C++ would be moot. Sadly, the retro-C practices
are not rare. It just too convenient to code the way we did in C.
Java, a member of the C family of languages, has taken the approach
of deleting certain capabilities of C and C++. For pointers, Java
has adopted a model which closely resembles Ada access types. Even
so, Java syntax is still reminiscent of C. A Java programmer can
still make some of the same coding errors that occur in C programs.
In the end, it is not a matter of whether we can code the same thing
in one language that we can code in another. It is a matter of how
that same thing is expressed. It is not a matter of which syntax is
more "natural"; not a matter of whether we do or do not have
"distinguished receivers"; not a matter of how easy it is to code
a particular set of ideas. Expressibility, in Ada, is a matter of
creating reliable, maintainable applications in which human life
and safety are at risk. For large, safety-critical software,
whether that expressibility consistently represents (even demands)
a model for reliability, dependability and safety. This defines the
charter for Ada.
Richard Riehle
richard@adaworks.com
http://www.adaworks.com
Of course, the notion of safety-critical becomes
also becomes moot when developing for one of
the non-safe operating systems that are being
selected for so many of our military applications.
next prev parent reply other threads:[~1999-03-08 0:00 UTC|newest]
Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top
1999-03-02 0:00 Linux World Richard D Riehle
1999-03-02 0:00 ` fraser
1999-03-02 0:00 ` Printing Enum Variable " David Starner
1999-03-03 0:00 ` Fraser Wilson
1999-03-03 0:00 ` David Starner
1999-03-04 0:00 ` Magnus Larsson
1999-03-03 0:00 ` Hans Marqvardsen
1999-03-04 0:00 ` Nick Roberts
1999-03-04 0:00 ` robert_dewar
1999-03-04 0:00 ` Hans Marqvardsen
1999-03-05 0:00 ` Larry Kilgallen
1999-03-05 0:00 ` dewar
1999-03-05 0:00 ` David Botton
1999-03-05 0:00 ` robert_dewar
1999-03-04 0:00 ` Hans Marqvardsen
1999-03-05 0:00 ` dewar
1999-03-07 0:00 ` Hans Marqvardsen
1999-03-03 0:00 ` Printing Enum Variable Re: Linux World (Correction) Hans Marqvardsen
1999-03-04 0:00 ` Printing Enum Variable Re: Linux World fraser
1999-03-05 0:00 ` Nick Roberts
1999-03-05 0:00 ` fraser
1999-03-04 0:00 ` Richard D Riehle
1999-03-04 0:00 ` Richard D Riehle
1999-03-04 0:00 ` robert_dewar
1999-03-03 0:00 ` Larry Kilgallen
1999-03-03 0:00 ` Nick Roberts
1999-03-03 0:00 ` David Starner
1999-03-03 0:00 ` fraser
1999-03-03 0:00 ` David Starner
1999-03-03 0:00 ` fraser
1999-03-03 0:00 ` Samuel T. Harris
1999-03-04 0:00 ` robert_dewar
1999-03-03 0:00 ` David Starner
1999-03-04 0:00 ` robert_dewar
1999-03-04 0:00 ` Samuel Mize
1999-03-04 0:00 ` Samuel Mize
1999-03-05 0:00 ` Robert A Duff
1999-03-05 0:00 ` Robert A Duff
1999-03-07 0:00 ` Florian Weimer
1999-03-07 0:00 ` Michael Young
1999-03-07 0:00 ` Matthew Heaney
1999-03-08 0:00 ` Michael Young
1999-03-08 0:00 ` Matthew Heaney
1999-03-07 0:00 ` Larry Kilgallen
1999-03-07 0:00 ` Michael Young
1999-03-08 0:00 ` robert_dewar
1999-03-08 0:00 ` Richard D Riehle [this message]
1999-03-09 0:00 ` Michael Young
1999-03-09 0:00 ` Larry Kilgallen
1999-03-09 0:00 ` Michael Young
1999-03-10 0:00 ` Mike Silva
1999-03-09 0:00 ` billy
1999-03-10 0:00 ` Pascal Obry
1999-03-10 0:00 ` robert_dewar
1999-03-10 0:00 ` Dale Stanbrough
1999-03-10 0:00 ` dennison
1999-03-10 0:00 ` bob
1999-03-10 0:00 ` Mike Silva
1999-03-10 0:00 ` Nick Roberts
1999-03-10 0:00 ` dennison
1999-03-10 0:00 ` Richard D Riehle
1999-03-10 0:00 ` Pascal Obry
[not found] ` <7 <7c58qa$b6b$1@cf01.edf.fr>
1999-03-10 0:00 ` fraser
[not found] ` <7c4ru6$e45$1@remarq.com>
1999-03-10 0:00 ` fraser
[not found] ` <1999Mar9.131659. <dale-1003991644340001@r1021c-07.ppp.cs.rmit.edu.au>
1999-03-10 0:00 ` Larry Kilgallen
1999-03-08 0:00 ` Larry Kilgallen
1999-03-08 0:00 ` robert_dewar
1999-03-08 0:00 ` Florian Weimer
1999-03-04 0:00 ` Ehud Lamm
1999-03-05 0:00 ` Richard D Riehle
1999-03-05 0:00 ` Nick Roberts
1999-03-06 0:00 ` Ehud Lamm
1999-03-06 0:00 ` robert_dewar
1999-03-06 0:00 ` Larry Kilgallen
1999-03-06 0:00 ` Dave Taylor
1999-03-06 0:00 ` Bruce or Tracy
1999-03-06 0:00 ` Ehud Lamm
1999-03-04 0:00 ` dennison
1999-03-04 0:00 ` Ehud Lamm
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox