[gnu.announce] Sather, a new object oriented language

om%icsi.Berkeley.EDU@ucbvax.berkeley.edu (Stephen M. Omohundro) (12/13/90)

--text follows this line--
This note is a preliminary announcement of a new object-oriented
language called Sather under development at the International Computer
Science Institute. We will probably have an initial release of the
compiler and library classes sometime in the next several months. We
would therefore like to get feedback on the manual both for content
and readability.  PostScript copies of the manual are available by
electronic mail from om@icsi.berkeley.edu.

Sather is based on Eiffel but is more concerned with efficiency and
less with some of the formal and theoretical issues addressed by
Eiffel. The language is much smaller than the current Eiffel,
it eliminates over 40 keywords and simplifies the syntax and
inheritance rules. Several features were added to increase efficiency
and to simplify programming. Efficient arrays are built into the
language itself (objects may have a dynamically allocated array
portion after their static features). The typing scheme allows the
programmer to distinguish between dispatched and non-dispatched
declarations. As in C++ local variables may be declared at the point
of use. Sather classes may have shared variables which are accessible
from every instance of that class. For efficiency reasons, the
exception handling mechanism based on setjump and long-jump has been
eliminated and the garbage collector is not based on the Dijkstra
algorithm. Many cosmetic issues have been changed (eg. more than one
class may be defined in a file).

Like Eiffel, Sather code is compiled into portable C and efficiently
links with existing C code. The Sather compiler is written in Sather
and has been operational for several months, though it is still being
improved. Preliminary benchmarks show a performance improvement over
Eiffel of between a factor of 4 and 50 on basic dispatching and
function calls. On the Stanford Self benchmarks (including 8 queens,
towers of hanoi, bubblesort, etc), Sather is slightly faster than C++,
though this is probably due to the C compiler's better ability to 
optimize for a Sparcstation than the C++ compiler.

Our plans are to make the Sather compiler and libraries publicly
available under a license whose only restriction is acknowledgement of
the use of Sather and of the authors of any classes used in a program.
We would like to establish a repository for efficient, reusable, well
written, publicly available, classes for most of the important
algorithms in computer science. There are currently about 120 classes
in the library. Some examples of classes being worked on include:

base: integers, strings, random number generation, etc.
compiler: classes used in the compiler
connectionist: back propagation, radial basis functions, competitive 
   learning, Kohonen nets, perceptrons and other neural network 
   algorithms
datastr: various hash tables, priority queues, union find, lists based
   on amortized doubling of extendible arrays, gap lists, binary trees,
   bit_vectors, stacks, queues, sorts, etc.
debugger: classes used in interpreter/debugger
geometry: vectors, boxes, balls, Delaunay triangulation, Voronoi
   diagrams, kd-trees, point location, etc.
grammar: deterministic finite automata, dfa minimization, parsers,
   string search algorithms
graph: minimal spanning tree, depth first search, connected
   components, max flow, shortest path, etc.
graphics: plotting routines, ray tracing, modelling, graphics pipeline
imageproc: bitmaps, dithering, filtering, FFT, etc.
interface: XView classes, PostScript and Framemaker output
numerical: matrix classes (SVD etc.), special functions, complex
   numbers, linear programming, conjugate gradient optimization, etc.
statistics: least squares fits, density estimators, nonlinear
   regression, hidden markov models, nearest neighbor classifiers, 
   decision tree induction, etc.

The libraries are growing quickly and will collect together classes
from many authors under the same unrestrictive license. A GNU emacs
editing mode for Sather exists. We are working on a combination
interpreter, debugger, and browser. A parallel extension of Sather for
shared memory machines is also under development.

--Stephen Omohundro

gnulists (12/13/90)

This note is a preliminary announcement of a new object-oriented
language called Sather under development at the International Computer
Science Institute. We will probably have an initial release of the
compiler and library classes sometime in the next several months. We
would therefore like to get feedback on the manual both for content
and readability.  PostScript copies of the manual are available by
electronic mail from om@icsi.berkeley.edu.

Sather is based on Eiffel but is more concerned with efficiency and
less with some of the formal and theoretical issues addressed by
Eiffel. The language is much smaller than the current Eiffel,
it eliminates over 40 keywords and simplifies the syntax and
inheritance rules. Several features were added to increase efficiency
and to simplify programming. Efficient arrays are built into the
language itself (objects may have a dynamically allocated array
portion after their static features). The typing scheme allows the
programmer to distinguish between dispatched and non-dispatched
declarations. As in C++ local variables may be declared at the point
of use. Sather classes may have shared variables which are accessible
from every instance of that class. For efficiency reasons, the
exception handling mechanism based on setjump and long-jump has been
eliminated and the garbage collector is not based on the Dijkstra
algorithm. Many cosmetic issues have been changed (eg. more than one
class may be defined in a file).

Like Eiffel, Sather code is compiled into portable C and efficiently
links with existing C code. The Sather compiler is written in Sather
and has been operational for several months, though it is still being
improved. Preliminary benchmarks show a performance improvement over
Eiffel of between a factor of 4 and 50 on basic dispatching and
function calls. On the Stanford Self benchmarks (including 8 queens,
towers of hanoi, bubblesort, etc), Sather is slightly faster than C++,
though this is probably due to the C compiler's better ability to 
optimize for a Sparcstation than the C++ compiler.

Our plans are to make the Sather compiler and libraries publicly
available under a license whose only restriction is acknowledgement of
the use of Sather and of the authors of any classes used in a program.
We would like to establish a repository for efficient, reusable, well
written, publicly available, classes for most of the important
algorithms in computer science. There are currently about 120 classes
in the library. Some examples of classes being worked on include:

base: integers, strings, random number generation, etc.
compiler: classes used in the compiler
connectionist: back propagation, radial basis functions, competitive 
   learning, Kohonen nets, perceptrons and other neural network 
   algorithms
datastr: various hash tables, priority queues, union find, lists based
   on amortized doubling of extendible arrays, gap lists, binary trees,
   bit_vectors, stacks, queues, sorts, etc.
debugger: classes used in interpreter/debugger
geometry: vectors, boxes, balls, Delaunay triangulation, Voronoi
   diagrams, kd-trees, point location, etc.
grammar: deterministic finite automata, dfa minimization, parsers,
   string search algorithms
graph: minimal spanning tree, depth first search, connected
   components, max flow, shortest path, etc.
graphics: plotting routines, ray tracing, modelling, graphics pipeline
imageproc: bitmaps, dithering, filtering, FFT, etc.
interface: XView classes, PostScript and Framemaker output
numerical: matrix classes (SVD etc.), special functions, complex
   numbers, linear programming, conjugate gradient optimization, etc.
statistics: least squares fits, density estimators, nonlinear
   regression, hidden markov models, nearest neighbor classifiers, 
   decision tree induction, etc.

The libraries are growing quickly and will collect together classes
from many authors under the same unrestrictive license. A GNU emacs
editing mode for Sather exists. We are working on a combination
interpreter, debugger, and browser. A parallel extension of Sather for
shared memory machines is also under development.

--Stephen Omohundro

-- 
Alan B. Clegg			YRAC Rural Fire Department, Wake Station 29
Matrix Corporation  		Support your Firefighters: 
Raleigh, NC				The life they save might be yours