Sather

Uit Wikipedia, de vrije encyclopedie

Sather is een object-georiënteerde programmeertaal ontwikkeld door medewerkers van het International Computer Science Institute van de Universiteit van Californië - Berkeley. De eerste specificatie van de taal werd opgesteld rond 1990 door een internationale groep onder leiding van Steve Omohundro.

Zoals wel vaker het geval is met recent ontwikkelde programmeertalen (vergelijk Java), is Sather sterk gebaseerd op andere, al bestaande talen en is de taal opgezet om de goede ideeën van andere talen te combineren tot een nieuw geheel. Sather is op dat vlak sterk beïnvloed door talen als Eiffel, maar ook door verschillende functionele talen. Een ander aspect dat Sather van Eiffel leent, is de stijl van naamgeving: Sather is genoemd naar de Sather Tower, een toren die de skyline van Berkeley domineert.

Qua taalconstructies en faciliteiten ondersteunt Sather automatisch geheugenbeheer en iteratoren, boven op de typische faciliteiten van object-georiënteerde talen. Daarnaast ondersteunt de taal functionele concepten als genericiteit, anonieme functies en operator-overloading. Sather kent meervoudige overerving en een contravariant typesysteem. Een redelijk apart idee in Sather is het onderscheid tussen type-overerving en implementatie-overerving.

Na het ontwikkelen van de eerste specificatie, besloot de ICSI-groep de taal over te dragen aan de Free Software Foundation voor verdere ontwikkeling en beheer. Naast de officiële implementatie van de FSF zijn er nog twee implementaties: Sather-K van de Universiteit van Karlsruhe en Sather-W van de Universiteit van Waikato.

De typische implementatie van de Sather-compiler gebruikt C als doeltaal. Dit in tegenstelling tot de klassieke compilers, die naar objectcode of machinetaal compileren en een programma opleveren dat direct uitvoerbaar is. Hierdoor worden programma-optimalisaties overgelaten aan C-compilers, die al zeer lang doorontwikkeld zijn om efficiënte objectcode te produceren. Er zijn een aantal studies waarin Satherprogramma's efficiënter lopen dan vergelijkbare C++-programma's. Daarnaast kan de C-code nog met de hand geoptimaliseerd worden, mocht dat nodig zijn.