A Sather programozási nyelv

Bevezető



A Sather nyelv

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.

Példák

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.

class HELLO_WORLD_EXAMPLE is   main is     #OUT + "Hello World\n";   end; end;
class ITERATOR_EXAMPLE is   main is     loop       i := 1.upto!(10);       #OUT + i + "\n";     end;   end; end;

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:

a:INT := 10; #OUT + "Hello World " + a;     -- Kiírás: "Hello World 10"

Programok felépítése, fordítás

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:

cs -main HELLO_WORLD_EXAMPLE -o hw hw.sa

Megjegyzések

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.