Five in Five Week Five: Swift Review
Swift is a fantastic language. Of all the languages I’ve attempted to learn in the Five Languages in Five Weeks challenge, Swift is my favorite. TypeScript, Elixir, Haskell, and Go were all interesting, but Swift felt right from the beginning. I think that the tools around the language and its readability are what set it apart from the other languages. Another factor is that after five weeks of learning different languages, I’ve probably built up my ability in picking up initial language concepts.
GitHub Repos
Week One - TypeScript
Week Two - Elixir
Week Three - Haskell
Week Four - Go
Week Five - Swift
Swift Features
Swift pulls ideas from many different programming languages. Its Wikipedia page shows that it takes from all of the following: Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, D. With all of these influences, the language feels very natural and robust. Swift is a multi-paradigm language supporting protocol-oriented, object-oriented, and functional programming. Many of these features felt comfortable to use almost immediately. When things work as expected, that means the language is well designed.
My favorite part of getting up to speed with Swift was using the Swift Playground that is built into Xcode. Swift Playground is like a dynamic REPL where you can write Swift and it gets compiled on the fly. It’s really cool. I couldn’t imagine a better environment to learn the basics of a programming language. Every language should have a tool like this. The Swift Playground functionality is also available on iPad so it’s even possible learn Swift on the go. I can imagine I’ll be using this for creating proof of concept and learning tasks in the future.
Further Learning Plans
If I were to start learning Swift seriously, my first task would be to work through iOS 11 & Swift 4 - The Complete iOS App Development Bootcamp. I went through a number of sections in the course and it’s extremely well made. So I would push through that entire course. Once I was through with that, I would start making my own apps. That would be fun and a the best way to learn everything that Swift has to offer.
Resources
I was able to pull from a few resources to learn Swift this week. The learning material built for Swift is exceptional, and truly stands out from what is provided for other languages.
iOS 11 & Swift 4 - The Complete iOS App Development Bootcamp by Angela Yu on Udemy. I mentioned this course above. It’s a thorough treatment on how to use Swift to develop iOS apps. The course is very hands on and will quickly get you using Swift to make iOS apps.
Swift 3 Fundamentals by Simon Allardice on Pluralsight. Phenomenal course covering the basics of Swift. I don’t think I’ve ever seen a better introductory course for any programming language. This course is seriously good. In fact, it is so good that I’m now planning to go through all of Allardice’s available courses. I want more.
The Swift Programming Language by Apple. Apple’s official language documentation. I spent a fair amount of time with the book but primarily drew from the two video courses.
Quick Final Thoughts
Learning Swift over the last week has been incredible. Apple has produced a high quality programming language and it’s clear why developers adopted it so quickly after release. The Swift Playground, exceptional documentation, top notch learning material, and a growing development community are huge in making the language such a joy to use. That said, I don’t feel like it’s a better language than C#. C# just has a ton to offer itself as a modern, mature programming language. Over time, I expect Swift to close the gap, but right now I still prefer C#.
Thanks for following along during the Five Languages in Five Weeks challenge. It’s been a good experience. I’m planning to post some observations from the experiment sometime soon, so be ready for that. For now though, the new language learning is taking a pause. A week with each of these languages barely scratched the surface of what they can do. I’m hopeful that I’ll dig deeper into many of them in the years ahead.