ambiguous ?

Peter da Silva peter at ficc.uu.net
Wed Oct 25 01:47:24 AEST 1989


In article <14111 at lanl.gov> jlg at lanl.gov (Jim Giles) writes:
> From article <6637 at ficc.uu.net>, by peter at ficc.uu.net (Peter da Silva):
> > This has nothing to do with function calls that have side effects. We're
> > talking about evaluation order of arguments... expressions that have side
> > effects being used in arguments to function calls.

> I've already discussed this case in THREE previous submissions!

I know that and you know that. So why don't you go back and read what
you yourself wrote.  It'd certainly not clear:

+---------
! From: jlg at lanl.gov (Jim Giles)
! Newsgroups: comp.lang.c
! Subject: Re: ambiguous ?
! Message-ID: <14104 at lanl.gov>
! 
! Propagating false information is not a very useful way to
! discuss any issue.  As I've already pointed out, the first
! call given above is _illegal_ in Fortran if the order (or
! number) of function evaluations will effect the meaning of
! the program (that is, if FUNC has side-effects).  As I've
! already said, I consider this to be over-restriction in the
! same way that C is under-restricted.  As I've already said,
! the solution I favor is to provide the user _explicit_ means
! of specifying whether a function has side-effects and then
! allowing the compiler to optimize _NON_SIDE-EFFECT_ function
! calls in any way it likes.  Meanwhile, the language _should_
! have consistent rules about the order of calling functions
! that _DO_ have side-effects.
+---------

Perhaps if you tried to be a bit clearer you would avoid misunderstanding.

> Everyone seems to assume
> any opponent of C must be some reactionary neanderthal committed to
> Fortran.

Again, if this isn't your intention you're not doing a good job of
making your intentions clear.

> Neither C nor Fortran are advances.  There are things to be learned
> from both of them though - mistakes as well as good ideas.  I can't
> understand the "reactionary neanderthal" attitude of many C programmers
> who seem to feel that there's no way to improve their language and
> no point in discussing its faults.

The point is that C is, like Fortran, pretty much set in concrete. To
make the sort of changes you're arguing for will require a new language.
The main difference between the people on X3J11 and the people on X3J3
is that the former group was aware of that. That's why Ansi C is a reality,
and why Ansi Fortran has been repudiated in favor of the original standard.

We have in the past had discussions in this newsgroup on what a good
successor to C is... a systems programming language for the next century.
That's the sort of thing you should be working on. We're looking towards
automobiles, while you're arguing for a mechanical horse.

I asked three questions. You didn't answer them. I'd let the matter drop but
I really would like the answers...

> > 		DATA I /0/
> > 		J = I * GETCH(5)
> > 		J = 0 * GETCH(6)

> > Is this legal?
> > Is it guaranteed that GETCH(5) will be evaluated?
> > Is it guaranteed that GETCH(6) will be evaluated?

Perhaps you would be so good as to answer them?

> However, C does not guarantee that the following two functions will
> be evaluated:

>       if (getch(5) && getch(6)) {...}

No, but it guarantees when they will and will not be evaluated. Does
Fortran?

> Once again, your assumption that I believe Fortran to be perfect is
> not correct.

If you don't want people to bring up the shortcomings of Fortran,
then stop USING it as some sort of ideal to which C can only aspire.

Damnit.
-- 
Peter da Silva, *NIX support guy @ Ferranti International Controls Corporation.
Biz: peter at ficc.uu.net, +1 713 274 5180. Fun: peter at sugar.hackercorp.com. `-_-'
"That particular mistake will not be repeated.  There are plenty of        'U`
 mistakes left that have not yet been used." -- Andy Tanenbaum (ast at cs.vu.nl)



More information about the Comp.lang.c mailing list