Path: utzoo!utgpu!water!watmath!clyde!att!osu-cis!tut.cis.ohio-state.edu!bloom-beacon!mit-eddie!uw-beaver!teknowledge-vaxc!sri-unix!garth!smryan From: smryan@garth.UUCP (Steven Ryan) Newsgroups: comp.lang.misc Subject: Re: Ada and C and Algol 68 Summary: Those who cannot learn from the past must...those who cannot learn from Message-ID: <771@garth.UUCP> Date: 21 Jun 88 20:04:26 GMT References: <7997@alice.UUCP> Reply-To: smryan@garth.UUCP (Steven Ryan) Organization: INTERGRAPH (APD) -- Palo Alto, CA Lines: 23 I detect echoes of +:= *:= et cetera. A central principle in programming language design is don't look at previous work and avoid the landmines. A case in C was =+ =* =- and so forth. If the Revised A68 report chapter 9 had been studied with care, the ambiguity would have been immediately noticed. A case in Ada had to do with what every they call structure display. The long form is type-name(member1,...,membern) and short form is (member1,...,membern). If the short form only has one member, (member), it is ambiguous with a parenthised expression. Again the A68 directly dealt with this problem by requiring a collateral clause to have zero or more than one unit. One of the nicest things about the Revised Report was a complete and formal definition. It might take a bit work, but every question could be resolved. Why bother? Isn't much more fun to let each compiler have its own interpretation? comp.lang.c and comp.lang.ada consume a large bandwidth as people try to decide what is and is not legal and what it means. (I take it back--I have been informed C does have a formal definition: "Whatever PCC does on a VAX.")