Building it Brick by Brick

Posted in programming, talks

Swift design talk

Friday, June 27, 2014

Last night I presented a small introductory talk on Swift under hopefully-not-too-pretencious name of "Swift Design". I talked about what could have been the primary goals of Swift and how Apple has achieved them, doing sort of speculative reverse engineering of Swift design choices. I have uploaded the PDF and the source of the presentation for the excellent Deckset app.

The talk went on for exactly 30 minutes (in line with the two practices I did today) and then we had a Q&A session for about 25 minutes (though obviously I insisted from the start that I'm far from any kind of Swift expert).

Here are some of the things I said or wish I've said:

By Apple for Apple

This is actually a feature and not a bug and during the talk I explained why. One of the biggest frustration of my carreer has been the glacial pace of C++ improvements and how it affected just how much less software I was able able to build due to it. Competent and highly empowered people in Apple control this language so it won't become C++ (or Heavy Metal... you know... it will never leave you behind)

Objective-C compatibility

Apple has proven itself to be masterful at transitions, small and big, and Objective-C compatibility is yet another display of it's easy-but-decisive school of transitions. Complete transition to Objective-C will happen but, as other big Apple transitions, it will be smooth and gradual.

Contrast this with Win32 to .NET quasi-transition. I've spent countless non-mythical man-months on glueing ISO C++ with .NET wrappers just to enable its use. As enabler the effort was worth it but boy, imagine if I could have just skipped all that. To be fair, Apple has Microsoft's experience to learn from and this is how the state of the art is advanced. I'm just glad to not have to go through such experience again. Btw, two years ago Microsoft made an almost ironic return to C++ with WinRT.

LLVM

LLVM and the team around it must be one of the best hidden (from general public) crown jewels of Apple. It's amazing just how many enabling technologies and optimizations Apple has been able to wring out of it. And on top of all that the project is open source.

Generics + Protocols

It's the combination of protocols with generics (classes and algorithms) where I expect most use and most growth both in user code and in Swift Standard Library. This is nothing new but the combination has been proven somewhat by the success of parts C++ Standard Library but mostly by the success of C# generics.