I’m the kind of person who’s less interested in what people think, as I am more interested in how people think.
This proverbial “lens” of how we view the world and interpret our experiences is what determines our outlook and attitudes about the world, as we go about experiencing it. When these attitudes and perspectives are shared amongst a group of people, we typically like to capture this ideal in day-to-day language with the word culture. But as a studying mathematician, I’d prefer to appeal to less of a vague term to capture a certain ideal, as culture is often what’s referred to as perspectives that are shared between individuals. Which doesn’t necessarily account for the perspective that an individual may not share, which gives them uniqueness. i.e. Is “culture” only applied to shared perspectives, or can there be a “culture of one”?
Regardless of that answer, I think what is universal to both types of perspectives is best expressed by what Thomas Kuhn once referred to as a paradigm. A paradigm is a mental framework containing the basic assumptions and thought patterns that govern social interactions. Kuhn, of course, applied this ideal to the Scientific community to argue that human progress is not always seen as accomplishments that build atop of the stability of old perspectives, as it sometimes is more of a restructuring and replacement of antiquated one’s. The concept of a paradigm has been around since the days of ancient philosophers arguing over matters of subjective perspectives in things such as “taste”, and “beauty”, and “honesty”. But a paradigm is more fundamental as a mechanism of the mind that determines how meaningful new information will (or will not) be when it’s received. Our paradigms shape our perceptions, and seem intrinsic to the nature of consciousness as each person has an individual perspective regardless of what’s shared. Every so often I meet people who seem unaware that the words that they use are in fact indicative of their paradigm, because they expect me or others to just know what they’re talking about. What is common to all these conversations, however, is the medium by which our paradigms are translated to each other, such as how I’m intending to translate my perspective to you; with a most powerful tool that humans have come to affectionately call language.
Language is to reality what a 2D map is to a 3D world. Words are inherently used as points of reference to navigate the landscape of life, and those words are governed by the paradigms shared amongst a collective of people, thereby becoming the contract of a culture. As you’ve no doubt have experienced when involved in a conversation of people who’re speaking the same language, but you can’t seem to follow because the words that are being used are referencing things that you have no experience with. Such as when you’re caught between friends talking about someone you don’t know, or a business meeting that seems over your head, or if you’ve ever filled out a government form, or been apart of some judicial process that seemed so abstract that it leaves you with a sense of questioning your own intelligence.
Every field of study is rife with their own terminology, meaning, and definitions of words. Even if the same words are shared across studies, they may have very different meanings in their own respectful way. Mathematics, and extensibly Computational Science, is no exception to this phenomena of ambiguity. We mathematicians have our own jargon that make us appear as madmen to the uninitiated, with our lambdas, indefinite integrals, vectors, tensors, etc., that when once understood can start to break ways to conversations, not necessarily better, but of a different caliber; different culture; different perspectives and paradigms.
At the heart of every great Computer Programmer, Mathematician, or any other respective discipline, lies the very essence of what is bound to the knowledge of those disciplines by it’s use of language. Language has proven itself to be the most efficient and flexible medium to propagate information throughout the whole of humanity. Yet, it’s powerful enough to even become a mirror unto itself as it cannot be removed from that system of human understanding, as we very much even need a language just to talk about language. Coupled with clever electronic components, modern computer programming languages are an attempt to capture the natural human languages we speak in order to describe reality, and how to interpret it, to a Computer; our paint-brush is the keyboard, and our words are our instruments of design. As we pay mindful attention to the nouns and verbs we use in order to create our applications.
I’ve come to find that there is, in fact, no correct way to write any particular program, just as there is no correct way to artistically express your feelings (though there may be more mature ways to do both). Despite its deep technicalities, there is something both magical and artistic about programming that can entrance us in the same way that a poet speaks with passion and word play. There are, however, conventions and specifications which give structure to creating a program, which can greatly increase one’s capacity to understand a programming language as a tool. At the same time, this structure can also limit the means by which innovation and change occur as one might mature as an engineer. That said, there are a few fundamental things to always keep in mind:
- The more code you write (the more words you use), the longer it’ll take the computer to run.
- The more loops you make (the more you repeat yourself), the longer it’ll take for an algorithm to complete.
Therefore, to truly comprehend computer programming, you have to understand the terms and metaphors people use to talk about programming, which itself is just a translation of how people think about programming. Thus, you have to come to terms with grasping both the spoken language of the culture as well as the programming languages used by the Computer; in essence, you have to come to understand the paradigms.
Can I give you a practical example? Well if you’re a little more technically inclined, I highly recommend taking Peter Van Roy’s excellent courses about programming paradigms, hosted by EdX, Paradigms of Computer Programming — Abstraction and Concurrency where he breaks down the fundamentals and differences between the major influencing paradigms in a way that appeals to both the beginner and the expert. I know there’s a movement towards rejecting programming paradigms, encompassed in Shriram Krishnamurthi’s paper, but I hope you consider revisiting that position on the basis that paradigms, in general, are more intrinsic to the human psyche than we may give credit to. In sum, Van Roy posits that it’s not necessarily about finding the best programming language(s), and finding ways to build all your applications with them. What we should really be doing is asking the question ‘what problem am I trying to solve?’ and understanding the various answers from the various programming paradigms, which will lend itself for us to greatly evaluate the quality of our tools.
We see this in the emergence of every new framework and technology that comes in vogue; today it could be Facebook’s React or Google’s Angular that come with their own terminology and definitions. Like the word Controller in Angular does not necessarily mean the same thing in other MVC style frameworks, because you should never manipulate the DOM in the Controller, as that’s the role of the Directives. So when teaching, or learning a new language, framework or technology, why not learn about the origin of why that framework uses the words it uses in order to create and develop application patterns? Why not emphasize that each tool that’s created was by a paradigm that tried to solve a problem? Because I would bet that it was the breaking out of old paradigms that helped develop these tools to begin with, opposed to the progression atop the stability of possibly antiquated perspectives.
But for those of us who’re less technically inclined, let’s look at this in another way and go back to what we all (hopefully) have a little understanding of; language.
Earlier, I said that “language is to reality what a 2D map is to a 3D world”, but there’s actually a subtle and important distinction that’s being glossed over in that statement. It has to do with the “D” in that sentence; i.e. the word dimension.
Dimension in the paradigm of what’s known as Euclidean geometry is based on the idea of straight lines that extend on forever, where each dimension is orthogonal (at right angles) to each other:
- the 1st dimension being a line
- the 2nd being a plane
- the 3rd being a cube
Here’s a classic explanation of this by physicist Carl Sagan
However, there is another way to understand this word “dimension” which can open up our psyche to another way of seeing the world (another paradigm); this is known as Lobachevskian (Hyperbolic and Elliptic) geometry. In Elliptic geometry, there are actually no “straight lines” to be orthogonal to, but there are things called “curves” (anything that’s not a straight line). This is significant because there are, in fact, no perfectly straight lines (or planes, or cubes for that matter) found in nature; mountain ranges, tree edges, coastal lines are all jagged; the earth itself is actually a sphere, and moves in elliptical spiral patterns. Everything in non-Euclidean geometry becomes relative to the scale at which we are observing that thing from. So dimension in this context means the scale that our frame of reference is from the starting position (the base) to the level of detail within that frame of reference. Or another way to put it, it’s how many layers deep, or levels nested within something that I’m looking at, as each layer would be its own dimension.
It’s the very essence of what makes fractals of the Julia and Mandelbrot set what they are.
Or like that of a Russian Matryoshka doll which has normally 4 or 5 dimensions to it from the base of the outside shell.
Or how the Human body is made of DNA cells that are made of chemical molecules, where those molecules are made of atoms surrounded by electron shells. Whereby those electron shells have protons and neutrons at their core, which contain a myriad of other sub-atomic particles, such as quarks, and so on.
And by the theories of Noam Chomsky, even natural human languages exhibit this capability of nested dimensionality, especially when we try to come to terms with things like how we can’t actually talk about language without using language. When we lookup the definition of a word, it’s done so by the use of other words to define it, and other words to define those words, and so on and so forth. Which, we could say, would have multiple dimensions of definitions in a non-Euclidean paradigm. Many great authors — including Charles Dickens and Ernest Hemingway — are known to have used run-on sentences, which could be seen as one long sentence in one way, or could be viewed as sentences embedded within sentences, as ideas chain together in a nested structure.
William Faulkner once wrote an 1,800-word sentence. #funfact!
By this same logic, conversations between people can be thought of in the same way; we could view a conversation as a line that effectively starts at one point and ends at another, with many branches to the conversation as the topics naturally change. Or we can view this branching of a conversation as more like that of conversations within conversations, where the topics of conversations are nested within each other as they’re derived from the original topic. Which could mean that every time you change the subject to talk about something related, you’re actually having a multi-dimensional conversation. …O.o
You would think that these sentences within sentences, or definitions within definitions, or structures within structures, would circle around itself and essentially be a useless way come to understand anything about the world. As Alfred Tarski once pointed out, however, there is a key difference between a circular definition (defining something in terms of itself), and a recursive definition (defining something in dimensions of itself) which can only be employed by the ability to shift one’s own paradigm. The words themselves need not change, but from another perspective, a new light can be shed onto old ideas. A conversation is not a wheel that needs to be reinvented, but can possibly be appreciated more in depth when considered from another vantage point.
When we find ourselves given new ways to talk about something in the world, we open up a greater perspective to understand the world. Thus, the words we use are paramount to the translation in understanding anything about the world. And if we don’t take the time to clearly define our words used in our descriptions of things, then our metaphors are blurred by the vagueness of our terminology. It’s no wonder that we ever get lost in conversation when our map of reality (our language) is so clearly border-less and undefined. For it is only language that can be used to talk about language.
This idea of nested dimensions might seem crazy and abstract, depending on how you see things of course. Although, I’m of the mind that ideas are not simply for the elite (especially us mathematicians), but can in fact be understood even in the most simple of ways if we are willing to work together, and diligently try to overcome our fear of complexity. Personally, throughout all of my studies, I have yet to identify anything that would make my mind more capable than any others of what humanity has to offer. So I see no reason why anyone else could not achieve the same level of comprehension. But, of course, it doesn’t mean we all have to.
I am, however, still learning, and still eager to learn. I still try to find new metaphors and words to better navigate, and more clearly match, the landscape of life; as I’m also still new to these disciplines of math and programming. There are many school systems that, by themselves, can be unforgiving, and so many explanations of essential ideas that I’ve found to be overly complicated that I can’t tell you how many times I thought of myself as an idiot for not being able to understand a concept, and considered giving up trying to. Only to realize that all my battles are always, and only, with myself, and my own ignorance. If I can learn to embrace a different paradigm, a different way of seeing the world (one where the word “idiot” has no meaning), embrace a different way of seeing the same things I see everyday, then I can find new ways to either overcome the same challenges, or just simply acquire a greater appreciation for it.
If you’re just starting out on a journey in your own discipline, I would hope that you never give up, unless you truly feel that it’s the right thing to do (opposed to the easiest thing to do). If you’re like me though, ready to apply yourself in the world, then I’m excited to see what the next steps bring for all of us.
My name’s Monk. I just completed General Assembly’s Web Development Immersive in San Francisco. It was intense, but worth the challenge as it offered me a great opportunity to grow, and a chance to embrace new perspectives, and paradigms. I would love to know what your journey is, and what new vantage points you’re seeing the world from these days in order to overcome challenges, or establish a greater appreciation for it. What new paradigms have come to replace your old ways of thinking? What new paradigms are still yet to come? Because whatever those are, they won’t just determine what we think, as they will determine how we think as well.