From: lasner@watsun.cc.columbia.edu (Charles Lasner)
Subject: Re: The need for an assembler (was: Favorite CPU)
Reply-To: lasner@watsun.cc.columbia.edu (Charles Lasner)
Organization: Columbia University
Date: Thu, 27 Aug 1992 07:53:25 GMT

In article <NEERI.92Aug26154345@iis.ethz.ch> neeri@iis.ethz.ch (Matthias Neeracher) writes:
>
>>The test for the condition is 
>>whether it's possible to transfer out of a loop, and then go back in with
>>out losing any context,
>
>This is clearly illegal in Pascal.

You left out the other half of the test, which was to stay within a larger
loop structure surrounding the exited loop without loss.

The point of the matter is that by making it illegal, you limit the ability to
create straight-forward structures without resorting to "equivalent" forms
that sometimes aren't so equivalent.  By declaring it illegal, you allow the
compiler to "cop out" regarding stack marking, etc., so a sloppier code
generation is acceptable.

Further, this encourages the use of problematic conditions with "side effects".
If a statement is formed out of a while condition that is the conjunction of
two expressions .AND.ed together, and one of them is clearly already 
calculated as false, do you waste time executing the other expression?  Or,
are you bound to executing it because you can't specify whether the side
effects possibly created by this execution are even important?  I'm not
saying that goto usage is the relief of this problem, just that with a
lame goto structure, more code of this debatable form may be seen.

>
>>Why do I want a language where I have to help the compiler out by using
>>odd syntax for labels?
>
>Funny, you never seem to complain about numerical labels in Fortran.

Fortran has no "singled-out" feature implemented in bastardized form like
PASCAL.  Further, there have been non-standard implementations of Fortran
around for years that allow symbolic labels on gotos.  You brought up Fortran
not me, I prefer to take this argument to be PASCAL versus PL/I.  In PL/I
the functions are recursive or not as I choose, Globality of variables is
determined by my usage, not by arbitrary wimpy restrictions of the compiler,
and all labels are equally symbolic.  I can use while-type loops or do-type
loops, or if then goto else goto or whatever I want.  If I'm not sure what
the compiler does about a side effect of a while as described above, I'll
have to avoid it, but I know I can rather easily.  Further, I can transfer
in and out of loops as I see fit, just like Fortran.

>
>
>>Why would I want to use a language where you need
>>FORWARD statements because it doesn't do enough passes to do it without me?
>
>Why slow the compiler down for programmers who wouldn't use the language
>anyway :-)

A silly remark that doesn't answer the question.  This is a major ugly
feature of the language: all internal procedures have to come first, and
when they reference each other, a kludge is needed to pull it off.  An
additional minor peeve: when the arg list for the function that was
forwarded is now known, why must it be left out of the definition.  I
have seen comments that attempt to fantasize about the repetition of the
arg list, but why do you have to leave it out?

>
>>I have used much "smarter" assemblers than PASCAL's :-).

What I mean is that assemblers will do multiple passed for me, why can't
compilers?  Seems to beg the question of just what is "high" level?

>>
>>Let's just say that it was "convenient" that the major weak spot of the
>>language became the lynch-pin of an academic "political" event.
>
>Huh? Are you trying to run for President (Read my lips, no new Ada mandates) ?
>I don't understand what you mean with this sentence, but if you believe that
>Dijkstra's GOTO article was based on the Pascal GOTO, you are mistaken.
>
>>(Indeed
>>poorly-formed GOTOs could be harmful.)
>
>And lots of well formed GOTOs unnecessary in modern languages.

I didn't say based on, you did.  I just mean that there are those of a 
certain "political" bent that would make all of these "coincidences" into a
case for their consistently taking a position.  And unnecessary isn't a
replacement for undesirable.  Why have a language that limits my ability
to express ideas in alternate ways?

BTW, if HLL theory is that it abstracts what computers actually do,
then why the deficiency in so many languages regarding goto?  Do people
believe that computers lack program control branch instructions?

cjl
Newsgroups: alt.folklore.computers