Next: Sather Tutorial Chess Up: Sather 1.0 Tutorial Previous: Contents

About Sather 1.0

Sather is an object oriented language which aims to be simple, efficient, safe, and non-proprietary. One way of placing it in the ``space of languages" is to say that it aims to be as efficient as C, C++, or Fortran, as elegant and safe as Eiffel or CLU, and support higher-order functions and iteration abstraction as well as Common Lisp, Scheme, or Smalltalk.

Sather has parameterized classes, object-oriented dispatch, statically-checked strong (contravariant) typing, separate implementation and type inheritance, multiple inheritance, garbage collection, iteration abstraction, higher-order routines and iters, exception handling, assertions, preconditions, postconditions, and class invariants. Sather programs can be compiled into portable C code and can efficiently link with C object files. Sather has a very unrestrictive license which allows its use in proprietary projects but encourages contribution to the public library.

Where can I find Sather?

Information on Sather can be found on the Mosaic page From that page, you can reach various documents related to Sather. There also is a list of frequently asked questions. Another source of information is the newsgroup comp.lang.sather that is devoted to discussion of Sather related issues.

There is a Sather mailing list maintained at the International Computer Science Institute (ICSI). Since the formation of the newsgroup, this list is primarily used for announcements. To be added to or deleted from the Sather list, send a message to

If you have problems with Sather or if you want to discuss Sather related questions that are not of general interest, mail to This is also where to send bug reports and suggestions for improvements.

The current ICSI Sather 1.0 compiler, the manual, this tutorial, and the Sather FAQ can be obtained by anonymous ftp from

The distribution file is called Sather-1.0.*.tar.Z. The wildcard is to be replaced by the number of the latest release. At the time this tutorial was written three sites have mirrored the Sather distribution:

Where can I read about Sather?

There are various papers on Sather 1.0, on earlier versions, primarily on Sather 0.5 which is somewhat different, and on pSather which is a parallel extension of Sather.

Most of the papers listed here are directly available from the Mosaic page mentioned above. Others can be retrieved via anonymous ftp from under /pub/techreports. As a last resort, hardcopies may be ordered for a small fee. Send mail to for more information.

The current language specification is published in []. This document can be found next to the code on the ftp server mentioned above. Obviously the file is called

Sather's general design and the differences from Eiffel have been presented in [][][][]. The type system is presented in depth in []. Moreover, ICSI technical papers report on other specific issues, see [][][][].

Sather has been analyzed from an external point of view. Comments and comparisons can be found in [][][].

Related Work: Sather-K

Although we know a lot about Sather-K, which is being developed in Karlsruhe, Germany, it is not yet available online. Future versions of this Technical Report, which can be accessed from anonymous ftp will have some more details.

Planned Changes to this Tutorial

Currently Sather Tutorial Chess does not use the file I/O libraries of Sather 1.0. Since it takes some time to get used to these libraries, the Tutorial definitively should explain them.

Hence, later versions of this Technical Report, which can be accessed from anonymous ftp will be extended in that respect. We will either introduce a way to save the current state of a game and resume at a later program invocation. Or we will supply a library of standard openings and use that information when generating automatic moves.

Next: Sather Tutorial Chess Up: Sather 1.0 Tutorial Previous: Contents

Tue May 30 21:15:13 PDT 1995