Spoken language affects thought as programming languages affect algorithms?
jakevoytko.com
jakevoytko.com
While trying to translate an article I wrote in English to German, I noticed that many things did translate very poorly unless I significantly differed in style. This is especially prominent in scientific papers. In English, you would focus on short, easy to understand sentences. In scientific German, it is absolutely necessary to write very difficult, convoluted sentences to avoid ambiguity. This made the text significantly longer -- and harder to read. However, the texts conveyed more detailed information and were overall more precise.
My personal theory is, that the German language enforces logic and grammar more rigidly than English, which makes it sort of more like a programming language. Therefore, the complexity of a sentence is directly tied to the complexity of its content. In english, I feel that it is more easy to simplify things (deliberately!), which makes it easier to understand. On the other hand, German behaves similar to programming languages: The more compact German is written (without losing information), the less readable it will get -- try Kant for example. Hence, the primary reason for German text being longer than English text is often that it is written in rather simple (long) style. You could write it more concisely, but you would lose ease of reading that way, which is inappropriate for museums, of course. (Or you would lose information, but germans are somewhat disinclined to do that: one THIRD of the worldwide tax laws are German, only because we don't like to lose precision...)
By the way, that is why I prefer to buy English books for learning something, as they are easier to read, while I prefer German books as reference, as they tend to be more precise.
For the matter at hand however, I think that the spoken language is sort of the "operating system" of the mind. It can only think within the boundaries of the language and only the cleverest of minds can really expand their thoughts beyond that limit -- by using the language in new ways. Most major philosopher did that (i.e. Kant, Schopenhauer, Freud etc.). Example from Kant: "Handle so, dass die Maxime deines Handelns jederzeit als allgemeingültiges Gesetz gelten könne." (Act in such a way, that the "Maxime" of your actions may be applicable as universal law at all times. Where "Maxime" is a new word meaning sort of the "gist" or "idea" of an action) This is not normal German: It is something new, more concise and more precise than normal German. It feels a lot like a sentence in a programming language. It would take significantly more words to express the same content in normal language without losing precision.
So by learning English, I learned to express things in a more understandable way. By learning C, I discovered quite many "syntactic" inaccuracies in normal spoken sentences. Matlab thought me to think in vectors. Why should Swedish be different? Or Lisp? Or Whatever?
But I feel like all mainstream programming languages aren't truly "languages", they're mostly dialects of X, where "X" is a fusion of Lisp and C, i.e. same old ideas repackaged in different syntactic packaging.
This is why I am always skeptical about dramatic increases in productivity due to a language switch. Good editor and decent chair produce similar boosts: noticeable? Sometimes. Dramatic? No.
In my opinion two most important characteristics of programming languages are recruiting and maintainability. The former is important because certain languages attract better quality engineers and some are impossible to find experts for. Maintainability speaks for itself: the code should be easy to transform indefinitely, beat into shape, keep improving upon, etc.
How are "normal" languages not the same old ideas repackaged in different syntactic packaging? I'd say "dog" and "hond" aren't different ideas even though one is in English and the other in Dutch. They're just the same old ideas repackaged in different syntactic packages. Isn't that practically the definition of a language? Some things that take me a sentence to say in English can are only a few phonemes in Japanese, but does that mean Japanese isn't a real language because it's the same idea in a different syntax? I'd say syntactic difference is possibly the defining characteristic of a language.
Perhaps this is simply indicative that the term "language" is innapropriate to apply to a programming grammar.
While the semantics frequently does not vary within a given paradigm, sometimes a different syntax gives you completely different point of view. For instance, Polish notation, also known as prefix notation, makes it easy to come up with s-expressions, what turns out to change the way we think about programming.
Also, programming languages' syntax can work as reward&punishment tools. A hash is slighty the same hash in all programming languages. Neverthless, dynamic languages made it so easy to manipulate on them that in many ways they've dominated the programs written in those languages.
It is also important to remember that a language is not an abstract contruct. It has its uses, existing design patterns, good practices, as well as existing libraries. "Meaning just is use". Even if you can say nearly everything in all languages, sometimes it is harder to say one thing in another.
(as a boring guy I must say that I feel sorry that such indirectly thought provoking post got only 7 points, lossing popularity with the Vista problem)
"And a lot of, I think, our confusion with objects is the problem that in our Western culture, we have a language that has very hard nouns and verbs in it. So our process words stink. So it's much easier for us when we think of an object–I have apologized profusely over the last 20 years for making up the term "object-oriented", because as soon as it started to be misapplied, I realized that I should've used a much more process-oriented term for it. Now, the Japanese have an interesting word, which is called "ma", which spelled in English is M-A, "ma". And "ma" is the stuff in between what we call objects. It's the stuff we don't see, because we're focused on the noun-ness of things, rather than the process-ness of things, whereas Japanese has a more process/feel-oriented way of looking at how things relate to each other. You can always tell that by looking at the size of a word it takes to express something that is important. So "ma" is very short. We have to use words like "interstitial", or worse, to approximate what the Japanese are talking about."
For example, the Swedish word Lagom. Or, in programming, Common Lisp macros, monads in Haskell, the act of defining a word in Forth, etc. (It's easier for me to list idioms in a language other than English, because I'm immersed in English most of the time.)
While trying to implement algorithm X in a language without garbage collection (for example) is possible, the expression may become so burdened by otherwise superfluous detail that the original meaning is obscured like a "needle in a haystack".
Another is that English doesn't have an immediate distinction between free-no-cost and free-unrestricted, such as "libre" vs. "gratis" in Spanish. This has led to some ambiguity in Open Source discussions, so the phrase "Free-as-in-beer" gets used a lot now.
As a native English speaker that spends most of his time speaking German, there certainly is an element of precision that permeates both German culture and language. I've wondered at times if the link is more than coincidence.
As noted, "ja, genau" still echoes in my mind for total agreement. There just doesn't seem as good an English equivalent!
I had an interesting discussion following this article at work and a colleague of mine who is a non-native speaker of English told me that when he thinks programming/ engineering English seems to work quicker in thought progression compared to his native east Indian language.
A lot of our thought is based on frameworks of metaphors, the vast majority of which are learned, not discovered on our own.