Sather is an object-oriented programming language. It originated at the University of California, Berkeley, circa 1990. It supports garbage collection and generics by subtypesSather is an object-oriented programming language. It originated circa 1990 at the International Computer Science Institute at the University of California, Berkeley, developed by an international team led by Steve Omohundro. It supports garbage collection and generics by subtypes.
Originally, it was based on Eiffel, but it has diverged, and now includes several functional programming features. It is probably best to view it as an object-oriented language, with many ideas borrowed from Eiffel. Even the name is inspired by Eiffel; the Sather Tower is a recognizable landmark at Berkeley. Sather also takes inspiration from other programming languages and paradigms: iterators, design by contract, abstract classes, multiple inheritance, anonymous functions, operator overloading, contravariant type system. Some of these features are normally only found in functional programming languages.
Sather is implemented as a compiler to C, i.e., the compiler does not output object or machine code, but takes Sather source code and generates C source code as an intermediate language. Optimizing is by the C compiler, Sather code often performs better than the corresponding C++ code, and the generated C code can always be optimized by hand.
Sather is dual licensed under the GNU GPL & LGPL.
Sather Interviews are getting tough these days as the technology grows faster. To get through the Sather interview one needs to update him/herself in a regular manner. Having said that, just before the interview, it is very important to have a quick glance of the reputed Sather questions and answers to make yourself comfortable during the interview process. This is where DoAnswers.com helps you in renewing yourself on Sather and various other technologies interview preparation.
1. How can I use more than one cluster?
You cannot. The current compiler supports only one cluster
2. How do I compile a pSather program?
Add the switch -psather to your command line: cs -psather your_psather_program.sa
3. I cleared a thread, but it did not stop?
Threads waiting in a lock statement or in a gate operation do not observe a clear. The clear has actually been removed from the language for a number of reasons. To compensate for this, a disjunctive lock has been introduced. Note that this feature is neither in the current spec nor in the current compiler.
4. I want to port pSather to my computer, how can this be done?
Your have the following options: port the lwp package included in the pSather distribution to your computer. This is probably the easiest way to port the pSather compiler. Drawbacks: you will have non preemtive threads. port the Active Message and Thread library used for the future pSather compiler to your computer. Ask fleiner@icsi.berkeley.edu for more information about this. If you have a good thread packages on your computer and your computer supports shared memory, this may actually be quite easy. get the pSather runtime interface description and create your own runtime. Before starting with this you should get the runtime interface description, which does not yet exist in a way that it could be distributed.
5. I would like to add spread support/clusters/..., what shall I do?
Nothing :-). We are currently working on a runtime implementation which will add all these nifty features.
6. near/far don't work, why?
As your program runs on only one cluster, near is true and far false for all variables. As it does not give you any useful information, we did not implement it in the current pSather compiler.
7. On which Hardware/Software do pSather programs run?
Currently the following systems have been tested: SunOS 4.1.3 Solaris 2.4 Linux 1.1.59 and Linux 1.2.4
8. The current pSather library code looks very strange, why?
The current pSather runtime started as a test program to see how the multiple lock statement could be implemented to guarantee fairness and prevent starvation and dead locks. It has been connected to the pSather compiler just to check if the runtime interface is actually usable. To simplify this task, we just concatenate all the source files to one file (called psather.c).
9. what is GNUsather?
GNU Sather is an object-oriented programming language designed to be simple, efficient and safe. It aims to be appropriate for use in teaching, research, and industry. 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 or Scheme. So GNU Sather is an object-oriented language with garbage collection, statically-checked strong typing, multiple inheritance, separate implementations and type inheritance, parameterized classes, dynamic dispatch, iteration abstraction, higher-order routines and iterators, exception handling, assertions, preconditions, postconditions, and class invariants. Code can be compiled into C code and can link with C object files.
10. What is pSather?
pSather is a parallel extension of the object oriented language Sather. It adds threads and synchronization mechanisms to the language. Even though pSather programs should run on distributed computer systems, they offer shared memory across all threads.