Close

November 28, 2016

The Joys of Language

arrival-movie-poster

Language is the lens through which we express ideas. Our command of language determines how clearly we communicate our ideas to others. Part of communication is choosing the language that is most effective, each language has strengths and weaknesses that impact how ideas come across. The movie Arrival is based around the idea that the learning a new language actually rewires your brain, wether this is true or not is up for debate, but with each new language you gain another way to frame the world.

The creators of a language codify their values in the language. Japanese, for example, requires one listen to an entire sentence before the meaning can be understood. A Japanese speaker can observe the reaction of their audience and change the tone of a sentence before its conclusion. English, on the other hand, cuts right to the point. The same holds true for programming languages, some are very expressive and place a premium on programmer happiness, while others focus on efficiency and being “close to the metal”.

In the iOS world we’re watching the transition from Objective-C to Swift, and with it the values of the past giving way to the values of the present. Objective-C was seen as too verbose, Swift is more concise. Objective-C focuses on the object oriented paradigm, Swift focuses on the protocol oriented paradigm. Not only does the language dictate how one solves a specific problem, it dictates how one thinks about a specific problem.

Working with Ruby on Rails changed the way that I thought about Objective-C. I went from the Objective-C runtime being this thing in the background to being this entity that I interacted with constantly. Ruby developers take advantage of metaprogramming more than any developers I know, that thought process stems from the strengths of Ruby as a dynamic language. Objective-C exposes many of the same mechanisms that Ruby does, but it does it in a much less convenient manner, I think this is why metaprogramming was never very prevalent in the Objective-C community, despite it being highly effective in the right situations.

While we can argue about the benefits and drawbacks of different languages having exposure to as many as possible is a good thing. With each language we learn we’re exposed to the values of the creators. With each language we learn we are not only expanding our knowledge, but our way of framing problems.