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.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,a3ca574fc2007430 X-Google-Attributes: gid103376,public X-Google-Thread: 115aec,f41f1f25333fa601 X-Google-Attributes: gid115aec,public From: eachus@spectre.mitre.org (Robert I. Eachus) Subject: Re: Ada and Automotive Industry Date: 1996/11/14 Message-ID: #1/1 X-Deja-AN: 196440786 references: <3280DA96.15FB@hso.link.com> <1996Nov6.210957.3070@ole.cdac.com> organization: The Mitre Corp., Bedford, MA. newsgroups: comp.lang.ada,comp.realtime Date: 1996-11-14T00:00:00+00:00 List-Id: In article <1996Nov8.183051.21638@ole.cdac.com> james@cdac.com (James Thiele) writes: >>> The language itself was hardly consistent. Quick, why is >>> for i in -1..1 -- illegal in Ada 83? (I said:) >> Because the call to "-" is ambiguous. The only reason this was a >>surprise is that Ada 83 had a special rule to resolve the ambiguity >>and choose a type for i in the "most common" cases. But this didn't >>fit that mold, since users can redefine "-". However, if you write: >> >> for I in Integer range -1..1 loop... >> >> It is legal and compiles fine. (But you may have wanted some other >>type...that's why you got the error.) (Back to James Thiele:) > That's not how I remember it. The ".." operator required that both > of it's arguments be of the same "type" (the Ada LRM probably used > another term) and -1 was considered an expression, but 1 wasn't. You may not remember it that way, but I not only do remember it that way, but I know it was that way because that was what the then LMC decided. It wasn't decided lightly. For example, one particular little detail during the EXTENDED discussion of this issue and whether there was a possible "fix" for the problem other than education. John Goodenough pointed out that the presence of two or more visible integer types caused the problem. I countered by asking about compilers with one integer type in Standard. John came back several hours later and pointed out that there was an integer type Count in Text_IO, and that by 8.2(2) that "-" operation was in scope in all parts of a program (but not ncessarily visible). Game, set, match, even though much later rulings meant that only programs containing a unit that withed Text_IO were in scope. >>> In Ada 83 you can't schedule a periodic event reliably -- no Ada >>> task was guaranteed to run at the time requested. Everyone I knew >>> who used Ada for avionics in the 80s wrote their own scheduler. > We didn't find any Ada compiler vendors in the 1986-88 era who > supported preemptive scheduling. And they all talked to us, > because we were potentially a huge customer. Do you know any? Yes. At the time I worked for Honeywell, and if you were talking to the right people, you probably talked to me. And from my experience didn't understand the demos at the trade shows. We had real time systems deployed using the DPS6 and Ada tasking and they worked just fine. But again from experience, I had to configure the machine, or preformance was piggish. No one little thing, but following all the advice that I put in the installation manual usually resulted in about a 100x speedup. The systems were shipped to run on minumum hardware, in particular minimum memory. Going to a (big for then) 2 Meg configuration and increasing (lots of) buffer sizes in the OS eliminated a lot of thrashing, mostly by the OS. -- Robert I. Eachus with Standard_Disclaimer; use Standard_Disclaimer; function Message (Text: in Clever_Ideas) return Better_Ideas is...