Apple's been using Objective-C for iOS programming forever, and I've never learned it. Long ago, when I was working at the University of Washington School of Oceanography, we considered Objective-C and C++ as our language choices; even though C++ was in very early days (at least two years before the standards committee formed) we decided it was a better fit for what we needed.

If you've had some exposure to various language concepts, you can take the Tour of Swift and quickly understand the language. You'll see that they've chosen the best features from numerous other languages, and cast those features in very clean syntax. Even some things I might not completely agree with, I can see their reasoning. For example, I might have preferred const to let for constant values, but I'm sure they chose let because it's less typing.

Creating arrays and dictionaries use a nearly-python syntax, very simple and clean, and sequences are inherently traversable using for-in syntax. Here's an example, taken from the Tour:

let interestingNumbers = [
  "Prime": [2, 3, 5, 7, 11, 13],
  "Fibonacci": [1, 1, 2, 3, 5, 8],
  "Square": [1, 4, 9, 16, 25],
]
var largest = 0
for (kind, numbers) in interestingNumbers {
  for number in numbers {
    if number > largest {
      largest = number
    }
  }
}

interestingNumbers is a dictionary of string keys and list values; note that both data structures are delimited by square brackets and the only distinction is that a dictionary separates keys and values with a colon. When traversing the dictionary, the key-value pairs are captured into what appears to be a tuple (although tuples were not mentioned in the Tour).

Optional types are built into the core of the language and are much simpler to think about than in Scala or Java 8.

switch statements support sophisticated pattern matching a la Scala. Functions and closures also feel Scala-ish.

Classes feel mostly like Scala, and a bit like Python, however the self keyword is implicit (an improvement over Python). The override keyword is required, properties are (thoroughly) supported and polymorphism appears to be implicit (no virtual keyword or equivalent).

Swift has native support for enumerations and protocols, as well as "extensions" that allow you to add functionality to existing classes (similar to Ruby's open classes).

Especially refreshing is Swift's generics, which seem to be quite simple and avoid the often tortuous syntax of Java generics.

I came away from the Swift Tour thinking "I could program pretty happily in this!" I'm quite impressed with the choices made by the language designers. I wonder if, now that Google seems to have definitively lost the Oracle lawsuit, if they might follow Apple's example and switch Android development to a different language (Go seems like a perfect choice).

(NOTE: This is a trial post on Codrspace, to see whether I want to move my programming blog here from Artima.com).