[comp.lang.smalltalk] Smalltalk for Scientific Applications

peskin@caip.rutgers.edu (R. L. Peskin) (08/14/89)

What about Smalltalk for the scientists?

While one can argue that what Smalltalk really needs to be "accepted" is
a "real" application (Analyst, PPS's C++ Object-Works?), I believe the
real test of an environment's acceptance is its use by the scientific and
engineering community. The software crisis in science and engineering
computation has become a critical matter; we can no longer afford to
divert our technical professionals away from their main tasks just
because they are saddled with 30 year old software technology. This
situation offers a unique chance for the Smalltalk community.

Smalltalk already has many of the features needed for modernization of
the scientific software environment. Dynamic binding together with
incremental compilation, integral graphical interface and MVC (or its
equivalent), simple language syntax, system access and extensibility all
are ideal for the "prototyping" of scientific simulations. Smalltalk's
extensive class structure offers the scientist access to the fruits of
many years of computer science labor; i.e. Smalltalk can be a vehicle to
effect the interdisciplinary interface between the scientists, engineers,
etc. and the computer science community. This interface is a major goal
of current research support policy.

Smalltalk has problems that would prevent its ready acceptance by the
scientific community now. But I feel these are correctable. Lack of
double precision (here now in SmalltalkV, and coming soon from PPS), lack
of more complete numerical classes such as complex numbers (also easy to
add and coming soon), lack of mathematical fonts, etc. are just some
examples. Two major criticisms, slow numerical operation and poor
graphics are more difficult to solve. But the access to user primitives
show the way toward solution. (We have demonstrated feasibility of fast
numerical performance by use of user primitives to access method
proceedure on high speed computers via distributed computing. We have
also shown the feasibility of user primitives to allow integration of
"real" hardware level graphics into Smalltalk.) The technical
underpinnings are here, but is the commitment?

Scientific and engineering Smalltalk suffered a real setback when
Tektronix decided to discontinue its product. This leaves PPS and
Digitalk to carry the ball, but unless there is some interest from the
Smalltalk community at large, will these firms want to commit to the
changes needed for acceptance by the scientific community? Our group is
getting calls almost daily from physicists, engineers, etc. interested in
the possibility of using Smalltalk. 

How many of you out there in "Smalltalk net-land" are interested in these
problems associated with scientific use of Smalltalk? Let's hear from
you. Also, is anyone interested in a "bird-of-a-feather" session on this
topic at OOPSLA this Fall? If so let's here from you also.

--dick peskin <peskin@caip.rutgers.edu>




%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 Richard L. Peskin     CAIP Parallel Computing Lab                      
 CAIP Center CN - 1390  Rutgers University       
 Piscataway, N. J. 08855-1390             
         net: peskin@caip.rutgers.edu              
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 
-- 
goodby

peter@celia.UUCP (Peter Farson) (08/15/89)

In article <Aug.14.11.34.54.1989.15094@caip.rutgers.edu> peskin@caip.rutgers.edu (R. L. Peskin) writes:
>
>
>
>
>What about Smalltalk for the scientists?
>
 ...........
>
>How many of you out there in "Smalltalk net-land" are interested in these
>problems associated with scientific use of Smalltalk? Let's hear from
>

  The issue of efficiency is certainly one that I think is one of the
biggest potential obstacles to the more widespread use of Smalltalk.
While the sort of work I do (computer animation) is not really science
or engineering, many of the same concerns come up in my line of work.

I find that the usual C language environment is very inflexible.  It is
usually difficult or impossible to have a compiled module load in an
independently compiled module at runtime.  The standard C library does
not include the C compiler as one of it's functions.  The UNIX environment
is poorly integrated when compared to the Smalltalk environment.  A lot
of this is not necessarily a characteristic feature of the C language, but
just a holdover from earlier days, when more computing was done batch-style.

I believe that the qualities that make C very efficient can be retained while
implementing it in a way that is more conducive to interactive development.
What I would like to see is Smalltalk that had a good optimizing C compiler
function, so that the software developer could compile a C primitive just as
conveniently as a Smalltalk method.  I somehow don't expect that this will
be available very soon.



-- 
Can a bee be said to be                Peter Farson
An entire bee if                       celia!peter@tis.llnl.gov
Half the bee is not a bee              ...{ihnp4,ames}!lll-tis!celia!peter
Due to some ancient injury?

Piersol@apple.com (Kurt Piersol) (08/16/89)

In article <Aug.14.11.34.54.1989.15094@caip.rutgers.edu> 
peskin@caip.rutgers.edu (R. L. Peskin) writes:
> Smalltalk has problems that would prevent its ready acceptance by the
> scientific community now. But I feel these are correctable. Lack of
> double precision (here now in SmalltalkV, and coming soon from PPS), lack
> of more complete numerical classes such as complex numbers (also easy to
> add and coming soon), lack of mathematical fonts, etc. are just some
> examples. Two major criticisms, slow numerical operation and poor
> graphics are more difficult to solve. But the access to user primitives
> show the way toward solution. (We have demonstrated feasibility of fast
> numerical performance by use of user primitives to access method
> proceedure on high speed computers via distributed computing. We have
> also shown the feasibility of user primitives to allow integration of
> "real" hardware level graphics into Smalltalk.) The technical
> underpinnings are here, but is the commitment?

This is an excellent question. The major problem with implementation of 
user primitives in Smalltalk-80 from PPS is the inability to walk and 
examine the object space from the primitive. This makes it virtually 
impossibe to efficiently pass complex data to primitives, thus severely 
limiting the potential of the userPrims.The best hope is to pass arrays of 
numbers to the primitive, which is at least fairly quick. Passing compound 
objects (to e examined by the code of the primitive) is not supported.

Were this remedied, the potential would be vast indeed.  Creating 
primitives to handle expensive calculations would quickly move 
Smalltalk-80 into the big leagues of scientific computing, particularly in 
areas like visualization systems.

The other difficulty, and I think a major one, is the volatility of the 
PPS image. It changes significantly about every six months. A 
vendor-independent standard for the language would be most welcome, so 
that inherently complex systems like hypertext and visualization packages 
needn't be built on foundations of shifting sand.

--Kurt

User Programming Group
ALink: PIERSOL.K

obrien@aerospace.aero.org (Mike O'Brien) (08/16/89)

In article <Aug.14.11.34.54.1989.15094@caip.rutgers.edu> peskin@caip.rutgers.edu (R. L. Peskin) writes:
>
>What about Smalltalk for the scientists?

I can agree with this.  It's the best programming environment I've
hit (I don't LISP).  However...

>Smalltalk has problems that would prevent its ready acceptance by the
>scientific community now.

No kidding.

>Lack of
>double precision (here now in SmalltalkV, and coming soon from PPS), lack
>of more complete numerical classes such as complex numbers (also easy to
>add and coming soon), lack of mathematical fonts, etc. are just some
>examples. Two major criticisms, slow numerical operation and poor
>graphics are more difficult to solve. But the access to user primitives
>show the way toward solution. (We have demonstrated feasibility of fast
>numerical performance by use of user primitives to access method
>proceedure on high speed computers via distributed computing. We have
>also shown the feasibility of user primitives to allow integration of
>"real" hardware level graphics into Smalltalk.) The technical
>underpinnings are here, but is the commitment?

Well, this is where I might disagree a little.  I too have added RPC
to PPS Smalltalk, using user primitives, to interface to a Prolog
engine.  The problem is that no matter how you slice it, RPC can be
s-l-o-o-w.  And when you add the overhead of argument type checking
in user primitives, even doing your arithmetic there can be awfully
time-consuming, unless you limit it to higher-level procedures like
FFT and statistical techniques.

Smalltalk needs to beef up its run-time compiler (thank you again,
Mr. Deutsch) to be able to do double-precision arithmetic speedily.
And user primitives have to be very carefully thought out, and very
fast.  Otherwise it's just useless for number-crunching.  The notion
of having all the number-crunching done in separate modules held
at arms' length just falls apart when you realize that it's the creation
of those self-same modules that we're trying to optimize, here.

Objectworks for C++ seems to be a step in this direction.  I've not
used it (yet) so I don't know how good of an attack on the problem
it represents.  I'm not just totally wild about C++, though, I can
say that.

>How many of you out there in "Smalltalk net-land" are interested in these
>problems associated with scientific use of Smalltalk? Let's hear from
>you. Also, is anyone interested in a "bird-of-a-feather" session on this
>topic at OOPSLA this Fall? If so let's here from you also.

Sounds like a plan to me.
--
Mike O'Brien
obrien@aerospace.aero.org

peskin@caip.rutgers.edu (R. L. Peskin) (08/16/89)

> The problem is that no matter how you slice it, RPC can be
>s-l-o-o-w.  And when you add the overhead of argument type checking
>in user primitives, even doing your arithmetic there can be awfully
>time-consuming, unless you limit it to higher-level procedures like
>FFT and statistical techniques.

Agreed. We have also found that effective use of the userPrims generally means 
restricting them to cases where computation time dominates over "communication"


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 Richard L. Peskin     CAIP Parallel Computing Lab                      
 CAIP Center CN - 1390  Rutgers University       
 Piscataway, N. J. 08855-1390             
         net: peskin@caip.rutgers.edu              
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 
-- 
goodby

peskin@caip.rutgers.edu (R. L. Peskin) (08/16/89)

>This is an excellent question. The major problem with implementation of 
>user primitives in Smalltalk-80 from PPS is the inability to walk and 
>examine the object space from the primitive. This makes it virtually 
>impossibe to efficiently pass complex data to primitives, thus severely 
>limiting the potential of the userPrims.The best hope is to pass arrays of 
>numbers to the primitive, which is at least fairly quick. Passing compound 
>objects (to e examined by the code of the primitive) is not supported.

For what it is worth, Tektronix last (& final, I think) Smalltalk release does 
support userPrims (wriiten in C) that share object memory.
>
>Were this remedied, the potential would be vast indeed.  Creating 
>primitives to handle expensive calculations would quickly move 
>Smalltalk-80 into the big leagues of scientific computing, particularly in 
>areas like visualization systems.

We also feel that some sort of "rapid" generator of primitives (starting with 
Smalltalk code) is going to be essential. It would allow users to develop 
prototype models and then move them to efficient instantiations.
>
--dick


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 Richard L. Peskin     CAIP Parallel Computing Lab                      
 CAIP Center CN - 1390  Rutgers University       
 Piscataway, N. J. 08855-1390             
         net: peskin@caip.rutgers.edu              
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 
-- 
goodby