I just recently watched the movie Arrival. It’s a sci-fi film based on the short story “Story of Your Life” by Ted Chiang.It was an alien visitation movie. By now, you must be rolling your eyes at me. Bharat Ramakrishna watching an alien movie! Don’t tell me it’s one of those shoot ’em ups! In fact, no. It was a hard science fiction movie. One of the major themes explored was language and the Sapir-Whorf hypothesis. In a nutshell, it was about how the semantic structure of a language influences your thinking process.
And if you learn a new language whose structure is radically different from your own, this would tend to change your world view. Gets you brainier!
This got me thinking. Could the same effect be seen if coders learn a new programming language?
I thought about it for a while and I came to this startling conclusion: it depends on which language! Remember I said that the hypothesis suggested that it was the structure of the language that influences your thought?
But if you make the jump from a functional programming language to an object-oriented one, your way of thinking should change, right?
I thought about it a bit more and I realized I was wrong. After all, you can program functionally in an object-oriented language itself! You don’t HAVE to use the object-oriented features in the language.
So does that mean learning new languages doesn’t benefit you?
Of course not. Learning new computing languages does help. But I meant in terms of radically changing your viewpoints.
The argument above seems to suggest no. And that seemed to be the end of that.
However, I pondered a little bit more. I then understood that the key point lies in the way you program rather than the language you choose. Of course, if you are programming in a purely functional language, you may not be able to explore different programming paradigms.
The question is, how do you change the way you program? Sure, you could change from a functional programming approach to an object-oriented (OO) one. Or some other language type.
What I mean is, how do you change the way you see things in your programming language of choice? Since most people program using OO, let’s restrict this question to OO languages. So, how do you change the way you think in OO?
There may be several answers to this question. And the analogy to learning a structurally different natural language probably doesn’t quite work. But hear me out in any case.
My answer to the question is to learn a new design pattern. I mean to get sink your teeth deep into the patterns. A full-scale design immersion. 🙂
So what are design patterns? Well, design patterns are a template to solve a particular type of problem. Often they can be used in many similar situations. The trick is to recognize which pattern is best suitable for a particular problem.
I am not going into full detail about what patterns exist. No. That would be a whole another post in itself.
All I’m saying is, learning a new design pattern, to my mind is the closest analogy to learning a new structurally different natural language. Does it radically change the way you think about the world? I don’t think so. But it does crystallize and organize your thoughts. And it does make you brainier. That’s not a bad thing, is it?
What do you think? Do you think learning to program in a radically different way changes your outlook on the world? What about my hypothesis that learning new design patterns is the closest analog? Tell us your thoughts below. And oh, if you radically want to change the way you program, check our Codegolf contest. Here, you have to program in a fundamentally different way than your norm. And perhaps learn new programming languages while you are at it too!