суббота, 1 мая 2010 г.

Is there meaning in computer?

Yes, of course, there is meaning in application and data. Otherwise, how could we use them? But how do you understand what data means? How do you understand how an application works? It is manuals, user, programming and other interfaces, examples, lessons that help us to decipher meaning in computer. And the more complex application is, the less chances you would understand it without a description in natural language or other supportives. It is unlikely you would understand all application functions without consulting with manual. It requires a lot of efforts and time, even with manual. What we are not always could afford. Learning curve could be steep. And to diminish volume of meaning, required to learn, sometimes applications artificially restrict access to functions and do not reveal all options.

Information inside computer is enciphered to be deciphered later. Usually, some interface is used to expose meaning to humans. At first, raw numeric communication was used (so, deciphering occurred in human mind). Then, it was replaced with a console interface, which exposes meaning as text, images, and other raw information (which is encoded in form more or less comprehensible for human mind). But console interface is controlled by mnemonic abbreviations (which, also, enciphered to be deciphered). Later, graphic interface replaced abbreviations with controls which exposed meaning in human-readable form. It seems like the problem is resolved. But it is not quite so. Because, we still should encode-decode meaning even with graphic interface: for example, (a) paths to meaning (like "MenuA->MenuB->Item1->Dialog1->Control34->OK") is to be deciphered, (b) how controls, actions, and data linked between each other is not clear and could be understood only by deciphering meaning with manual, etc.

Web makes information more meaningful by referring and integrating. But the idea of hypertext is somewhat restricted, because a hyperlink is unidirectional one-to-one reference from one resource to another. Whereas real world reference is bidirectional many-to-many ones, for example, any word of natural language implies a reference to something (one or many things) but also a reference to the word from other meaning. Another restriction is general for computer world: we operate with raw information (text, images, etc), not with meaning. To cope with these shortcomings, a lot of buzzword things invented: portals, search engines, html keywords, tags, collaboration sites, answer sites, etc. But they all are restricted too, at least, because they again produce raw information not meaning.

At last, there is Semantic Web, which intended to be a medium for intelligent agents which could gather information for us. Simply put, it proposes flat format for all data, which should make any information meaningful (at least for such agents). Thus, if plain Web operates with (hyper)text, Semantic Web mostly operates with subject-predicate-object triple. It is more meaningful (in some sense) but if everything could and should be reduced to such triple? And the main question: how to force people to use these triples? Finally, Semantic Web specification states that "Much of this meaning will be inaccessible to machine processing and is mentioned here only to emphasize that the formal semantics described in this document is not intended to provide a full analysis of 'meaning' in this broad sense; that would be a large research topic." [RDF Semantics, Patrick Hayes, Editor, W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-rdf-mt-20040210]

Is (explicit) meaning needed in computer at all? Is it normal, applications in many aspects are more meaningful for developers, but not for users? It is not fault of users; it only proves that a part of meaning is lost when delivered to them. And application developing is one of the major sources of missed meaning. While application designed and written, a part of meaning inevitably is dropped intentionally or just lost, a part of meaning is never occurs in computer (just because we even do not intend to), a part of meaning is just implied and not provided explicitly. Namely therefore customers, managers, designers, developers, and users have own (often quite different) vision of an application. Of course, any abstraction always drops some meaning. But should we lose it in computer? Especially, considering computer provides much more convenient ways for knowledge representation.

Hypertext showed us how information could be conveniently linked (how it is already linked in our mind). But we still could barely integrate and reuse such information (though do this every day in real life). Application integration and data reuse mostly available for developers not users namely because meaning is not fully exposed. Developers see semantic linking between applications in the form of conventions, protocols, and programming interfaces, whereas users have almost nothing, except of descriptions which attach them somehow to applications. Copy-paste is not the answer, but nowadays often it is the only way of the integration and reuse.

Applications show us how information could be ordered. Unfortunately, applications could not cover everything. Usually, they are created only where it is expedient (commercially or in terms of time). But any information likes order, otherwise we meet chaos (or "hell", like dll one). Is it possible to make any information ordered? Is it possible to force people to make any information ordered?

There is meaning in computer. But, today, we encounter multiple problems concerning it. Today, meaning is enciphered to be deciphered. Today, meaning is implicit and often kept inside system boundaries (unintentionally or because commercial reasons). Today, computer is meaningfully "autistic". Today, we deal with raw data not meaning. Namely therefore, today search by words is similar as we would try to understand a person by atoms of body. Namely therefore, searching is needed at all. What's the next? How to make information more meaningful? The answer is semantization of computer world which manifests in the following principles:

* Meaning must be always explicit and self-explanatory.
* Meaning must be consistent in all applications, system, protocols and languages.
* Meaning must be available in such ways, so people will be spurred to make information meaningful and consistent.
* You should not search information, information should search you. Information should integrate gracefully.
* Information should be available irrespective of container (file, format, zip, server, site).
* You should be able to reorganize information according with your understanding (not as it is already organized)
* Information should be able to update itself (even if it is detached of container).
* Application should be guided by goals (not only instructions). Options and parameters should be transparent.
* Complex searches should give not 50 millions page but one word where possible (like "countries to the north of USA")

To understand better how meaning would influence our communication with computer, we propose the example of how such communication could change. Imagine you plan vacations with friends. For that you should (any resemblance to reality is purely coincidental):

* Pick up your destination(s), thinking in your context (of your preferences)
- how much money you could spend (it could be reserved by budget of your financial software);
- your previous vacations to compare with and avoid the same destinations (which is kept somewhere locally);
- what activities do you prefer (it could be available as a part of your profile).
* Gather the content about destination(s)
- any information should automatically fit your context (for example, information about specific landmark stick automatically to your interests;
- you could easily relink information as you want (for example, you liked description from one site and the picture from another);
- some events (festivities, parades) could be arranged automatically to your schedule.
* Share and discuss it with friends
- contact friends, irrelevantly of the channel (email, IM, voIP): if not available in IM, then communicate with email;
- share information, irrelevantly where it is stored (at your computer, server, database) and how created (by application or commented by you).
* Plan a route and reserve tickets, according with gathered information
- handle the route, according with chosen points of interest;
- schedule should be provided automatically, according with your preferences and context.
- reserve hotels, according with the route;
- you can pick up hotels into own list to check, which availability will be updated automatically.

These tasks are done today manually; we will state what is missing to do them more or less automatically. But we start not from computers. But from meaning itself, because, in fact, there is even no clear understanding what meaning is.


The final goal of any theory of meaning is a set of primitives which meaning based on. All or almost all current definitions of meaning refer to natural language. All or almost all current semantic theories use language primitives like subject, predicate, object, relation, place, time, context, fact, action, actor, condition, tool, goal, quality, recipient, noun, verb, etc. Evidently, language can express meaning. But is language enough? Are these conceptions primitives or not? Could be quality or verb deducted from something else? Why namely these primitives but not others?

Is there meaning before language? Animals and human beings understand meaning of Nature without language (for example, seeing oncoming storm). Scientists could extract meaning of fossils and celestial objects which are far away in space and time. Is there meaning outside of conscience? In certain way, yes. For example, small stone and asteroid have different meaning for Earth. But, of course, Earth could not realize this meaning, though it definitely receives it and reacts to it with the help of Nature laws. Meaning is in interactions of things, which depends on where, when, and how they affect each other, etc. The bottom line: everything has meaning.

The world is full of meaning, and the privilege of intellect to refer to it. Any interaction of physical world involves reduced meaning of things, thus, planets interacts with each other, but not each atom of them. Any interaction of physical world potentially can leave subjective imprints on interacted things. Similarly, intellect perceives reduced and subjective meaning. Moreover, because intellect is more or less isolated from outside world, own meaning of intellect develops by own rules. This results in creation of own representation of outside world (which has to be constantly synchronized with reality). But also creation of inner "worlds" which are detached from reality (and which has to be constantly synchronized with similar "worlds" of other intellects).

If everything has meaning, then we must understand what the world is. Roughly, it is space-time-matter-laws:

* Space (where?).
* Time (when?).
* Matter (what?) with properties (which?).
* Changes (what does?) and manner of changing (how?) which are guided by energy and laws of Nature.

Matter or laws could not be concluded from space-time and have different meaning, therefore we should consider them separately (though, it may turn out they are parts of the same phenomena). On the other hand, neither space nor time nor matter nor laws could not be considered independently because it is difficult to separate them in reality (though, it is possible in intellect which only refers to them). Therefore, we talk about dualisms, the idea of the union of indivisible contraries, which manifests in the world which surrounds us. What dualisms we are talking about?

* Static-dynamic. Space-time dualism (also, for example, wave-particle dualism and Heisenberg uncertainty principle) is inherent to anything in the world. There are two extremities: absolute zero and chaos (plasma). But most of things exist somewhere in between. Fire (or lightning) is always dynamic but we consider fire as "static", and think about it as dynamic only if it starts to spread. But we can think about a car as a function of driving, or about a spoon as a function of eating, etc. Even "function" word is a noun (static) formally, though always dynamic by meaning.
* Concrete-abstract. Abstraction by itself is possible only because the Nature is ordered with laws (therefore a part of information could be dropped to be restored lately). Things interact with other things abstractly, because (a) not all properties participate in interactions, (b) interaction occurs as a sum of forces (and this sum is an abstraction too). Concrete-abstract dualism could manifest as quantity-quality dualism (phases of matter and matter elements like hydrogen, oxygen), or as complete-consistent dualism (which means you could not restore consistent state of the source if abstraction occurred). The representation of a bird which you see is "concrete" for you, but also it is abstract, because some details are lost by vision. But also you add some "abstract" details for it which is not seen but which you are aware of (for example, you expect that the bird can sing).
* Absolute-relative. A frame of reference gives us a notion on absolute-relative dualism. As a special case, we can also consider objective-subjective dualism which occurs wherever isolation takes place (in closed system).
* Probable-deterministic. The world outside of us is both deterministic and probable. We could not say if something is static or dynamic (which is defined by many circumstances). To the same degree, we could not say if something is determined or probable. The less interactions occur, the more determinism is.

The Nature gives intellect a notion on these dualisms. But inside intellect dualisms are impossible, mainly because restricted intellect capabilities. Any knowledge inside intellect is only reference to external meaning. And this reference could not be fully dynamic (and change synchronously with outside dynamics), it could not be fully concrete (and have as much details as outside meaning has), it could not be fully objective (and be outside of intellect), it could not be fully probable (because it just does not make sense for intellect then). To understand meaning (and make information consistent) intellect need to fix things (at least, some of them), drop a part of information; adjust for subjective perception, and to make things deterministic. The process could be reversed, if intellect considers information as outdated, lacking details, too subjective, or determinism contradicts real outcomes.

As you may see, meaning inside intellect (this is meaning as we usually imply) has own features. Therefore, along with meaning of the outside world, we should consider how meaning is represented inside intellect. Intellect has inherent capabilities of dealing with meaning:
* Perceiving allows us to orient in space-time-matter (mostly, with vision) and to discern objects. We know from the birth how to treat space or matter, or how to discern objects. Vision gives us more information (at least, by volume) than any other source of meaning. And, usually, information is understood quicker if represented visually.
* Emotions and instincts are feedback for outside world input. Because they are innate, they could not be based on other elements of meaning. Though, they have some analogue in the outside world: fear makes us to avoid an object, satisfaction is a stopper for some action, sadness is inability to act in some situation, etc. To be efficient, emotions are associated inside intellect with meaning input (references to objects, actions, etc).
* Unconscious exists because cognition has evident shortcomings. Cognition cannot follow through all details of meaning. Therefore, unconscious purposes to manage details which were unfocused through cognition, or forgotten, or implied, or missed by some reason.
* Abstract thinking uses abstraction as the instrument of filtering (reducing, separating) meaning inside intellect. Comparing with perceiving and emotions, it deals not only with representations, which refer to real world meaning, but also with representations (or relations), which partially or fully detached from reality.

Intellect barely can influence perceiving, emotions, instincts and unconscious, which live by own rules, therefore abstraction is the main tool of intellect. The result of abstraction is the form (or topic, abstract) for the meaning content. The missing part of content is context. For example, a representation of apple is the topic for real apple, whereas millions atoms of this apple is the context. Abstraction done in several ways (each is stipulated by some traits of reality):

* Reducing. Usually it unfolds in several stages. For instance, a real apple can be represented as a picture (representation) in vision, and as "apple" word in mind. After some time initial representation can fade away and transform in very symbolic image. Finally, forgetting can totally deform initial representation, but also the representation can transform into different relations: (a) food, (b) discovery tool, (c) crop, (d) sling projectile. As you can see reducing is similar to vision, which can focus on only one aspect of meaning. Such focusing is arbitrary in vision (intellect cannot choose which atoms of apple participate in the representation of it), but is more selective in thinking (intellect can choose traits which are more important). Reducing is possible only because there is an order in initial meaning (and therefore, we could restore original meaning by the filtered result).
* Separating of aspects. It occurs because the world which we live in has different, seemingly independent (though they could be a part of some universal law or just properties of space) aspects: spatial, gravitation, electromagnetic forces, etc. Because of this, matter has different primitive properties like length, weight, charge, etc, and derivative ones like texture which is a combination of spatial and matter properties. Because such properties appear independent, we could consider them separately. Therefore, we could deal with different representations of the world: one of gravitational forces, one of textures, or combination of them, etc.
* Separation of objects. Reality fabric has spots of different meaning, and things interact differently with such spots. Separation of objects occurs in reality, when a body interacts at first with more meaningful opponent (e.g. which has the largest gravitational force). Similarly, intellect separate objects by meaning.
* Generalization. It is the side effect of reducing and separating: meaning has less and less details, and, finally, two things are represented by common meaning. Result of generalization is different types of things, which are somewhat arbitrary (to the same degree as abstraction is arbitrary too). Though, there is some exclusions of natural generalization like elements of matter (oxygen, helium, etc). Definition of bird as "creature, which has feather, wings, and which can fly" is arbitrary, therefore we could consider it as a mistake beforehand. Though in reality we do not use such definitions, for example, when a bird is wounded (and have no wings or feather) we successfully recognize it (by some visual pattern). Of course, any definition could be made precise to include all exceptions, but then it finally will include too many details and become useless.
* Substituting and interrogation. Another side effect of reducing and separating: a part of meaning which is dropped (context) becomes implied or unknown. Intellect tries to restore it, therefore, implied meaning usually replaced by similar meaning of objects of the same aspect; whereas unknown meaning is interrogated to be restored.
* Identifying. There is almost no problem of identifying with representations of real world, because they are easily restored by intellect (e.g. we identify an apple as an apple by inborn visual comparison). But identifying is needed when we deal with abstract things or need to communicate meaning to another intellect.

Also, it is worthy to mention other elements of abstraction:

* Focus (attention): a direction of abstraction.
* To be similar: if abstractions of two meanings coincide
* To be equal: if identifiers coincide
* Analysis: to link meaning to already existing abstractions
* Synthesis: to generate new abstractions

Result of abstractions is relations, which are anything which could not be representation otherwise. But difference between representation (or sensory representation) and relation is quite subtle and depends on capability of human mind. For example, visible part of electromagnetic waves participate in representations but invisible part could be only "relation". Because abstraction is applied to abstraction, relations become more and more abstract (and more and more detached from reality), and finally end up in high-level relations, which include (but are not restricted with):

* Relative space (then, up, down).
* Relative time (soon, never, after).
* Similarity/uniting/equality/difference (be, have, own, consist, depend, only, just).
* Degree and measure/order/importance (first, mainly), intensivity (even, actually).
* Time relations/condition/result/future/hypothetical past/emotional future (will, wish)/rational future (purpose, plans, expectations)
* Possibility (sure, definitely, maybe)/obligatory.
* Metaphor.
* Validity, veracity (really, supposedly).
* Pure abstractions (mathematics, ideologies, natural and artificial languages, programming, dreams, theater, music, etc).
* Metadata (generalized structure of objects).
* Types (space or set of possible values).
* Unknown.

Basing on simple relations as well as other meaning primitives (objects, actions, etc), intellect builds up more and more complex relations. Finally, the most complex relations, which usually covers one aspect of reality or abstraction, form a separate abstract "world" (space-time-matter-laws), which typically consists of:

* Abstract space, which is a set of n-dimensional points of possible states.
* Abstract time, which has more possible kinds of times (past, future, conditional, hypothetical, etc) and is deterministic and discrete (represented as cause-result sequences).
* Abstract statics (abstract matter and properties), which is represented by abstract objects with properties inherent to this abstract space
* Abstract dynamics (abstract changes and laws), which are represented by allowable changes of objects of this abstract space.
* Relations between other items.

For example, arithmetic consists of abstract space of numbers, in which available basic operations. Each equation involves numbers as instantiated objects and evolves in abstract time. For example, 4+5=9 corresponds to adding (+) followed by producing result of adding (=). Other examples of such spaces: (a) a subjective mind, (b) a piece of art, (c) a type, (d) a model of something, etc.

Summarizing what we already stated about meaning, we should return to the first question on this topic: what primitives meaning is based on? Where we should start to build up meaning? Quarks, atoms? More natural for us to start at macroscopic level of abstractions. At this level, matter manifests as objects. Child learned at first to deal with objects, and only later they are introduced to other elements of the outside world like quarks and atoms (because we cannot perceive them directly, and they are "abstract" for us). Perception of space and time is inborn too, but their principles are revealed later (because they abstract too). In general, our inborn perception is enough for surviving but abstraction is required to not just perceive but also understand the world outside and to survive more efficiently. So, basics of meaning inside intellect (opposite to real meaning which is equivalent to real world itself) include:

* Real space-time-matter-laws are the base of many meaning primitives.
- space (where?)
- time (when?)
- matter (what objects? which?)
- matter changes (what object does? how?)
* Anything from real world is dual which significantly influence how intellect treats meaning.
* Perception, emotions, unconscious form a set of subjective (relating to intellect) primitives of meaning.
* Abstraction and its traits build up one more set of primitives (including some base relations) which base on two main primitives:
- abstraction (reference) to meaning;
- context (dropped, implicit, and unknown meaning).
* Abstract spaces form specific (for some aspect) clusters of relations.

Examples (based on fictional movie "Semanticity"):

* "Semanticity" movie is the object, which mainly consists of actions. Also, it includes multiple relations between characters. In general, movie represents a separate abstract space (though movie shooting is a part of real world). This space has own space-time of plot, own objects (characters) and dynamics (scenes).
* When we concern about identity we refer to the movie as "Semanticity", otherwise we could refer to it as just "movie" (for example, when asked where you've been this Saturday), or "movie from that commercial", or "the last movie of George Meanie", etc. Each reference indicates what was abstracted and what is dropped in the context. Genre accentuate on emotional abstraction of a movie: drama on sadness or realism (which for many is suffering and grief), fiction on either too exaggerated future happiness or too exaggerated future calamity, etc. Plot accentuate on space or/and time or/and statics or/and dynamics or/and relation abstraction (or their combination). Realize how we usually abstract movie in plot: (a) story occurs in several cities of France, (b) during several months, (c) with two people, (d) who seek for meaning. Other abstractions of movie could concern real space: (a) where movie was shot, (b) nationality of movie team.
* Each action could have multi-layered meaning. Realize, a character in the movie said he goes home. What this phrase could mean? (a) mere statement about moving in space from the current point toward home, (b) as spectators we know that this is moving inside abstract space of the movie, though really, movement occurred in the place of movie shooting, (c) it could mean emotions, implying the previous context, for example, if a character goes home after difficult day or after some blissful moment, (d) if we know that it is impossible to go home for this character, then it could be a sad joke, (e) if this character does not know it is impossible then it is his mistake, (f) if this character knows he won't go home but will use it for own advantage, then it is a lie. These examples accentuate not just on the fact some words could have different meaning depending on a context. They rather show that meaning could be (a) direct, (b) referred by other meaning, (c) refer to other meaning. Such sequences of references could be quite long. For example, you can say to your friend, that you agree with her opinion, that a character said he goes home so sadly because the actor at this time was impressed by divorce. As you can see we have several frames of references: (a) your opinion, (b) friend opinion, (b) movie, (c) actor life.

Real world meaning usually manifests in space-time details, objects, actions, and relations between them. Abstract meaning (like movie one in our example) is abstract space of movie (including objects, actions, and relations of it). Such space could be abstracted in multiple forms like plot, genre, etc. These forms could contradict each other, because when abstracted they lose some meaning. Because of similar losses, the problem of meaning identification is nonetheless important, along with the definition of meaning itself. This problem is worthy to be a separate topic. Therefore, we talk about natural language.


Without doubt, natural language is the best tool for referring to meaning though not perfect one. Universally, nothing could compare with natural language. Language is evolved for thousands (if not millions) years. What could compare with that? But, at the same time, because language is abstraction it has certain features (which could be considered as both shortcomings and benefits):

* Language is inefficient in expressing meaning. For example, images express meaning easier than language, namely therefore comics and movies win over books in some aspects. But almost none comics or movie could live without language. Silent movie inevitably lose a part of meaning. There are other tools for expressing meaning more efficiently in some area: mathematics, traffic lights, graphic user interface, etc. But in all of these cases we cannot get rid of natural language completely.
* Language is not precise. What is lightning better to express with picture. What is thunder better to express with sound. What is lightning and thunder hardly could be explained with natural language, and to describe similar things we use analogies "like thousand lightings", "like thunder", etc. Language use words which are abstract by themselves but also used to identify some abstraction. Therefore, in many cases, many word explanations are required to make it more precise.
* Language is redundant and not sufficient at the same time. Some thick books could be written by one paragraph. But an author prefers to write a lengthy book by two reasons. Partly, because a book to be read by different people, which have different understanding (which originates in abstraction and ambiguity of natural language). Partly, because language by itself is lengthy in describing some relations.
* Language could easily be ambivalent. People inclined to make language statements concise, to throw away information which seems to them irrelevant or already known. Moreover, many words have several meanings. Partly, because historical reasons. Partly, because any definition of non-abstract conception is a mistake by default (because a part of meaning was inevitably dropped). Partly, because of economy (for example, "apple is red" if brief of "apple color is red" though even more full form should be "apple color is red color"). Many see language ambiguity as an obstacle in understanding language by computer. But, in fact, it is language which is ambiguous and ambivalent, not meaning behind language (of course, except of the cases when we deal with ambivalent meaning by itself, which is possible as a result of abstraction). Usually, it is a fault of a language bringer which could not express meaning precisely, unambiguously, and adequately. Human beings understand each other, even if talking in different languages, only because meaning is not ambiguous. In other words, language ambiguities origin in usage of different identifiers for similar meaning, but understanding is possible when similarity of this meaning is somehow established.
* Language forms do not always correspond to meaning primitives or create additional ambiguity. Consider different language forms:
- Nouns roughly correspond to static phenomena (though it is not quite true, eg fire, storm).
- Verbs roughly correspond to dynamics (though "be", "have", modal verbs does not always imply some action, like in "Sun is a star").
- Adjectives roughly correspond to properties of nouns.
- Adverbs roughly correspond to a manner of verbs.
- Pronouns expresses a reference to statics and dynamics (if refers to a gerund, for example).
- Numerals express relation of numbering. Each number is a relation.
- Usual order is "subject-verb-object" (or SOV, OVS, etc) which roughly corresponds to some evolving statics-dynamics dualism. But by this order we dictated to have both statics and dynamics, though only one of it could prevail (for example, "there is a bird" or "it's raining"). Language itself is well aware of it, therefore, there is participle, gerund, etc, which allows us to use the same word (with language modifiers) as noun + verb or verb + adjective. For example, in "The rising sun was hidden by the clouds", we use "rising" to have two identifiers of dynamic meaning in one sentence. Nouns in sentence (opposite to verbs) could be used several times because they could be either subject or object or adverbial modifier.
- Transitive verbs are dictated to have object because, in this case, verb describes interaction between subject and object. But, in fact, each verb (not only transitive) describes interaction between, at least, two things. Omitted objects are just implied.
- Many words are used in both concrete and abstract sense, and border between them is easily trespassed. Any word is abstraction itself; therefore, it could be concrete sometimes only here and now. "Bird" which I've seen is "concrete" (I've seen one's details) for me, but "abstract" for whom has not seen it. Many words has similar meaning, which differs by various abstraction. For example, organic has similar values relating to (a1) living organisms, (a2) the use of feed or fertilizer of plant or animal origin, (b1) carbon compounds (b2) branch of chemistry concerned with the carbon compounds. As you can see, meanings linked between each other with different abstract relations.
- "Be" expresses both identity (I am John Doe), and similarity (apple is red). Actually, identity itself is complete (i.e. concrete) similarity (and vice versa, similarity is abstract identity). "Seeing is perceiving" links two verbs with relation of identity (or rather inclusion, because perceiving includes not only seeing), "seeing is believing" is relation of metaphor which means some similarity of two actions.
- "Have" means either concrete inclusion (have a hand) or abstract belonging (have a friend).
- Modal verbs and moods expresses relations like possibility (can), probability (may), obligation (must), conditional (would).
- Punctuation (spaces, commas, etc) is used to explicitly separate different language entities, without that their recognition become difficult. Also, separators are used for lists, paragraphs, etc.
- Sentences have four basic types: declarative, imperative, referring, and interrogative. This corresponds to statics, dynamics, abstraction, and context.
- Metaphors usually are a replacement of abstract meaning with more concrete meaning (to which human mind reacts better). For example, "the lawyer is a shark" means that the lawyer is similar (by some traits) to a shark. "my lawyer is tough" expresses similar but is more abstract.
* Language usually has linear, continuous form. Whereas meaning consists of elements which linked arbitrarily in n-dimensional space.

Let's analyze a simple text, to understand how meaning is extracted of natural language:


What we have here?
1. Objects: a man, a wolf, a goat, a cabbage.
2. Place object: a river.
3. Object: a small rowing-boat ("small" is used to underline that only one thing could be taken).

1. A river has two banks.
2. Crossing river is moving from one bank to another.
3. A boat used for crossing river, by moving someone or something to it and after from it.
4. "Take" means a man should move wolf, goat, and cabbage by himself.
5. "Thing" means someone or something.
6. "At a time" means one crossing.
7. "Left" means someone or something did some action, and move to another place, whereas something is still here.
8. "Left alone" means "left by a man at one of banks".
9. "Eat" means destruction of someone or something.
10. The order of text coincides with the order of time.
Etc (a list of implied could be extended which depends on the purpose of interpretation)

The entire meaning consists of:
1. Place: two banks and river.
2. Time: a period between being at bank 1 and being at bank 2 with the whole team.
3. Objects: a man, a wolf, a goat, a cabbage, a boat.
4. Actions: get across a river.
5. Relations between them.
6. Unknown: how to get across the river with two animals and the cabbage.

The last sentence is interrogative, we should find unknown, which is the part of the context of this problem ("how?" means we should find missing set of actions, which links two states: a man with the team at bank 1 and a man with the team at bank 2). Of course, the task also implies we would use available location, time, actions, etc. The solution can be straightforward: to make up a sequence of "get across a river" actions with different things and reject failed variants (because of eating).

In fact, this problem operates with a river, a wolf, a cabbage only because it is simpler for human to represent them visually, and because these representations already have relations which we should not describe explicitly. For example, if we would state such problem abstractly and will have just names R (river), W (wolf), C(cabbage) instead, then we should define all relations between them explicitly.

All languages created by humans therefore are artificial and abstract. They has no meaning inside, but only identify meaning in the outside reality and other abstract "realities" (shall we say "fictity"?). But the problem is even more entangled when we understand that language itself is one of such abstract "realities", therefore, like it or not, it influence itself and sometimes distort meaning more. Therefore, the world is abounding with books, articles, and papers which are the next to meaninglessness. Does clear understanding of meaning improve this situation? Hopefully, eventually.


Computers are a part of our lives, we are a part of their lives, we live by their laws, sometimes they even abduct us. We use computer specific terms and approaches. Do you notice that sometimes you express your goals in computer terms (like "launch app1, press buttonA, and choose menuB")? It is natural, that acting in computer environment involves the language specific namely for computers. It is more convenient and efficient. But, unluckily, side effect is we lose a part of real world meaning. On the other hand, internal meaning of application, system, site, format, protocol, language is usually consistent only within boundaries of them, without explicit mapping with outside meaning. Meaning is just scattered throughout computer, which forces us to translate the same meaning into different application "reality" and just wastes out time.

On the other hand, computer has perfect abilities for representing meaning. Computer is the only tool which can represent meaning in all forms (text, sound, video, etc) and, what is more important, to link them explicitly. Unfortunately, computer still does not understand natural language. However, it is difficult to understand why computer world is completely unprepared for the moment, when natural language will be understood. There is some applications for voice recognition and voice control, but neither applications nor data is just not quite ready to be guided by natural language or meaning. For example, console interface usually requires knowledge of bizarre abbreviations (though, you should understand that such approach works because abbreviations are quicker to type). Graphic interface usually requires only point-and-click interaction (which is quite fast too). But, similar to comics and silent movies, any computer interface finally cannot live without natural language. Of course, letters are icons too. But these icons combined can express much more complex relations, than GUI icons can.

Computer world is not ready live in meaning. Computer cannot abstract. Computer can treat information "as is", unless abstracting is not somehow foreseen. Computer cannot associate information (that is, to find some similar traits). Computer cannot aggregate information (that is, to generalize by some criteria). Computer cannot populate information (that is, to conclude and deduct on it). All this is impossible without meaning. But what computer can? Let's consider different computer entities and their traits and what they are from the point of view of meaning:

* Operating system is what its name suggests. We are stuck in imperative modus vivendi. Processes, commands, and threads are more important than information and meaning.
* File is a data container.
- Has a topic (abstraction) as a file name, and properties/attributes (extension/type is the special property which is formally a part of a name, and date/time, etc). File names are often misused and are just encoded (like "rep_9_4.txt") or not meaningful at all (like "aaa.jpg"). Sometimes they just duplicate some internal property which is known for processing application. The same concerns directories: theoretically, path should be meaningful for an user, but often it is not. Moreover, when number of needed files/directories exceeds reasonable quantity, they become just unmanageable (that is, meaningless). Think "file hell".
- In terms of OS, a file is an atomic unit of information. File borders are not flexible and sometimes misused. We have almost no ability to refer or reuse a part of file (only with copy-paste or linking and embedding, but both ways have shortcomings). Accompanying problem: if a part of file is corrupted, you lose the whole information.
- Application is needed to interpret the content of it. Therefore, content of a file is fully hidden without it.
* Application manages (creates, changes, deletes, exposes) and imitates meaning. Finally, could be a separate abstract "world".
- They do only what they instructed to do. Therefore they are deterministic only, not flexible, and could not treat unpredicted conditions or information.
* Web is a kind of global file system (plus domain system).
- HTML is only text representation which could link to another representation and could unite other meaning representations (pictures, sounds, video).
- Side-effect of uniting of everything is "content hell" when content is tightly coupled and entangled, or even is just tiny comparing with non-content (graphic ornament, advertisement, etc).
- Resource is an atomic unit of information/actions.
- Domain name is not always meaningful (though intends to be), it is just an identifier of IP address. Often misused, due to variety of word combinations.
* Search engines, portals, tags are destined to identify meaning through algorithm, rearrangement, or mark-up with words.
- They looks up words and dependencies between them. Fruitful only until the moment words and dependencies are meaningful by themselves, i.e. words correspond directly to meaning (objects, actions, etc). But fails when search includes relations or complex dependencies
- Portals provide one variant of knowledge hierarchy (whereas any meaning could be reduced to almost infinite abstractions).
- Tags and keywords are a sort of text abstraction but usually just misused (because do not consider meaning traits). For example, many try to include too general keywords or too many keywords which makes them meaningless.
* Semantic Web is a continuation of Web with intention of defining meaning.
- Uses a format which clearly relates to natural language (and has corresponding shortcomings of it). Restricts meaning with triple pattern. In fact, a triple is the best correspondence to reference where we have three components: referent, referee, and reference. But, the world has not only references, and there is more convenient (or shall we say, more abstract?) way to represent references, when they are united in some structure (like table, class), which express reference, and which have two places (fields, attributes) for referent and referee.
* Interface is a form or an entry point to meaning (which means, it defines topic/abstract for data and code).
- Almost all user interfaces (text, visual, programming) is understood only by human.
- We are destined to balance eternally between text and visual interfaces which have own advantages: visual one is easier for understanding and learning, good where capabilities of input/output are restricted (mobile devices); text one (which includes not only natural language but also other formal languages) is more precise and full; allows to express more complex structures (which requires more than 3+1 dimensions).
* Console interface provides identifiers to deal with meaning
- You need to memorize a lot of "identifier - meaning" associations to run some task.
* GUI provides visual elements of interface (which faster processed by human mind)
- Desktop provides only one entry point to a system, with "icon/menu/application hell" (everything is scattered and unfiltered).
- Makes "identifier - meaning" association visual, on the other hand, provides natural language identifiers, not abbreviations.
- Dependent of design capabilities of application creator.
- Comparing with console interface provides fewer possibilities for reuse, which is difficult with visual elements.
* API provides identifiers for reuse similarly to console interface but in more complex form.
- Operates with "identifier - meaning" associations through a syntax
* Programming is mostly transformation of meaning from one form to another. From natural language to models, then to programming code, then to machine code, then to interface, finally back to natural language.
- It is the attempt to make generalized and deterministic model (abstract space) of meaning.
- Deals with conventional meaning dualisms. The most known is "speed vs. size", which is created by abstraction too: the more meaning is abstracted, the more time is required to restore it. Therefore we have the choice: either to save as many details as possible or to spend as much time as possible to restore them.
- Different kind of programming languages (procedural, functional, logic, object-oriented) emphasize of different traits of meaning and includes abstractions which are considered sine qua non primitives, which we could use for building other abstractions.
- Design patterns and conventions describe abstractions which are not (or could not be) covered with programming languages.

From the point of view of meaning, there is following main shortcomings of meaning inside computer:

* It is represented in raw formats (text, images, videos).
* It is identified with computer-related identifiers (such as file names, URLs, etc).
* It is deterministic by design (chaos created later by volume and complexity).

What we should have to overcome them?

* The utmost goal is to have meaning in computer explicitly expressed. Different meaning entities (objects, actions, relations, etc) should be able explicitly marked up.
* Semantic space (independent of natural languages) should be established. It should include all separate meaning entities like objects, actions, relations, etc. This implies semantic global identifying system, which would uniquely refer to each distinct entity.
* Each computer entity (applications, systems, sites, networks, protocols, formats, data and programming languages, natural language dictionaries, personal contexts) should have own semantic space (with own specific identifiers) which may be translated to global ones. Computer entities should be implicit where possible.

What does it imply:

* Instead of hypertext which links resources, we need hypertext which links meaning (objects, actions, relations, etc) and which is abstracted (manually) or could be easily abstracted based on meaning mark-up.
* Instead of hypertext transfer protocol, we need semantic protocol, which would use both global and local semantic identifying system. This protocol should work not with domains and hosts, but with meaning (words, phrases, objects, actions, relations, etc). It also should operate with implicit hierarchy of semantic hosts. So, for example, a request should go to (1) an application, where a request is done, (2) then to a suite, which this application belongs to, (3) then to an operating system, (4) then to domain, which this operating system belongs to, (5) then to external semantic provider, etc.
* Instead of identifying meaning by file/URL/etc path/name (which should correspond to abstraction hierarchy) and fixed set of properties (like date/time/read-write), meaning should be available by itself. That is, the content should be explicit where possible, objects, properties, abstractions should be available independently of file/URL system (which should be mostly implicit except of the cases when explicit usage is needed).
* Instead of fixed boundaries of file/URL/database/etc, information should be available for reuse across those boundaries.
* Data formats/languages should not only use some relations to structure data, but all relations should be explicit and have to be translated from one format to another.
* Instead of the concept of an environment of one desktop (as a single entry-point) and multiple windows (as partial filters of meaning), we need a concept of multiple contexts which would filter meaning and excludes "file/icon/application hell" by restricting information (conventional desktop could be used as legacy context of computer internals).
* Semantic interface should combine advantages of visual and text interfaces. Graphic controls should be available as meaningful identifiers, to be able to reuse them. Text elements should be visual (icons, style) wherever possible. Text usually is represented linear, which is efficient to input information (because it is more convenient to type text consequently), but it is not efficient to represent meaning with a lot of links. Therefore, semantic interface should combine advantages of linear and "multidimensional" (in different variations) representations.
* Applications should provide semantics of themselves. That is, we should be able to see how objects, actions, and relations are linked between each other (not all ones but at least which are meaningful for an end-user), which properties objects have, and which parameters actions have, what is implied under controls, what goals could be solved by the application, how an error is linked with objects and actions (which would help to resolve it directly), etc, etc. This semantics could be provided with meaning hypertext, which could be extended by an user (which could add some goals/use-cases, or linkage which seems useful for him/her personally).
* Meaning should be availabe in both static and dynamic form. Static form is a snapshot of dynamic information, dynamic form generates static forms. For example, a document is an example of static form, an application is an example of dynamic form. Both forms should be implied and used simultaneously, so links between them should be explicit. In this case, we will be able to update static form, or receive the next snapshot, as well, we will be able to fix a representation of dynamic form.
* Meaning should be available in both concrete and abstract form. Examples of that is different types and metadata. But they are not enough, for example, when book has different level of abstractions: (a) the entire content of a book is abstracted to abridged content of chapters, (b) the abridged content of chapters is abstracted to abridged content of a book. Chapters is not a type or metadata of a book, there we use not generalization but reducing. And this abstraction is not less important that typification.
* Meaning should be available in both objective and subjective forms, which means it should be identified both globally and locally. Global identifying of everything is just impossible: people abstract things in very different ways.
* Meaning should be available in both deterministic and probable forms, or telling in other form: applications should be able to deal with exceptions (not as errors but as an alternative of already fixed order).
* Meaning should follow the entire process of application developing. Therefore, the same meaning elements should corresponds to some part of requirements, model, implementation, and interface.

Also, we can return to our example from introduction. As we can see all activities could be easily automated, on condition of semantic space is established, where meaning is explicit and can be automatically translated, therefore meaning could be shared between contexts/applications, information is automatically filtered and fit appropriate context.

The last question which remains is: would it work at all with the current machine architecture? Nowadays, computers oriented to processing of information, therefore multiprocessing (that is, processing by several units of work) responds quite well to contemporary challenges. However, it seems meaning processing needs rather omniprocessing (that is, processing in multiple points of interest). Omniprocessing required because meaning (when understood correctly) is more versatile than just data, and, therefore requires simultaneous activation of multiple elements (because meaning is not just one object but a complex of relations, which could be used only partially in the way, which could not be predicted beforehand). Or, take image recognition: intellect simultaneously deals with millions or thousands of signals arriving from outside at the same, and which replaced by another millions signals in the next second. Or, take language recognition: each word may activate hundreds of association, which should be processed simultaneously, and in the next moment the next hundreds of associations should be activated too. Such tasks requires not multiple powerful processors (as done in multiprocessing) but rather multiple less powerful cores, each with own area of responsibility.

As we may see, meaning could change both our represenations inside computer and about computer itself. Of course, it does not imply that everything done before is wrong. It is more appropriate to say that computer today is narrow-minded and too straightforward (though, of course, it is not a shortcoming only). And partly this is problem of general understanding of meaning, which is not strict yet, if clear at all. Hopefully, this article could change something in this direction. Hopefully, it would change ways we interact with computers and meaning. And these ways are too far from perfection today. Hopefully, it would hint that any virtual reality could not replace meaning. We can reiterate that visual representations could be processed faster by our mind, but barely they could express adequately all complex abstract relations. Well, theoretically, it is possibly, practically, there is thousands of specialized languages, which created namely for this purpose in narrow specialized area. So, are you seriously thinking we could replace them all? And even more interesting question is: do we need some special visual representation if any language already has ones? If even such virtual reality will be ever created, it just could not live without meaning, natural language, and thousands specialized languages.