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