Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: $Revision: 1.6.2.13 $; site iuvax.UUCP Path: utzoo!watmath!clyde!floyd!vax135!houxz!houxm!ihnp4!inuxc!iuvax!cjl From: cjl@iuvax.UUCP Newsgroups: net.lang Subject: Re: Re: Gotos; tail-recursion Message-ID: <11800018@iuvax.UUCP> Date: Wed, 20-Jun-84 12:40:00 EDT Article-I.D.: iuvax.11800018 Posted: Wed Jun 20 12:40:00 1984 Date-Received: Fri, 22-Jun-84 07:19:40 EDT References: <1986@mit-eddi.UUCP> Lines: 27 Nf-ID: #R:mit-eddi:-198600:iuvax:11800018:000:1049 Nf-From: iuvax!cjl Jun 20 11:40:00 1984 > There are *no* bad language constructs, merely bad uses for them. I shall give some counter examples : In Pascal the strict declaration order of LABEL, CONST, TYPE, VAR essentially precludes the possibility of writing an abstract data type in one page. Frequently, we see the type declaration in page 1, var declaration in page 9, and the related procedures in page 100 ! In a language like Modula-2 where goto is not supported, there is no way to code the exceptional handling procedures nicely as there is no exceptional handling construct either. From the above examples, we can see some consequence of premature adaptation of restrictive language constructs to enforce certain software disciplines which were generally accepted at the time the language was designed. They become BAD as the theory of software engineering evolves. A language like C with emphasis on flexibility has less problem. Usually they won't hurt you like as the above, but they won't help you as the above languages either. C.J.Lo cjl@Indiana@CSNet-Relay