comp.lang.ada
 help / color / mirror / Atom feed
From: Stephen Leake <stephen_leake@stephe-leake.org>
Subject: Re: AW: Translating an embedded C algorithm
Date: Fri, 19 Jan 2007 04:33:42 -0500
Date: 2007-01-19T04:33:42-05:00	[thread overview]
Message-ID: <uvej3webt.fsf@stephe-leake.org> (raw)
In-Reply-To: 87k5zk7m8j.fsf@ludovic-brenta.org

Ludovic Brenta <ludovic@ludovic-brenta.org> writes:

> Markus E Leypold writes:
>> Ludovic Brenta <ludovic@ludovic-brenta.org> writes:
>>> Right, and there would be no need for a silly INVALID_TEMPERATURE.
>>> What *is* an invalid temperature anyway?  One that needs crutches?
>>> One that is excused from military service? And why would you ever
>>> return an invalid temperature to your caller? etc. etc.
>>
>> | >> --| Temperature in �C x 10. INVALID_TEMPERATURE if out of range.
>>
>> If the sensor is out of order or the temperature leaves the range
>> where it functions properly?
>>
>> :-). 
>
> My point it this: if the sensor is out of order, then there is no
> known temperature; not a known "invalid" temperature.  The proper way
> to handle that in Ada is with an exception, not a special value of
> type Degrees_C.

In a real-time system that is tolerant of hardware failures, every
hardware measurement should be accompanied by some sort of quality
flag. In this case, a boolean would do; Temperature_Valid.

The point is that when hardware failures are expected, they are best
handled by normal data, not exceptions.

Using a special value of Temperature to represent hardware failure is
an example of in-band signaling; using a separate quality flag is
out-of-band signaling. Out-of-band is a bit more complicated, but
much more robust.


This example program is far too small to show the crucial differences
between C and Ada.

-- 
-- Stephe



  parent reply	other threads:[~2007-01-19  9:33 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <E473CA319B6D514981A06AE6742A1FD82B067D@GLDMS10607.goldlnk.rootlnka.net>
2007-01-17  7:07 ` AW: Translating an embedded C algorithm Grein, Christoph (Fa. ESG)
2007-01-17 10:26   ` Ludovic Brenta
2007-01-17 16:44     ` Markus E Leypold
2007-01-18  8:49       ` Ludovic Brenta
2007-01-18  9:53         ` Markus E Leypold
2007-01-19  9:33         ` Stephen Leake [this message]
2007-01-19 19:23           ` Cesar Rabak
2007-01-19 20:27             ` Robert A Duff
2007-01-19 23:15               ` Cesar Rabak
2007-01-20  9:54               ` Dmitry A. Kazakov
2007-01-20 21:03               ` AW: " Jeffrey Carter
2007-01-20 21:38                 ` Robert A Duff
2007-01-22  2:30                   ` Jeffrey Carter
2007-01-23  7:43                     ` Stephen Leake
2007-01-23 19:34                       ` Jeffrey R. Carter
     [not found]     ` <1%trh.15628$X72.889@newsread3.news.pas.earthlink.net>
2007-01-17 18:44       ` Niklas Holsti
replies disabled

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