javascript objects, linguistic relativity, and general semantics

There is a knife moving here… an intellectual scalpel so swift and so sharp you sometimes don’t see it moving. You get the illusion that all those parts are just there and are being named as they exist. But they can be named quite differently and organized quite differently depending on how the knife moves.
It is important to see this knife for what it is and not to be fooled into thinking that motorcycles or anything else are the way they are just because the knife happened to cut it up that way. It is important to concentrate on the knife itself.
Robert Pirsig — Zen and the Art of Motorcycle Maintenance
Whatever you might say the object “is”, well it is not.
Alfred Korzybski

General Semantics

In 1933, Alfred Korzybski published Science and Sanity, a hefty book that established an elaborate foundation for a field of thinking called general semantics. General semantics concerns itself with language and abstraction, along with a noble goal of providing sanity to the world at large.

Perhaps Alfred’s most succinct and influential advice was “The map is not the territory.” This was how he started a conversation about how the words we use are not the things to which those words refer. Our words are abstracted from our experience of objects, and our objects are abstracted from a deeper reality.

Alfred created a visual tool, which he called a Structural Differential, to help him communicate his ideas. In these pictures, the circles represent individualized objects abstracted from innumerable reality events above; the strings represent characteristics that are attended to; and the rectangles represent words, inferences, and words about words further along the chain of abstraction.

If we take something, anything… and enquire what it represents… we find that the ‘scientific object’ represents an ‘event’, a mad dance of ‘electrons’, which is different every instant, which never repeats itself, which is known to consist of extremely complex dynamic processes of a very fine structure, acted upon by, and reacting upon, the rest of the universe, inextricably connected with everything else and depending on everything else. If we enquire how many characteristics we should ascribe to such an event, the only possible answer is that we should ascribe an infinite number of characteristics, as it represents a process which never stops in one form or another; neither, to the best of our knowledge, does it repeat itself.

The free hanging strings indicate the most important characteristics left out, neglected, or forgotten in the abstracting.

The label stands for the name which we assigned to the object…. We can also consider the level of the first label as a descriptive level or statement. The label, the importance of which lies in its meaning to us, represents a still higher abstraction from the event, and usually, labels, also, a semantic reaction… The number of characteristics we ascribe by definition to the label is still smaller than the number of characteristics the object has. To the label ‘pencil’, we would ascribe, perhaps, its length, thickness, shape, color, hardness, etc. But we would mostly disregard the accidental characteristics, such as a scratch on its surface, or the kind of glue by which two wooden parts of the objective ‘pencil’ are held together…. We see that the object is not the event but an abstraction from it, and that the label is not the object nor the event, but a still further abstraction.
Alfred Korzybski — pp. 386–411

In javascript and other languages, we define objects or hashes:

myPet = {name: ‘Caterina’, color: ‘ashen’}

and classes or prototypes:

class Pet {
constructor(name, color) {
this.name = name;
this.color = color;
}
}
class Cat extends Pet {
constructor(name, color) {
super(name, color)
this.type = ‘cat’;
}
  meow() {
console.log(`${this.color} ${this.type} ${this.name} meows`);
}
}
var myPet = new Cat(‘Caterina’, ‘ashen’);
myPet.meow(); // ashen cat Caterina meows

The properties we choose are like the strings of abstraction in Alfred’s structural differential. Which characteristics do we deem essential to an Object? More importantly, which strings are left out, neglected, or forgotten?

In addition to making decisions about properties, we also make decisions about data types and validations. For example, when we scroll through Terms of Service documents (which might take 25 days to read fully), we’re greeted by an incontestable Boolean decision: Agree = true || false.

According to the 2010 United States Census, a Person has a fairly distinct race property:

And a majority of websites still define us as male or female, so much so that it’s big news when Facebook offered 50+ custom genders to choose from in 2014:

Clicking 0 or 1 to agree to a 10-minute legal document is problematic. As is grouping all Germans, Irish, English, Polish, French, and others into a top-of-the-list white majority. And defining some gender identities as Custom will covertly continue to reinforce the otherness of individuals who don’t identify with the expected standard validations of Male || Female.

These digital maps don’t match the analog territory.

Simplification is usually taken to mean a mathematical reduction to common denominators. But another form of simplification is more idiosyncratic: the reduction to the already known, the repression of irregularities…
This is the difference between simplifying cognition and a more habitual, comfortable cognition… Comfortable cognition, then, does not mean easy cognition so much as it means “situated” cognition.
Schleifer & Davis and Mergler — Culture and Cognition: The Boundaries of Literary and Scientific Inquiry

Linguistic Relativity

In 1939, Benjamin Lee Whorf wrote a reflective essay, The relation of habitual thought and behavior to language. A student of Edward Sapir, Benjamin later became known for the Whorf Sapir Hypothesis, a theory of “linguistic relativity” which basically argues that “Language affects thought and behavior.” Although this sounds simple enough, the hypothesis itself ruffled an endless number of feathers.

Language is not simply a reporting device for experience but a defining framework for it.
Benjamin Lee Whorf

Whorf wrote about his experience as a fire insurance inspector. He observed that workers handled fullgasoline drums with care, but were careless and smoked cigarettes around drums that were called empty. The used gasoline drums were not empty or null; they contained dangerous flammable vapors. “Physically the situation is hazardous, but the linguistic analysis according to regular analogy must employ the word ‘empty,’ which inevitably suggests lack of hazard.”

Does language affect behavior?

The Boolean like button, a virtual empathy counter, was introduced to the world on October 30, 2007 by FriendFeed, and implemented by Facebook on February 9, 2009. The psychological impact of chasing and accumulating likes is speculative at this time, as are sociological concerns of slactivism. But the like button is now a part of the language that affects thought and behavior of billions of people.

As programmers, what choices are we making to affect the language of our culture? In substantial ways, our decisions could ripple through the core identities of our civilization.

We cut nature up, organize it into concepts, and ascribe significances as we do, largely because we are parties to an agreement to organize it in this way — an agreement that holds through our speech community and is codified in the patterns of our language.
Benjamin Lee Whorf

Platonism and Process Philosophy

In 380 B.C., Plato wrote about Aristotelian Forms in his Dialogues. An object in reality is a cave shadow of a more universal, transcendental Form. A Form, like a class, has immutable categories of attributes and properties, and things we experience are instances of those Forms.

Around 500 B.C., Heraclitus was reportedly arguing instead that “We both step and do not step in the same rivers. We are and are not.” In 2000, Nicholas Rescher summarized the Heraclitean worldview: “…reality is not a constellation of things at all, but one of processes. The fundamental ‘stuff’ of the world is not material substance, but volatile flux, namely ‘fire’, and all things are versions thereof.”

In 1929, Alfred Whitehead extended the spirit of Heraclitus by writing Process and Reality, which laid out a modern framework for Process Philosophy. According to process philosophers, Objects only exist as “temporally overlapping occasions of experience” and are secondary to unique processes of change.

We diverge from Descartes by holding that what he has described as primary attributes of physical bodies, are really the forms of internal relationships between actual occasions. Such a change of thought is the shift from materialism to Organic Realism, as a basic idea of physical science.

Connectedness is of the essence of all things of all types. It is of the essence of types, that they be connected. Abstraction from connectedness involves the omission of an essential factor in the fact considered. No fact is merely itself. The penetration of literature and art at their height arises from our dumb sense that we have passed beyond mythology; namely, beyond the myth of isolation.
Alfred Whitehead

This distinction between the centrality of Being or Becoming, between Platonic Forms or Hegelian Changing, may sound similar to a common argument that takes place amongst dogmatic programmers: the superiority of either object-oriented programming or functional programming. The cornerstones of object-oriented programming (OOP) are objects; the cornerstones of functional programming (FP) are functions.

The core concepts of FP are continuously up for debate, but it seems that functions, as instruments of change, become more central to the conversation. Functions are passed around as parameters (callbacks), and ‘immutable’ data is passed, and often executed asynchronously, through a chain of functions until a new value is ready to be stored.

Does using OOP or FP affect our thoughts, behaviors, and final products? The quotable computer scientist, Edsger Dijkstra, seems to suggest so.

A most important, but also most elusive, aspect of any tool is its influence on the habits of those who train themselves in its use. If the tool is a programming language this influence is, whether we like it or not, an influence on our thinking habits.
Edsger Dijkstra

Extensional Devices and Semantic Awareness

There’s not much difference between learning how to code differently and learning how to think differently. In my opinion, the languages we learn will affect our thoughts.

Alfred Korzybski offered a handful of tools to combat Aristotelian patterns of thought, which he considered destructive to the civilization. He called these tools Extensional Devices, and perhaps we can recognize the value of some of these devices in our code.

Indexing
Indexing looks like this: “I Love1 my wife. I Love2 watching tv.” By indexing our abstractions, we become more aware of the differences between our generalizations.

aPetInstance.id; // 1
bPetInstance.id; // 2

Chain-Indexing
Roughly speaking, nouns can most closely be associated with objectifications and inaccurate abstractions of dynamic experiences. Chain-Indexing looks like this: “John1 was at the park last night. John2 went to a movie in the morning.” The purpose of indexing is to highlight that John1 and John2 are two different abstractions and have different associated qualities of being.

this.state.history = [state1, state2, state3, state4]

Et cetera
By using etc. frequently in our language, we acknowledge that there is always more to an abstraction: attribute strings we are missing, unique differences we are excluding, etc.

function doTheseThings(callback_arguments) {
callback_arguments.forEach(callback) {
callback()
};
};

Quotes
Alfred was known to use quotation marks to indicate enormous abstractions. “The United States of America”, “The Majority”, “Liberals”, “Animals”, etc… Because quotation marks encapsulate String data-types in javascript, we often use capitalization instead:

class Racist {
hatePeople() {
}
}

Using extensional devices consistently would be a little ridiculous and certainly alienate you at parties. We must continue to speak the amazing and flawed language we and others know. However, Alfred’s ultimate goal was to raise semantic awareness and implicit mindfulness about the abstractions in the language that we use.

Conclusion

In javascript, there is a reported confusion concerning the comparison of two “identical” objects:

({ key: “Happiness” } == { key: “Happiness” }); // false

Is this a confusion? Technically, these two objects are being compared not by their values, but by their references to individual locations in memory.

Whatever you might say the object “is”, well it is not.

We are and are not.

I believe Plato might call it a bug, but Heraclitus would call it a feature.

Originally published February 4, 2017