MOO (programovací jazyk) - MOO (programming language)
tento článek potřebuje další citace pro ověření.Březen 2018) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Paradigma | multi-paradigma: strukturovaný, na základě prototypu |
---|---|
Navrhl | Stephen White |
Vývojář | Stephen White a Pavel Curtis |
Poprvé se objevil | 1990 |
Stabilní uvolnění | 1.8.1 / 10. ledna 2001 |
Psací disciplína | dynamický |
Hlavní, důležitý implementace | |
BUČENÍ | |
Ovlivněno | |
Algol, Lisp, Systém, Pokec, Já, C, Ada, MUF | |
Ovlivněno | |
CoolMUD, ColdC |
The Programovací jazyk MOO je poměrně jednoduchý programovací jazyk slouží k podpoře MOO Server. to je dynamicky zadáno a používá a na základě prototypu objektově orientovaný systém, s syntax zhruba odvozeno od Ada škola programovacích jazyků.
Dějiny
Stephen White vytvořil první server MOO a jazyk v roce 1990 C. V průběhu roku se do projektu zapojil Pavel Curtis, který vydal první verzi LambdaMOO Server. LambdaMOO je provozován a udržován výhradně na dobrovolnické bázi a nyní má vlastní SourceForge projekt. Ačkoli poslední zabalené vydání bylo v roce 2001, vývoj je stále aktivní v CVS projektu na Sourceforge.net [1] Nějaký následný kód je k dispozici také na Github.net
White popisuje MOO jako „mišmaš operátorů podobných c a řídicích struktur podobných Adě v kombinaci s jednoduchou dědičností ve stylu prototypu.“
Funkce
Jazyk má explicitní zpracování výjimek řízení toku, stejně jako tradiční smyčkové konstrukce. Hierarchie sloves a vlastností poskytuje výchozí hodnoty prototypovým objektům, přičemž v hierarchii jsou hodnoty převyšující nižší. Tato hierarchie objektů je udržována prostřednictvím delegování na vlastnost „rodiče“ objektu, což má za následek formu jediné dědičnosti. Speciální atributy objektů, sloves a vlastností související se zabezpečením zahrnují vlastnictví a příznaky čtení, zápisu a spuštění. Programy MOO jsou kompilovány bajtovým kódem s implicitní dekompilací při úpravách a poskytují kanonickou formu programů.
Programy MOO jsou kolmé vytrvalý prostřednictvím pravidelných kontrolních bodů. Objekty jsou identifikovány jedinečným celočíselným identifikátorem. Nepoužitá programová data jsou eliminována prostřednictvím automatický sběr odpadu (implementováno počítání referencí ). Samotné objekty MOO však nejsou shromažďovány odpadky a jsou ručně odstraněny jejich vlastníky nebo superuživateli (aka kouzelníky) prostřednictvím procesu zvaného „recyklace“.
MOO je výslovně víceuživatelský systém a k programům (slovesům) přispívá libovolný počet připojených uživatelů. Rozlišuje se mezi „ovladačem“ (runtime) a „jádrem“ (programy napsané v jazyce MOO.) Převážná většina funkcí běžícího MOO je zpracovávána „v jádru“.
Modul runtime podporuje více úkolů pomocí metody časového krácení založené na odplatě. Slovesa běží s výhradním přístupem k databázi, takže pro zachování synchronizace není nutné žádné explicitní zamykání. Pro komunikaci s klientskými zásuvkami se používá jednoduché zasílání zpráv TCP / IP (kompatibilní s telnetem), z nichž každá je označena Virtuální realita reprezentační systém.
Jazyk podporuje slabé odkazy na objekty podle počtu a na vlastnosti a slovesa prostřednictvím řetězců. Existují vestavěné funkce pro načtení seznamů vlastností a sloves, která umožňují jazykové běhové prostředí odraz. Server také obsahuje podporu pro porovnávání zástupných sloves, takže stejný kód lze snadno použít ke zpracování více příkazů s podobnými názvy a funkcemi.
Dostupné pořadí typy v MOO jsou seznamy a řetězce. Oba podporují náhodný přístup, stejně jako operace hlavy a ocasu podobné těm, které jsou k dispozici v Lisp. Všechny operace se seznamy a řetězci jsou nedestruktivní a všechny datové typy bez objektů jsou neměnné. Integrované funkce a knihovny umožňují používat seznamy také jako asociativní pole a uspořádané a neuspořádané sady.
Syntax
Kontrolní struktury
MOO má velmi základní sadu řídicích struktur, přičemž for-in-list je jedinou „efektní“ funkcí.
pokud ... jinak
-li (<expr>) <prohlášení>;elseif (<expr>) <prohlášení>;jiný <prohlášení>;endif
pro
pro <proměnná> v [<číslo>..<číslo>] <prohlášení>;konec
pro <proměnná> v (<hodnota seznamu>) <prohlášení>;konec
zatímco
zatímco (<výraz>) <prohlášení>;nekonečně
zkuste ... kromě
Snaž se <prohlášení>;až na <proměnná> (<chybový kód>) <prohlášení>;endtry
Ukázkové programy
Klasika Program Hello World lze napsat v MOO jako:
@program ahoj:běhhráč:sdělit(„Ahoj do světa MOO!“);.
Zajímavější příklad:
@programová hračka:vítr -li (tento.umístění == hráč) -li (tento.rána < tento.maximum) tento.rána = tento.rána + 2; hráč:sdělit(„Skončíš“, tento.název,"."); hráč.umístění:oznámit(hráč.název, "končí", tento.název,"."); -li (tento.rána >= tento.maximum) hráč:sdělit(„Knoflík se při navíjení zastaví.“); endif jiný hráč:sdělit(„,tento.název,„je již plně zraněný.“); endif jiný hráč:sdělit(„Musíte držet“, tento.název,"."); endif .
Viz také
- BUČENÍ (herní systém)
- LPC (programovací jazyk)
- Pike (programovací jazyk)
- Skriptovací jazyk lípy (LSL)
Reference
Další čtení
- Stacy, Chris (1995). "14. Programování MOO". V Busey, Andrew (ed.). Tajemství mudlovských čarodějů. Publikace SAMS. 307–369. ISBN 0-672-30723-5.
- Curtis, Pavel (Květen 2004). „Programátorská příručka LambdaMOO“. Zdroje serveru MOO.
- „Cheat Sheet pro programování MOO“. moo programovací zdroje. 1999-01-10.
- „Neoficiální výukový program pro MOO“. moo programovací zdroje. 1994-01-10.