From: bevan@cs.man.ac.uk (Stephen J Bevan)
Newsgroups: comp.lang.misc
Subject: Re: Scientists as Programmers (was Re: Small Language Wanted)
Date: 31 Aug 92 09:14:47 GMT
	<BttB9z.IAy@mentor.cc.purdue.edu>
Organization: Department of Computer Science, University of Manchester
In-reply-to: hrubin@pop.stat.purdue.edu's message of 30 Aug 92 19:53:59 GMT

In article <BttB9z.IAy@mentor.cc.purdue.edu> hrubin@pop.stat.purdue.edu (Herman Rubin) writes:
   >1) There are scientists who don't know the value of organized software
   >    engineering.  I mean basic things like type-checking subroutine
   >    arguments, modularization, modern data types, and other things like
   >    that.  They write the infamous spaghetti Fortran.

   This statement is too broad.  Modularization is not a problem for the
   scientist, but it can be a major time-waster if the current software is
   used.  Subroutine calls are, at this time, and for the foreseeable future,
   quite expensive.

Maybe so, but just because it is written as a subroutine, it doesn't
mean it has to be implemented as one.  Again many people have pointed
this out and yet you still bring it up.  Have you tried any languages
that let you _tell_ the compiler what you want inlined e.g. Ada, C++,
Modula III ... etc?  Did they fail to do what you wanted?


   Also, mathematicians especially use lots of operators.

They also use lots of Greek letters (at least in the sort of maths I
read).  It is reasonably easy to replace them with something else, and
IMHO you can do the same thing with the operators.  Of course I expect
that most mathematicians lament the loss of Greek characters when
writing programs, so I don't expect them to give up operators.


   Despite what the CS gurus say, allowing the introduction of
   additional functions is not the same thing.

Semantically it is, and that is what really counts.
Some languages do allow you to define infix operators (Haskell and ML),
but there are very few that allow you to define distfix syntax.
Of those that do they are either quite old or designed for completely
different purposes than numerical work.  Also a problem with distix is
that it is very easy to get ambiguities and unless you are going to
introduce some user defined precedence (which I'm not even sure would
solve the problem), the only solution is to put parentheses around
phrases.  Once you do this, you might as well be using a prefix or
posfix only language.


   Also, mathematicians and scientists are accustomed to using
   whatever syntax they like, as long as it does not lead to confusion.

Confusion for who?  I get very confused when I read books that use
|A| to mean three different things depending on the context (which
isn't always immediately obvious).  With all due respect to
mathematicians and scientists, just because they are accustomed to
creating syntax on the fly, it doesn't meant that they are any good at
it (where "good" is totally subjective, but I'll take it to mean that
other people find it readable and better (another subjective term)
than anything else).  For example, I'm sure Frege thought he had a
great notation for his logical formulae, but IMHO (and with plenty of
hindsight :-) it was needlessly complicated. 

This extends to CS people as well, there seems to be something inside
most of them that drives them to invent a "new" language even though
it rarely has anything new in it.  It usually consists of a different
permutation of symbols to describe the same semantics that underlies
thousands of other languages. (There are a some languages that warrant
the title "new", but they are very few and far between)


   But the CS people insist that only the standard operators are to be
   allowed to use infix notation, and all others must be prefix,
   except in reverse Polish systems, in which all must be postfix.

Actually this CS person prefers _all_ prefix or _all_ postfix, but
then I'm a minimalist :-) 

bevan