MOO programming language
|
The MOO programming language is a programming language used to support the MOO system. It is a dynamically typed prototype based object oriented system, with syntax derived from the Algol programming language.
The language has explicit exception handling control flow, as well as traditional looping constructs.
A verb and property hierarchy provides default values to prototype objects, with over-riding values 'lower' in the hierarchy.
Programs are byte-code compiled, with implicit decompilation when editing, thus providing a canonical form of programs.
MOO programs are orthogonally persistent through periodic checkpoints. Objects are identified by a unique integer identifier. Unused program data is eliminated through automatic garbage collection (implemented by reference counting). However, MOO objects themselves are not garbage collected and are manually deleted by their owners or superusers (aka wizards) through a process called 'recycling.'
MOO is explicitly a multi-user system and programs (verbs) are contributed by any number of connected users. A distinction is made between the 'driver' (runtime) and 'core' (programs written in the MOO language.) The vast majority of the functionality of a running MOO is handled 'in-core.'
The runtime supports multi-tasking using a retribution based time slicing method. Verbs run with exclusive access to the database, so no explicit locking is necessary to maintain synchronization.
TCP/IP messaging (telnet compatible) is used to communicate with client sockets, each of which is identified with a 'player' in the Virtual reality representation system.