Understanding New Programming Languages

June 05, 2014

In reading “The Swift Programming Language” to prep for my post on how Swift informs us about programming language trends, I was surprised at how straightforward the language’s features seemed:

I found myself nodding along with each feature introduced. Tuples: check. Named Parameters: check. Default Parameters: check. Protocols: check. Functions: check.

I realized it wasn’t just because Swift has unsurprising features, but because I’m familiar enough with enough other languages that I’ve experienced or used those features before. Although I write mainly in Ruby and JavaScript at work, I have a lot of experience with Java and C, and had my head was in Scala for quite a while a few years ago.

Although the forms of Swift’s various features differ from their analogs in other languages, conceptually, they are the same: the generic type system is similar to Java’s, and the tuples are close enough to Scala’s that all I need to do is understand the syntax.

It really is true that the more languages you know, the easier it is to “pick up” new ones. This is a great reason to learn a new programming language every year.

If all you know are dynamic languages like Ruby or JavaScript1, or you are only familiar with Java or C#, you are increasingly at a disadvantage when trying to acquire new skills. Learning something like Swift (or Scala, or Elixir, or whatever) requires not just understanding the syntax of the language, but the very concepts that underpin its features (some of which can be mind-bending).