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