Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.2 9/18/84; site rtp47.UUCP
Path: utzoo!watmath!clyde!bonnie!akgua!mcnc!rti-sel!rtp47!vollum
From: vollum@rtp47.UUCP (Rob Vollum)
Newsgroups: net.lang.lisp,net.lang
Subject: Re: What language do you use for scientific programming?
Message-ID: <147@rtp47.UUCP>
Date: Fri, 16-Aug-85 13:02:04 EDT
Article-I.D.: rtp47.147
Posted: Fri Aug 16 13:02:04 1985
Date-Received: Tue, 20-Aug-85 05:28:47 EDT
References: <909@oddjob.UUCP>
Distribution: net
Organization: Data General, RTP, NC
Lines: 59
Xref: watmath net.lang.lisp:525 net.lang:1706

In article <909@oddjob.UUCP> paul@oddjob.UUCP (Paul Schinder) writes:
>
>I've been curious for a while what scientist/engineering types on the net
>use for scientific programming.  
>         
>The advantages of fortran in my opinion are 1.
>at least two real precisions, 2. standard and powerful i/o routines, and 3.
>very wide availability with great portability (because of the existance of a
>standard for the language).  Is there any other language which shares these
>properties but also has some of the constructs I would like to use (while,
>do ... while, case, structures, pointers).  
>
>Reply via e-mail; if there is a large enough response, I'll summarize in a
>few weeks. Thanks.
>-- 
>				Paul Schinder

(I did reply, at length, via e-mail, but I had to post here as well. I'll
keep it short.)

I vote for Common Lisp. Beyond the excellent programming environment it
provides, it gives a rich set of numerical operations as well. It has:
infinite precision integers, complex numbers, many flavors of floating
point numbers, and for those who don't like roundoff error, true
rational numbers.

As for control structure, it provides iteration, conditionals, lexical 
closures of functions (i.e. functions as first class citizens), and 
recursion, to name some important ones. It also uses lexical scoping for
semantic cleanliness, and for when you need(?) global variables, it provides
"special variables", which are essentially globals where you can stack
values by binding, or assign new global values by straight assignment.

Common Lisp supports a robust structure facility for data abstraction,
and a macro-defining facility for language extension.

For I/O, the FORMAT statement and use of the abstract notion of I/O streams
provide a more robust I/O engine than most people could ever fully use
(a good point?).

For a standard language, well, it's trying. One of the ideas of Common Lisp
is to unify the Lisp community. We'll see if a 'real' standard ever happens.

Concerning efficiency, there is no reason, given improved compilers that
handle type-inferencing and type-propagation, for example, that
compiled Common Lisp can't be as fast as compiled anything else in most
cases; certainly in most 'simple' numerical applications that would
be handled by a Fortan program (simple here means 32-bit integer or
single- or double-precision arithmetic).

(Did I keep that short?)

---


-- 
Rob Vollum
Data General Corp.
Research Triangle Park, NC
!mcnc!rti-sel!rtp47!vollum