From: CRDGW2::CRDGW2::MRGATE::"SMTP::AI.MIT.EDU::GNULISTS" 14-DEC-1990 11:54:40.81 To: MRGATE::"ARISIA::EVERHART" CC: Subj: Sather, a new object oriented language Received: by crdgw1.ge.com (5.57/GE 1.80) id AA11339; Thu, 13 Dec 90 22:56:18 EST Received: from wheat-chex (wheat-chex.ai.mit.edu) by life.ai.mit.edu (4.1/AI-4.10) id AA13645; Thu, 13 Dec 90 19:30:47 EST Received: by wheat-chex (4.1/AI-4.10) id AA08900; Thu, 13 Dec 90 19:30:43 EST Resent-Date: 12 Dec 90 22:55:27 GMT Resent-From: gnulists@ai.mit.edu Resent-Message-Id: <9012140030.AA08900@wheat-chex> Received: from ucbvax.Berkeley.EDU by life.ai.mit.edu (4.1/AI-4.10) id AA01961; Wed, 12 Dec 90 17:55:44 EST Received: from pasteur.Berkeley.EDU by ucbvax.Berkeley.EDU (5.63/1.42) id AA07100; Wed, 12 Dec 90 14:55:02 -0800 Received: by pasteur (5.61/1.41) id AA12684; Wed, 12 Dec 90 14:55:30 -0800 Original-To: gnu-announce@ucbvax.berkeley.edu Path: pasteur!icsib19!om From: om%icsi.Berkeley.EDU@ucbvax.berkeley.edu (Stephen M. Omohundro) Sender: gnulists@ai.mit.edu Newsgroups: gnu.announce,comp.lang.eiffel,comp.lang.c++,comp.object Subject: Sather, a new object oriented language Message-Id: <9701@pasteur.Berkeley.EDU> Date: 12 Dec 90 22:55:27 GMT Reply-To: om%icsi.Berkeley.EDU@ucbvax.berkeley.edu (Stephen M. Omohundro) Organization: International Computer Science Institute, Berkeley, Ca. Originator: om@icsib19 To: info-gnu@prep.ai.mit.edu Errors-To: info-gnu-request@prep.ai.mit.edu 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