Next: 3 Determinism
Up: Differences between Sather-1.0 and
Previous: 1 Introduction
S1 and SK had some very different goals. Many of the goals were the
same, for example to be as efficient as C as well as cleaner and safer
than Eiffel. However, each group had other goals not shared by both.
Some goals of S1 were:
- Support for separate compilation and multiple developers.
- Issue:
- Composability of code requires that it be possible to
statically check classes over all possible parameterizations.
- Choice:
- This lead to S1 parameter type bounds and the
restriction that overloading not occur between two unrelated
abstract arguments (see section 6).
- Trivial porting to a wide range of platforms.
- Issue:
- Sather should be available on all platforms. This
includes embedded control, the bulk of installed CPU use
today. This can be achieved by a custom back end for each
platform, if the manpower is available.
- Choice:
- Because ICSI has limited interest in compiler
back-ends, S1 chose to use C as a portable assembler.
Compiling through C is slow. This intensified the demand for
separate compilation, and may have affected the choice for
S1 arrays, see section 7 below.
- Extendability for threaded and distributed parallel programming.
- Issue:
- What about parallel programming?
- Choice:
- ICSI has been actively engaged in research on parallel
and distributed programming since the inception of Sather.
ICSI's vision of parallel programming is multithreaded and
explicitly distributed. Multithreaded code imposes very
different constraints than data parallel code, which in turn
reflects on decisions about the semantics of serial code.
(Eg. What is the semantics of a stream shared by more than one
thread?)
Some goals of SK were:
- Rapid compilation.
- Issue:
- Karlsruhe has a substantial investment in compiler
research, including quality compiler tools. Development of SK
naturally used these.
- Choice:
- Because the resulting compiler is so much faster than
compiling through C, SK has not been concerned with separate
compilation.
- Pedogogy.
- Issue:
- SK was envisioned as a language with which one would
teach undergraduates. One wants to be able to expose language
constructs in a clean order, without forward references in the
language to concepts students are not prepared for. The
language is used in undergraduate as well as graduate
courses. It is used for teaching both, imperative and
object-oriented programming in Gerhard Goos: Vorlesungen über
Informatik II, Springer Verlag, 1996
- Choice:
- Some SK constructs differ from S1. For example,
in S1 is
in SK, which avoids
explaining about iterator notation when loops are introduced.
Similarly, in SK local variables must be declared at the
beginning of the block in which they appear and there is no
type inference for declarations.
- Research vehicle for understanding library design.
Some observations in constructing reliable libraries influenced
SK. One goal was to avoid errors (either compile-time or
run-time) which point into library code.
For the motivation of structural conformance, see
section 6.