From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.4 X-Google-Thread: 103376,703c4f68db81387d X-Google-Thread: 109fba,703c4f68db81387d X-Google-Thread: 115aec,703c4f68db81387d X-Google-Thread: f43e6,703c4f68db81387d X-Google-Attributes: gid103376,gid109fba,gid115aec,gidf43e6,public X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news4.google.com!news.glorb.com!wn14feed!worldnet.att.net!bgtnsc05-news.ops.worldnet.att.net.POSTED!53ab2750!not-for-mail Newsgroups: comp.lang.ada,comp.lang.c++,comp.realtime,comp.software-eng Subject: Re: Teaching new tricks to an old dog (C++ -->Ada) From: Jim Rogers References: <1110329098.642196@athnrd02> <1110361741.551255@athnrd02> <422edaec$0$26554$9b4e6d93@newsread4.arcor-online.net> <1111464133.508323@athnrd02> <423fe9df$0$11476$9b4e6d93@newsread2.arcor-online.net> <1111521825.653841@athnrd02> <424094b0$0$11481$9b4e6d93@newsread2.arcor-online.net> <1111568404.687226@athnrd02> <1111572591.296439@athnrd02> <1111574207.72969@athnrd02> <42414f88$0$9217$9b4e6d93@newsread4.arcor-online.net> <1111576802.823362@athnrd02> <1111577078.934620@athnrd02> <1111586334.958702.249050@o13g2000cwo.googlegroups.com> <1111608867.922129@athnrd02> Followup-To: comp.lang.ada,comp.lang.c++ User-Agent: Xnews/5.04.25 Message-ID: Date: Thu, 24 Mar 2005 02:17:57 GMT NNTP-Posting-Host: 12.73.181.213 X-Complaints-To: abuse@worldnet.att.net X-Trace: bgtnsc05-news.ops.worldnet.att.net 1111630677 12.73.181.213 (Thu, 24 Mar 2005 02:17:57 GMT) NNTP-Posting-Date: Thu, 24 Mar 2005 02:17:57 GMT Organization: AT&T Worldnet Xref: g2news1.google.com comp.lang.ada:9867 comp.lang.c++:46967 comp.realtime:1657 comp.software-eng:5261 Date: 2005-03-24T02:17:57+00:00 List-Id: One Ada feature that cannot be implemented through any container library is the ability to define a range-restricted floating point type. You can do this in C++, but not through the use of a template. Templates cannot take floating point values as parameters. For instance, in Ada it is trivial to define a floating point type with 10 decimal digits of precision and all values in the range of 0.0 through 1.0. This sort of type is very useful for defining normalized values. type Normalized is digits 10 range 0.0..1.0; I used this technique for robotic control systems. The value read from a joystick indicating a turn could be normalized, sent across an RF link to the robotic vehicle, and then converted to the dynamic range available to the target actuator. The joystick could employ a 14-bit a/d converter, or it could employ a 10-bit a/d converter. The actuator never saw a difference. The joystick output was decoupled from the actuator input while providing excellent control capabilities. The compiler could ensure that all normalized values were within the required range of 0.0 through 1.0. This allowed me to eliminate explicit error checking in my code while retaining data correctness. Jim Rogers