
Definition: An object is any unit capable of sending and receiving messages.
* An object has also properties. Exactly which properties it has is determined by the type of the object. An object can be a button, a text field, a card, etc.
Definition: Although the LiveCard engine is capable of sending and receiving messages, we will not include it in our definition of objects. Instead we will consider it a special kind of object called the system.
* Although Dan Winkler considered the system (aka the engine) to be an object, I think we should exclude it. One reason is that the system is the most important object defining the language itself, and the other reason is that we can't edit or see its handlers, as we can with all other objects. So it is fundamentally different from all the other normal "objects".
Definition: A message is an instruction that can be sent from one object to another.
Definition: A system message is message that LC engine (system) sends to some object. A command (aka command message) is a message that an object sends to the system.
* Dan Winkler reserved the word command for a message sent to the system. I have seen that many people call the message handlers (see below) commands. That is confusing and I think we should try to avoid it. But I'm not dogmatic about it and willing to listen to any reasonable arguments.
Definition: A system function is message an object can sends to the system and get a return value back.
Definition: A script is collection of handlers associated with an object.
Definition: A handler is named collection of statements. When the objects receives a message that corresponds to the name of the handler, it executes the statements within the handler. There are two types of handlers, function handlers and message handlers. Function handlers return a value, but message handlers do not. (In LiveCode there are actually four type of handlers, getProp handlers and setProp handlers for handling custom properties.)
* It is the message handlers that are fundamental. Function handlers are handlers that are in service of the message handlers. The reason is that system sends messages to message handlers, but it never sends messages to function handlers.