Sather - Sather
Pro lidi s příjmením viz Sather (příjmení).
Paradigma | objektově orientovaný, funkční |
---|---|
Navrhl | Steve Omohundro |
Vývojář | University of California, Berkeley, University of Waikato, GNU projekt |
Poprvé se objevil | 1990 |
Stabilní uvolnění | 1.2.3[1] / 7. července 2007 |
Psací disciplína | statický, silný |
webová stránka | www |
Hlavní, důležitý implementace | |
ICSI Sather, GNU Sather | |
Ovlivněno | |
Eiffelova, CLU, Společný Lisp, Systém | |
Ovlivněno | |
Chladný |
Sather je objektově orientovaný programovací jazyk. Vznikl kolem roku 1990 v Mezinárodním institutu pro počítačové vědy (ICSI) na University of California, Berkeley, vyvinutý mezinárodním týmem vedeným Steve Omohundro. Podporuje to odvoz odpadu a generika podle podtypy.
Původně to bylo založeno na Eiffelova, ale rozcházelo se a nyní zahrnuje několik Funkcionální programování funkce.
Jméno je inspirováno Eiffelem; the Sather Tower je rozpoznatelný orientační bod v Berkeley, pojmenovaný po Jane Krom Sather, vdova po Peder Sather, který věnoval vysoké částky na založení univerzity.
Sather také čerpá inspiraci z jiných programovacích jazyků a paradigmat: iterátory, design podle smlouvy, abstraktní třídy, vícenásobné dědictví, anonymní funkce, přetížení operátora, protikladný typový systém.
Původní implementace Berkeley (poslední stabilní verze 1.1 byla vydána v roce 1995, již nebyla zachována[2]) byl přijat Free Software Foundation proto se stal GNU Sather. Poslední stabilní GNU verze (1.2.3) byla vydána v červenci 2007[3] a software aktuálně není udržován. Existovalo několik dalších variant: Sather-K z Univerzita v Karlsruhe;[4][5] Sather-W z University of Waikato[6] (implementace Sather verze 1.3); Port Petera Naullse z ICSI Sather 1.1 až RISC OS;[7] a pSather,[8][9] paralelní verze adresování ICSI Sather nejednotný přístup do paměti víceprocesorové architektury, ale programátorovi představuje model sdílené paměti.
Bývalý překladač ICSI Sather (nyní GNU Sather) je implementován jako kompilátor do C, tj. kompilátor nemá výstup objekt nebo stroj kód, ale vezme Sather zdrojový kód a generuje zdrojový kód C jako soubor střední jazyk. Optimalizace je ponechána na kompilátoru C.
Kompilátor GNU Sather, napsaný v samotném Sather, je duální licence pod GNU GPL & LGPL.
Ahoj světe
1 třída AHOJ SVĚTE je2 hlavní je 3 #VEN+"Ahoj světe"; 4 konec; 5 konec;
Několik poznámek:
- Názvy tříd jsou ALL CAPS; toto není jen konvence, ale vynucuje ji kompilátor.
- Volaná metoda
hlavní
je vstupním bodem pro provedení. Může patřit do jakékoli třídy, ale pokud se liší odHLAVNÍ
, musí být zadán jako volba kompilátoru. #
je symbol konstruktoru, metoda volánívytvořit
odpovídající třídy; zde se používá pro vytvoření instanceVEN
třída, což je ve skutečnosti standardní výstup.- The
+
operátor zde byl přetížen, aby stál za připojením streamu. - Operátoři jako
+
jsou syntaktický cukr pro konvenčně pojmenovaná volání metody:a + b
znamenáa.plus (b)
. K vyřešení pořadí volání metod v komplexních vzorcích se používají obvyklé konvence aritmetické priority. - Uspořádání programu umožňuje předběžné a následné podmínky (zde nejsou zobrazeny), které ukazují Satherovu Eiffelovu linii.
Příklad iterátorů
1 třída HLAVNÍ je2 hlavní je3 smyčka4 i := 1.až do!(10);5 #VEN + i + "";6 konec;7 konec;8 konec;
Tento program tiskne čísla od 1 do 10.
The smyčka
... konec
konstrukt je upřednostňovaným prostředkem k definování smyček (ačkoli zatímco
a opakovat
-dokud
jsou také k dispozici). V konstruktu lze použít jeden nebo více iterátorů. Názvy iterátorů vždy končí vykřičníkem (tato konvence je vynucena kompilátorem). až do!
je metoda celočíselné třídy INT
přijetí jednoho jednou
argument, což znamená, že jeho hodnota se nezmění, protože výtěžek iterátoru bude. až do!
by mohly být implementovány v INT
třída takto:
až do!(jednou m:INT):STEJNÝ je i: INT := já; - inicializovat i na hodnotu sebe sama, - to je celé číslo, které se tato metoda nazývá smyčka -li i>m pak přestat; - opustit smyčku, když překročím m konec; výtěžek i; - jinak použijte i jako návratovou hodnotu a zůstaňte ve smyčce i := i + 1; - a přírůstek konec; konec;
Typové informace pro proměnné jsou označeny syntaxí postfixu proměnná: TŘÍDA
. Typ lze často odvodit, a proto jsou informace o psaní volitelné, jako například v anInteger :: = 1
. STEJNÝ
je výhodná pseudotřída odkazující na aktuální třídu.
Reference
- ^ https://directory.fsf.org/wiki/sather.
- ^ ICSI Sather budoucí plány
- ^ GNU Sather ke stažení
- ^ Stránka projektu Sather-K (archiv z roku 2001)
- ^ Stažení Sather-K 0,9, verze z roku 1994
- ^ Stránka projektu Sather-W 1.3 (archivovaný odkaz z roku 2002)
- ^ Port Petera Naullse již na webu není k dispozici.
- ^ pSather popis
- ^ pSather stahování