[comp.lang.misc] Why FORTRAN

cik@l.cc.purdue.edu (Herman Rubin) (04/17/88)

In article <773@virginia.acc.virginia.edu>, mlj8e@dale.acc.Virginia.EDU (Michael L. Johnson) writes:

			...........

>      Before proceeding to code a computer program, an scientist must first
> address a simple question which has very subtle implications. The question
> is "What computer language should be used for this type of analysis?" There
> are six primary considerations which need to be addressed before the
> computer language is chosen. They are:
>  
>    1) The computer language must be universal.
>    2) Only the "language standard" should be used; i.e. no non-standard 
>       extensions.
>    3) The investigator should consider the language features required for 
>       the particular problem. 
>    4) The computer program should be efficient.
>    5) Options inherent within certain languages can make the particular 
>       problem easier.
>    6) There is no need to reinvent the wheel by rewriting software which has 
>       already been written and is available at a lower cost than paying a 
>       programmer to do it again.

What you are asking for does not exist.  I know of no language which recognizes
the constructs that a reasonably capable mathematician will automatically use
to attack a problem.  There are some languages which come somewhat close to
being universal, but they are very difficult to read and write.  This problem
is not necessary.  Most, if not all, languages are compromised by the fact that
the language designers took one or more of the following attitudes:  You do not
need or want to do that; you can accomplish the same thing (with possibly
far greater cost) in this way; this occurs so rarely that including it is
not worth while; you can make a mistake in using it.

I am familiar with so many situations in which code which is efficient on one
machine is woefully inefficient on another, and vice versa.  Ideally, one
should be able to write source code so that the compiler can produce efficient
code on any machine.  Unfortunately, this is not the case, and will not be the
case as long as the language gurus restrict their languages as they do.

I would make (4) the requirement which should be foremost for all except 
short programs.  Item (6) is very important, and those features of imple-
mentations (such as compiler-affixed underscores to global names) should
be eliminated, and appropriate interfaces and editors of object (binary)
programs added to make it easy to interface routines written in different
languages.

For a language to be universal, it must be able to handle all instructions,
data types, operations, pseudo-operations, print statement formats, etc., which
are desired.  This is impossible, hence the language must allow the addition
of objects unforeseen by the designer.

Do not misunderstand me; I am in favor of the goal.  We must keep in mind the
limitations on what we know how to do reasonably well.  But we must not try to
only allow the users to do what the designers know how to do well.
-- 
Herman Rubin, Dept. of Statistics, Purdue Univ., West Lafayette IN47907
Phone: (317)494-6054
hrubin@l.cc.purdue.edu (ARPA or UUCP) or hrubin@purccvm.bitnet

barmar@think.COM (Barry Margolin) (04/19/88)

In article <753@l.cc.purdue.edu> cik@l.cc.purdue.edu (Herman Rubin) writes:
>In article <773@virginia.acc.virginia.edu>, mlj8e@dale.acc.Virginia.EDU (Michael L. Johnson) writes:
>>    1) The computer language must be universal.
>For a language to be universal, it must be able to handle all instructions,
>data types, operations, pseudo-operations, print statement formats, etc., which
>are desired.  This is impossible, hence the language must allow the addition
>of objects unforeseen by the designer.

I think you are using a different definition of "universal" than the
original author.  I interpreted his criterion to mean that the
language must be available on all computers that his application is
likely to be run on.

I'm not sure where your definition of "universal" comes from.  At
first I thought you might be using it as in "Universal Turing
Machine", intending it to mean a language that can be used to compute
anything that is computable.  However, since most popular languages
are Turing-equivalent, and a Turing Machine is universal, this must
not be what you mean.

Barry Margolin
Thinking Machines Corp.

barmar@think.com
uunet!think!barmar