A Sather egy új keletű objektum-orientált nyelv, melyet egyszerű, hatékony és megbízható programok írására terveztek. Fő irányadó az Eiffel nyelv volt, de számos más nyelv is komoly hatást gyakorolt a fejlesztés során. Ahogy a fejlesztői mondják:
A Sather egy objektum-orientált programozási nyelv, amelyet egyszerűnek, hatékonynak, biztonságosnak, rugalmasnak és nyíltnak terveztek. A nyelvek között elhelyezve azt mondhatjuk, hogy olyan hatékony kíván lenni, mint a C, C++ és a Fortran, olyan elegáns és még biztonságosabb, mint az Eiffel, valamint a Common Lisp, CLU és Scheme nyelvekhez hasonlóan támogat magas szintű függvényeket és absztrakt iterációs lehetőségeket.
Fejlesztését 1990-től kezdődően az International Computer Science Institute-nál a University of California at Berkeley számítástudományi karának segítségével egy nemzetközi csoport végezte Steve Omohundro vezetésével. Nevét a helyi Sather toronyról kapta, mely az egyetem és a város szimbóluma is.
A Sather főbb jellemzői: objektum-orientáltság; erős (kontravariáns) típusosság; szemétgyűjtő rendszer (de mi is fel tudunk szabadítani egy példányt a destroy(ob : $OB) segítségével); többszörös öröklődés; különválasztott implementációs és típus öröklődés; paraméteres osztályok; altípusos generikusság; iterátorok; kivételkezelés; elő- utófeltétel és invariáns ellenőrzés; szerződés-modell támogatása; névtelen függvények; operátor túlterhelhetőség. A forráskódot C kódra fordítják, így az könnyen kapcsolható más nyelv (pl. C) könyvtári elemeihez is. A pSather párhuzamos és osztott programozási lehetőségekkel kiterjesztett változata. A Sather a GNU GPL és LGPL liszensz alatt áll: http://www.gnu.org/software/sather/
A nyelvről részletes angol nyelvű dokumentáció található a Berkeley egyetem honlapján.
Fordítóprogram szabadon letölthető az alábbi címről: ftp.icsi.berkeley.edu
Van külön Sather newsgroup: comp.lang.sather és Sather levelezési lista: sather-request@icsi.berkeley.edu is.
Ezen leírás elsődleges forrása is a fent említett honlapon található angol nyelvű hivatalos online kézikönyv.
Bevezetőül tekintsünk két jellegzetes példát Sather nyelven. Az első a klasszikus Hello World program, a második pedig egy példa a Sather iterátoraira: kiírjuk 1-től 10-ig a természetes számokat.
A leírásban szereplő példák érthetősége érdekében megjegyezzük, hogy Satherben a #OUT+ utasítással írhatunk ki különböző típusú adatokat a képernyőre. Például:
Sather nyelvű forráskódok osztályokat (class) tartalmaznak. A fordítónak megadott forrásfájlokon kívül a fordító mindig megvizsgálja a standard könyvtárakat is (az alaptípusok definíciója is ezekben található). Sather program indításakor mindig a kijelölt osztály (alapértelmezés szerint a ’MAIN’ osztály) ’main’ eljárása indul el, és visszatérési értéke (ha van) befejezéskor visszaadódik, mint befejeződési kód.
Fordítani a ’cs’ utasítással lehet. Például a fent bemutatott HELLO_WORLD_EXAMPLE fordítása:
A Sather fejlesztésekor kritikus szempont volt a hatékonyság és a használhatóság, ezért a Sather fordító először C nyelvű programot készít és majd abból futtathatót. Így linkelhetők hozzá C könyvtári elemek is, ami jelentősen megnöveli használati és hatékonysági értékét. Másrészt magyarázatot ad néhány furcsaságra, amelyek sok helyen felbukkannak, ezért megismerése előtt a C nyelv alapos ismerete fontos a megértéshez.
A ‘#’ karakter használata néhány helyen félrevezető lehet, mivel több jelentése is van.