Mary (programovací jazyk) - Mary (programming language)
Paradigma | rozkazovací způsob |
---|---|
Vývojář | SPUSŤ TO |
Poprvé se objevil | Sedmdesátá léta |
Psací disciplína | statický , silný |
OS | Cross-platform : Kongsberg Våpenfabrikk SM-4, Norsk Data Nord-10 / ND-100, řada Univac-1100, ND-100 / SINTRAN-III , i386 , SPARC |
Ovlivněno | |
ALGOL 68 |
Mary byl programovací jazyk navržen a realizován RUNIT v Trondheim , Norsko v roce 1970. Vypůjčil si mnoho funkcí z ALGOL 68, ale byl navržen pro strojově orientované programování.
Neobvyklou vlastností jeho syntaxe bylo, že výrazy byly konstruovány pomocí konvenčních operátorů infix, ale všechny měly stejnou prioritu a hodnocení šlo zleva doprava, pokud neexistovaly závorky. Přiřazení mělo cíl vpravo a přiřazení bylo považováno pouze za jiného operátora.
Podobně jako v C se zdá, že existovalo několik jazykových funkcí, které programátorům umožňují vytvářet přiměřeně dobře optimalizovaný kód, a to navzdory poměrně primitivnímu generátoru kódu v kompilátoru. Tito zahrnovali operátory podobné změně + = et v C a explicitní deklarace registrů pro proměnné.
Pozoruhodné vlastnosti:
- "Dataflow syntax" - hodnoty toku zleva doprava, včetně přiřazení.
- Většinu konstruktů lze použít ve výrazech (bloky, IF, CASE atd.).
- Textově založená rekurzivní makra.
- Přetížené uživatelem definované operátory, neomezené na předdefinované identifikátory jako v C ++ .
- Automatické vytváření a dereferencování ukazatelů z kontextu typu.
- Skalární typy rozsahů.
- Array a nastavte výčet ve smyčkových iterátorech.
- Deskriptory dynamického pole (ROW).
Kniha popisující Mary byla vytištěna v roce 1974 (čtvrté a poslední vydání v roce 1979): Mary Textbook od Reidar Conradi & Per Holager.
Byly vytvořeny kompilátory pro minipočítače Kongsberg Våpenfabrikk SM-4 a Norsk Data Nord-10 / ND-100. Původní překladač Mary byl napsán v NU ALGOL , běžel na řadě Univac-1100 a byl použit k bootstrapu nativního překladače pro ND-100 / SINTRAN-III . RUNIT implementoval kompilátor CHILL napsaný v Mary, který běžel na ND-100 a měl cíle Intel 8086 a 80286 . Když byl tento kompilátor portován na platformu VAX , byl implementován společný backend pro Mary a CHILL . Později byly k dispozici backendy pro i386 a SPARC . Vzhledem k tomu, že překladač Mary byl implementován v Mary, bylo možné spustit překladač na všech těchto platformách.
Mary již není udržována.
Příklad
BEGIN INT i := 10; %% Variable with initial value. REF INT ri := i; %% Pointer initialized to point to i. INT j := 11; j :- REF INT =: ri; %% Type conversion and assignment %% ri now points to j. i =: (ri :- VAL REF INT); %% Assignment and type conversion %% ri points to j so j is changed. IF j > 10 %% Conditional statement with result THEN %% used inside an arithmetic expression. 1 ELSE 2 FI + j =: j; END