TEAM-ADA Archives

Team Ada: Ada Programming Language Advocacy


Options: Use Forum View

Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Laurent GUERBY <[log in to unmask]>
Reply To:
Laurent GUERBY <[log in to unmask]>
Sun, 16 Jan 2005 16:21:52 +0100
text/plain (50 lines)
Hi, a geek used PC104 hardware to build
a high altitude glider, and set up his
choice on C for software, but he considered Ada.

Does someone know about a usable GNAT/PC104-DOS cross?


What Language / Platform?

Initially I started out with a "white-paper" attitude, looking for the
platform with the best reputation for developing reliable, real time
systems.  Over time I came to realize that there is a tension here
between prestige and practical performance.

An Ada / Unix based system would seem to be the ideal - the most
virtuous.  But Ada's structure and design-for-reliability approach is
burdened by poor support on "civilian" platforms, and in particular a
very large instruction set that, in the view of many experts in the
field, hinders its in-practice suitability for reliable systems, no
matter what its reputation is.  Unix, as well, is not very available for
16-bit embedded systems, and 32-bit systems are too battery-hungry.

What I settled on was using an old language, C, in a rigorous way.  C++
was put aside almost immediately, as a language extension that just
isn't defined, clear or stable enough for a high-reliability system to
be worth its benefits.  The operating system used is nominally DOS at
both ends, as I have no faith in the stability of Windows.  As the
industrial PC-104 uses a dos-rom operating system, that also provides
machine-code level compatibility between the software modules and data
structures both in the aircraft and on the ground.

This would also put a higher burden on the practices used, instead of
reliance on the reputation of a language to provide quality.  It turns
out that many established high-reliability system developers take this
approach, where reliability largely rests on programmer practices and
rigorous static-checking.   Automatically-verifiable standards have been
developed, such as MISRA-C, to ensure reliable, fail-safe end products
with the C language.  The book Safer C - Developing Software for
High-Integrity and Safety-Critical Systems, has also been a great help,
as have numerous websites (most of which I've since lost track of), on
developing good programming practices.