Lisaac is the first compiled object-oriented programming language based on prototype concepts, with system programming facilities and design by contract.
Lisaac's developers admired both Self's flexibility and dynamic inheritance, and Eiffel's static typing and design by contract features. Seeking to combine these two apparently contradictory feature sets, Lisaac was created.
Lisaac was designed as the language in which the Isaac operating system would be programmed.
The Lisaac compiler produces optimized ANSI C code, which can then be compiled on every architecture with an appropriate C compiler which makes Lisaac a real multi-platform language. Compiling results show that it is possible to obtain executables from a high-level prototype-based language that are as fast as C programs.
concept small prototype-based programming language
The ideas in Lisaac are mostly inspired by Smalltalk (all values are objects), Self (prototype-based)
and Eiffel (design by contract)
platforms all platforms (host/target specific for GCC)
features pure object language
very fast (like C code)
dynamic and multiple inheritance
dynamic definition slot
static typing (invariant)
auto-cast type system
programming by contract
include C code facilities
A mpeg2 decoder written in C was rigorously translated in Lisaac
* Lisaac compilation options : -O -i20
* Gcc compilation options : -O3 -fomit-frame-pointer -ftree-vectorize -msse -march=pentium4 -mtune=pentium4
* System : Debian unstable/lenny
* Video: 80Mo, 1m51s
C version Lisaac version Lisaac Rate (%)
Code line count 9888 6003 35.3% less
Binary size 76Kb 88Kb 13.64% more
Text size 51427b 53887b 4.78% more
Run time YUV format (s) 30.74 44.43 44.5% slower
Run time SIF format (s) 60.67 59.15 2.5% faster
Run time TGA format (s) 97.87 83.48 17.2% faster
Run time PPM format (s) 97.33 83.70 16.3% faster
Intel(R) Core(TM)2 Quad CPU @ 2.40GHz, 4Go DDR2
Lisaac is a hugh level language, so it explain 37,31% code line less than C program. Specialisations of the code made by the Lisaac compiler explain the 10% surplus of binary size. Data structure are heavier in Lisaac than C, but all memory is dynamically managed in Lisaac, so memory uses at runtime is about equal.
Sather 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.
The original Berkeley implementation is now maintained by many people, not all at Berkeley, and has been adopted by the Free Software Foundation therefore becoming GNU Sather. There are at least two other implementations: Sather-K from the University of Karlsruhe, and Sather-W from the University of Waikato.
The former ICSI sather compiler (now GNU 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.
The GNU Sather compiler, written in Sather itself, is dual licensed under the GNU GPL & LGPL.
Features and Goals
Some of the goals for the project include the following:
Fast compiles and low memory use
Utility and Applications:
Modular library based architecture
Support diverse clients (refactoring, static analysis, code generation, etc)
Allow tight integration with IDEs
Use the LLVM 'BSD' License
Internal Design and Implementation:
A real-world, production quality compiler
A simple and hackable code base
A single unified parser for C, Objective C, C++, and Objective C++
Conformance with C/C++/ObjC and their variants
Of course this is only a rough outline of the goals and features of Clang. To get a true sense of what it is all about, see the Features section, which breaks each of these down and explains them in more detail.
The development of a new front-end was started out of a need -- a need for a compiler that allows better diagnostics, better integration with IDEs, a license that is compatible with commercial products, and a nimble compiler that is easy to develop and maintain. All of these were motivations for starting work on a new front-end that could meet these needs.