home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
sa104os2.zip
/
SATHR104.ZIP
/
SATHER
/
DOC
/
FAQ
< prev
next >
Wrap
Text File
|
1994-12-22
|
9KB
|
221 lines
-----------------------------------------------------------------
Sather Frequently Asked Questions
-----------------------------------------------------------------
This is the Sather FAQ. If you have suggestions for the inclusion of
other useful information, please send email to "davids@icsi.berkeley.edu".
Table of contents
-----------------
1. What is Sather?
2. Is Sather a subset or superset of Eiffel?
3. Where does the name "Sather" come from? How do I pronounce it?
4. What does the "Hello World" program look like?
5. Where can I get information on Sather?
6. Are there freely available implementations of Sather?
7. How portable is the compiler?
8. How efficient is the compiler?
9. What is the future of Sather?
10. What is all this about covariance vs. contravariance?
1. What is Sather?
Sather is an object oriented language which aims to be simple,
efficient, safe, and non-proprietary. It aims to meet the needs of
modern research groups and to foster the development of a large, freely
available, high-quality library of efficient well-written classes for a
wide variety of computational tasks. It was originally based on Eiffel
but now incorporates ideas and approaches from several languages. One
way of placing it in the "space of languages" is to say that it
attempts to be as efficient as C, C++, or Fortran, as elegant and safe
as Eiffel or CLU, and to support higher-order functions as well as
Common Lisp, Scheme, or Smalltalk.
Sather has garbage collection, statically-checked strong typing,
multiple inheritance, separate implementation and type inheritance,
parameterized classes, dynamic dispatch, iteration abstraction,
higher-order routines and iters, exception handling, assertions,
preconditions, postconditions, and class invariants. Sather code can
be compiled into C code and can efficiently link with C object files.
Sather has a very unrestrictive license aimed at encouraging
contribution to the public library without precluding the use of Sather
for proprietary projects.
2. Is Sather a subset or superset of Eiffel?
Neither. Valid Eiffel programs are not Sather programs, nor vice versa.
Sather 0.2 was closer to being a subset of Eiffel 2.0 but even then
introduced several distinct constructs primarily to improve
computational performance. Eiffel 3.0 has expanded significantly in a
different direction. Sather 1.0 has introduced several new constructs
(eg. iteration abstraction, higher order routines, object constructors,
routine and iter overloading, contravariant class interfaces, typecase)
which makes the two languages quite distinct now.
3. Where does the name ``Sather'' come from? How do I pronounce it?
The Sather language gets its name from the Sather Tower (popularly
known as the Campanile), the best-known landmark of the University of
California at Berkeley. A symbol of the city and the University, it is
the Berkeley equivalent of the Golden Gate bridge. Erected in 1914,
the tower is modeled after St. Mark's Campanile in Venice, Italy. It is
smaller and a bit younger than the Eiffel tower, and closer to most
Americans -- and lovers of Venice of course. Yet, at 307 feet it
houses 50 tons of human, dinosaur and other animal bones mostly
collected from the La Brea Tar Pits. Unseen by most visitors the
collection covers six floors of the tower. The way most people say the
name of the language rhymes with "bather".
4. What does the ``Hello World'' program look like?
-----------------------------------------------------------------
class MAIN is
main is #OUT + "Hello World!\n" end
end
-----------------------------------------------------------------
5. Where can I get information on Sather?
The best way is to check out the Sather WWW page at
http://www.icsi.berkeley.edu/Sather
There is a newsgroup "comp.lang.sather" that is devoted to
discussion of Sather 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
sather-request@icsi.berkeley.edu
If you have problems with Sather or related questions that are not of
general interest, mail to
sather-bugs@icsi.berkeley.edu
This is also where you want to send bug reports and suggestions for
improvements.
6. Are there freely available implementations of Sather?
The ICSI Sather 1.0 compiler can be obtained by anonymous ftp at
ftp.icsi.berkeley.edu: /pub/sather
These sites also mirror the Sather distribution:
ftp.sterling.com: /programming/languages/sather
ftp.uni-muenster.de: /pub/languages/sather
maekong.ohm.york.ac.uk: /pub/csp
I am looking for reliable sites on other continents to mirror the
Sather distribution and be included in this FAQ. If you can help with
this, please send me mail.
There is another dialect of Sather called Sather-K that is being
developed at the University of Karlsruhe, where it has been used in
undergraduate instruction. The library of Sather-K is Karla, the
KARlsruhe Library or Algorithms, and it has been used in graduate
courses on algorithms and object-oriented design. Sather 1.0 and
Sather-K are conceptually quite close and we intend to have them
converge in the future; we hope by the summer of 1995.
The Sather-K compiler and library are available at
i44ftp.info.uni-karlsruhe.de: /pub/sather and /pub/Karla
as well as at the ICSI ftp site in pub/sather/Sather-K.
7. How portable is the compiler?
The compiler generates ANSI C and has very few Unix dependencies
which can be fixed if we find out what they are; if your machine runs
gcc, you should be able to port the compiler.
So far it has been ported to the following systems, that I know of:
SunOS 4.1.3
SunOS 5.3
Ultrix 4.3
NetBSD 1.0_BETA
Linux 1.0.8
SCO Unix 3.2.4
SGI, IRIX 4.0.5H, IRIX 5.2
Sony NEWSOS 4.1R
MIPS RISC os 4.53C
Alpha, DEC OSF/1 V2.0 and V3.0
FreeBSD 1.1.5.1
HPUX 8.07
OS/2
8. How efficient is the compiler?
On my Sparc 10 the Sather -> C translate of the compiler takes ~51
seconds, and the "hello world" program takes ~22 wall clock seconds
Sather -> C -> executable (using gcc). YMMV, especially if you have
less then 32MB memory.
The current bottleneck is in compiling the generated C; a parallel make
utility helps. At some point we will make the C compilation
incremental to get around this.
Because we can take advantage of the C compiler's optimizer, the
generated code can range from fair to pretty good.
9. What is the future of Sather?
Several institutions have expressed interest in using Sather as a
teaching language. Its combination of simplicity, support for modern
programming concepts, and free availability should make it ideal for
this purpose.
Ultimately there will be a better development environment; we envision
an interpreter/on-the-fly compiler. This won't be too hard to do
because the compiler already emits an abstract machine representation
that is appropriate for interpretation. At the moment the best use of
my limited spare time along these lines is spent speeding up the
compiler.
Parallel Sather (pSather) is a parallel version of the language,
developed and in use at ICSI. pSather addresses
non-uniform-memory-access multiprocessor architectures but presents a
shared memory model to the programmer. It extends serial Sather with
threads, synchronization and data distribution. Unlike actor
languages, multiple threads can execute in one object. A distinguished
class GATE combines various dependent low-level synchronization
mechanisms efficiently: locks, futures, and conditions. The new
version of the pSather compiler is being integrated into the serial
Sather 1.0 compiler. More information on pSather is available at the
WWW page.
10. What is all this about covariance vs. contravariance?
A religious war occasionally crops up on the net with people arguing
about whether covariance or contravariance is best. If you haven't
heard of either, don't worry about it.
Sather is contravariant. That means that it isn't possible to get type
errors at runtime. It also means that some ways of doing
object-oriented programming will require that you, the Sather
programmer, insert _explicit_ type checks (using a typecase) in places
where a covariant compiler would have inserted an implicit check for
you. We choose contravariance because it eliminates a potential source
of bugs that can't be discovered at compile time; other language
designers have choosen the opposite to allow more expressiveness.
Eiffel says toMAHto, we say toMAYto.