Every man has his own language. He should speak it. Programming is similar. If you don’t have a language you like, keep looking. Something out there will have most of what you want out of a language, and maybe one day, someone will invent a similar one that has even more of what you want. But please don’t believe all programming has to be like C.
(A warning to my unwary readers: This is a long post that muses about something most people don’t care about. I don’t blame you for quitting now, but if you want your brain to get some non-math-level-intensive exercise, please do proceed.)
Human language is one of those interesting peculiarities. We all have a unique vocabulary. Even if I say I speak “English”, there’s a good chance we disagree on something. I often use the word “grey” for the color, which older dictionaries will tell you is correct, even though the homonym and synonym “gray” is increasingly becoming more common. Some of you, my dear readers, may think yourself as purists, but this is a bit of a delusion. Let me explain.
Any language being spoken today has evolved over centuries. People from 100 years ago who spoke the language you claim to speak would probably think you were a foreigner, butchering their language. Humans eventually decide to use new words or change the meaning of words. Words like “deprecate” and “alien” have changed meaning. So whenever someone criticizes someone else for spelling a word “wrong” or using it incorrectly, they themselves are the one’s who are ignorant of the fact that there is no standard. Even dictionaries cannot be viewed as a standard because their contents are decided upon by a select group of people who are not always in agreement with the people working on another dictionary. Games like Scrabble might be fun, but they are based on false premises. We have, instead, a set of most common words for our time, and as long as we appeal to these words, we have at least a general idea of what the other person is talking about.
In a way, it would be nice to have a static language – one to which everyone can appeal – but this is an unreasonable request. As soon as you are born, you have experiences that are unique to yourself, and these shape how you view the world and what you think about whenever you hear certain, use, and speak certain words. Over time, these ideas are made more complex by relating them to other experiences. We may consider this “refining”, but in actuality, we have made the definitions of such words more dependent on other experiences, so they are now more complex. For instance, my idea of “existence” is probably different from yours, especially since I have considered its essential characteristics. All of this “refining” or associating new ideas and experiences goes on within our mind, and is thus tied to our experiences alone. We can’t somehow share experience, and even if we could, our brains would analyze it differently.
We each have a way that we enjoy speaking. We each have a set of vocabulary that we enjoy using and a style of speech that is unique to us. Our brains our very unique in this regard. However, there are only so many ways of expressing ideas in any one particular language (at least before expressions become a mouthful). Sometimes new words are introduced and grammar changes, but many times, a number of people speak the same way. That’s nice.
Programming languages have the benefit of being static, should the creator’s of their VMs so desire. This isn’t always the case, and when it isn’t, people may argue fervently over the matter. Programming languages should be static so that there is a standard to which everyone can appeal, but problems with the language, changes in the mentality and methodologies of programmers, and the influences of other languages often result in the standard being changed. Consider C++ for instance. Due to dynamic typing in other languages as well as lambda functions, the latest version of C++ has the “auto” keyword and lambda function capabilities, both of which have been integrated within the existing language rules very well. However, the universal function call syntax (UFCS) does not, and would cause incredible, irreversible breaking changes. The UFCS doesn’t really fix the problem in C++ that it is aimed at (it only creates another one), but it is an example of how such a language may evolve in a way our predecessors would consider pollution.
If a programming language does not evolve, it has a unique way of capturing the mentality of its creator and those who enjoy it most. Everyone wants something a little different out of a language, and programming languages aren’t any different. It makes me wonder how people go about reading the things I write. Programming languages are a lot more basic that human languages and don’t always leave much room for error and flexibility. With that in mind, it’s clear that this has influenced my own ways of using language, as well as a language that I myself have been trying to create.
Every language needs rules, but we are each picky as to which rules must be followed and enforced. I’m curious if it is possible to categorize people based on the types of rules we each like to follow. This is a deeper question than merely asking whether or not someone’s desk is clean – one of the trivial ways to figure out if a person is a J or P type in MBTI. It’s not even just asking if they want it that way, but asking how they would organize it if they had the time, the right desk, and the right room. What would your ideal room look like?
In some ways, picking a programming language has a small way of revealing a piece of one’s mentality about how the world should be organized and it also says something about how that person likes to present and receive information. Some people prefer clarity, emptiness, distinctness, which often comes out as whitespace. Other people need borders and boundaries, which may come out as parentheses, brackets, braces or some special tokens. Where the whitespace and boundaries are differs for each person.
This can be related back to human languages with the fact that, not only do people express ideas in their native tongue differently, but they may also have a language structure that they themselves prefer. For instance, some people prefer particles for identifying parts of speech. Some people prefer declensions. Still others prefer the types of words used. And, of course, in English the structure of the sentence itself is used to indicate the parts of speech.
There’s an underlying hint here: If you haven’t found a language you enjoy, keep looking. Someone may have something you like.
Sometimes it’s hard to justify learning a new language merely because it expresses things the way you want. We often use economic reasons to justify things, but you’ll never get what you want if you always try to justify things economically. Forget the economy. You will never have enough money. In this modern age, we can always squeeze an extra minute in somewhere, right? Ok, so that can be stressful. Let’s put it this way: What would you trade for the ability to express yourself exactly how you want? Sure, only a few people can read it, but with the internet, there are plenty of people out there who can speak whatever bizarre language you happen to learn. *sigh* If you don’t have enough time, I guess that’s ok. English works.
Some parts about language are based, not on our own desire for how to receive information, but on our own creativity for expression. In programming, there are a number of C-style languages, and I wonder how many of these differ from popular languages purely because their creator’s just wanted to have fun doing something unique. Many language decisions are made willy-nilly. That’s how alot of vocabulary gets invented in my family. “It sounded good at the time” is about what the usual excuse boils down to, more or less. Every now and then, it corresponds to what someone else came up with. I recall coming up with ideas for a story of mine in Japanese and I wanted one of the characters to describe another as “Miss Pichipichi” for being excited and vivacious just cause the pronunciation conjured up that idea. Turns out, pichipichi is a Japanese word that means just that. Someone else apparently had the same idea long before I did. I can’t take full credit myself anyways since I first had to learn the Japanese onomatopoetic structure (which is repeating the same two characters) and probably be acquainted with the American English expression “peach”, though even the origin of the usage of “peach” is itself usually intuitive for Americans in situations where it is used.
Given that we humans prefer to have information categorized, it makes me wish I could perform experiments about language creation among people. That’s very difficult in today’s world, and most people would resort to using the same words they grew up with and people will always “correct” each other until everyone is using the same or similar vocabulary. One could summarize this by saying native tongue takes precedence over natural expression.
The global applicability of many languages does aid us in helping to understand each other to some extent. We all are forced, in some ways, to use the same vocabulary to express ideas, and thus we can all garner something about what the other person is saying. However, I feel like in many ways this is greatly deceiving, and we end up thinking our speaker is talking about an elephant when he’s really describing an ocean. Now that I mention it, even the word “really” is peculiar. I often use it to mean “actually” though it also has the connotation of meaning “very much”. One could be verbose in expression, but many words wear out the listener.
~ Categorizing Mental Processing ~
Languages have already been categorized. There are encyclopedias dealing with these topics, so if you are interested in the languages themselves, you are welcome to indulge yourself on those. At the moment, I’m interested in the human mind.
There are different types of personalities. Having already encountered people whose personality type, from a general perspective, is the same as mine, I’m quite convinced we are all very different mentally. We like to receive information differently, and thus, the fact that we are this way is obviously not based solely on our personalities. There are ways that nurturing and experience impact our preferences, but I’m inclined to think (for intuitive reasons) that this affects more of the means of expressions than the actual modes. That is, the mechanisms by which we express things may be handed to us, but no doubt, we control how we prefer to use them. You can give a man a car, but that doesn’t make him want to drive.
I wonder what the extent is of information that can be extracted about a person just based on their ways of expressing things, especially in regard to programming languages. Naturally, the easiest for a person to use would be the one that I believe they would be most inclined towards, assuming a language is equal in capability with other languages (allowing the person to express anything they wish). Maybe some people wouldn’t mind a limited language, but at some point, they might need that power, and I wouldn’t want that to be a limiting factor in determining whether or not someone uses a language. A number of people avoid using Latin because they aren’t scientists and the language itself has been declared as “dead”, even though it is still used in the Catholic Church an a number of scholars. When now-Pope-emeritus Benedict XVI added a word for “taxi”, he was ridiculed by the mainstream news media, even though what he did was, philosophically and linguistically, perfectly fine to do so. On top of that, anyone learning Latin now will be learning it through the lens of their own modern version of their native tongue, which means that the meanings of Latin words technically are not as static as they seem, and they are definitely not as static as that of unmaintained programming languages.
Enough of the musing. Let’s start asking some questions.
What does whitespace say about the human mind? Whitespace is a visual cue, but if it is to be meaningful, it must have some measure. The meanings of letters are determined by both their shape and their width and height. Whitespace can also be measure by its width and height, or at least the area where whitespace is present can have some meaning attributed to it. Whitespace does not necessarily indicate organization, and indeed, one of the common complaints about the programming language of Python is that it depends heavily on whitespace. At the same time, the whitespace greatly simplifies things, removing some visual clutter and making it easier to read and write than other languages. It has been so successful that there are various spin-offs. I’m rather curious as to what it means from the standpoint of human expression. Why should the lack of visual clutter be more helpful to some people than to others? I’ve already stated why it is good (readability, write-ability), but the extent of its effects on different people is interesting.
I imagine there is a spectrum of different people for the influence of things like whitespace, certain letters and characters, and certain constructs on different people. It’s unreasonably to simply lump people together, as in “You’re a whitespace-liker and I’m not”. But it is worth considering the aversion or liking of such a feature as an indicator of the internal mechanisms of the human mind.
The influence of letters and characters (e.g. $, %, <, *, and letters) on the human mind was mentioned in passing, but I think it’s also notable to consider these things in further detail. Some programming languages use the semi-colon for sentence termination, probably partly because this is how C did it, but perhaps because it may resemble the same effect of a period on the human mind. Or perhaps it was chosen at first because it just happened to be the closest character to your little finger on the keyboard. In any case, it seems to have become the de-facto expression termination (i.e. sentence-ending) character for programming. Comments in both programming and written text take more liberty. The hash-tag used in Python and other programming languages may have been chosen because of its blocky size being a unique, easy-to-type visual cue that signals to the programmer he is now reading a comment.
In regular text, parentheses or notes “outside the margin” may be used for comments, depending on the relevance of the note to the rest of the paragraph. In this case, the location of the text and the distance of such a text from the paragraph of reference has some effect on the meaning of that text with regards to the rest of the paragraph. Consider, for instance, the need to expound upon a footnote rather than merely putting a reference and explaining at the end of an article. The size of the note may also have something to do with this, but I have read some very large footnotes, so an author’s preference is also at play here. This speaks both about the author’s preference and the how the author perceives that information as being related to the rest of the text, but since these facts are so intertwined, it’s hard to distinguish them just based on this one piece of evidence. It could also be the author is indecisive about where the information belongs or uses notes as a temporary location for ideas that should later on be incorporated into the main body of text.
With programming languages, the rules are that everything is within the text area. There are no margins by which one can arbitrarily decide what goes in them and how much. That’s a blessing for our analysis in some ways, although it does hide whether or not people would use them and for what reason.
The easiest way of acquiring statistics on this matter would be to ask people about their preferences and why they chose them, but we may not understand ourselves much less what the question is asking for, and it may be easier for the one being questioned to simply pick what they prefer from a list of options. You can’t ask everyone to compose a piece of music they enjoy – some people simply can’t express it or don’t know exactly what it is they like about any particular genre (and of course, we often like more than one). The same is probably true for language. Even though everyone can write, some people may not have the creativity to think of the shapes and letters and spelling and grammatical structures that they would enjoy most, though we could learn (as analyzers) what letters and spelling and grammar their minds were capable of developing on their own. The truth may even be somewhere in between – that if a person were taught some ideas that helped improve their abilities, they might be able to express their “true language” – and thus their inner mind – better.
This was certainly true for me and programming to some extent, though I am limited by what the computer itself can understand. By learning about other languages, I was able to invent means of expression that I personally prefer.
The question now is, how can this be understood and categorized? Everything can be categorized – some ways better, much better, than others. In this case, I’m particularly interested in the aspects of language as they appeal to the human brain. But before I invent some meaningless blarg, let me give an example.
Consider one language whose words are composed of rough-sounding syllables but flow together well. Anyone interested in adding a word to this language will weight different factors that decide what is important when adding to this language. Is flow important? Or is preservation of the sounds important? The things that are considered important are weighed differently by each person, and the underlying reasoning behind these choices that I am most interested in.
The weighting of these factors changes over time, as I can attest to in my own life and experiences. Familiarity plays a huge role as we tend to choose things that are more familiar to us. Ease of use is probably the next most influential, considering that humans seem to be naturally inclined towards doing what is easiest. Another, largely encompassing factor would be natural clarity to the human mind. What does this mean? Let’s have an example!
Consider your own preference for indicating a storage unit. How would you represent storage? A box or a sphere? Or does it merely need to indicate something within the shape (such as a teddy bear inside a parallelogram or triangle)? Familiarity with the box may come first, and then the fact that the box is easy to draw and speak about. Then it comes time to draw the box. How do you draw it? Do you draw a cardboard box with its flaps open? Do you draw a wood crate? Do you draw a futuristic-looking package? Do you draw a simple square or do you make it three-dimensional? Why? The answer to this last question, in my opinion, may very well be what one considers to be the natural clarity – that is, what is easiest for the speaker / presenter (of the idea) to understand.
More could be said about this topic with further research. That branches off into generalities and gets into fuzzy ground that may not reach any conclusions that are any bit more definitive than the ones reached in any other area of psychology.
I’d like to expound on the other sorts of details that effect how people read, write, speak, and listen, so perhaps I’ll update this post later (or write a new one), but this post is already long enough, and hopefully, I’ve got your mental gears spinning on this matter.
~ Conclusion ~
A definitive message in this should be one of encouragement. If you haven’t yet found a language you enjoy, keep looking.
Second, there is no true standard. There are many standards. But let’s not think that abiding by one means we understand the way someone else speaks when they use it. Don’t bash people for not abiding by a standard, but if you want them to abide by it, politely request they do so, remembering all the while they you both speak your own language.