This is Swift!

Swift logo

This is Swift! Swift is a compiled programming language for iOS, macOS, watchOS, tvOS, and Linux applications. Here’s what you need to know about Swift.

Created by Apple in 2014. Backed up by one of the most influential tech companies in the world, Swift is set to become the dominant language for iOS development and beyond.

Open source. Swift creators acknowledged the fact that in order to build a defining programming language, the technology needs to be open for all. So, within its three years of existence, Swift acquired a large supportive community and an abundance of third-party tools.

Safe. Its syntax encourages you to write clean and consistent code which may even feel strict at times. Swift provides safeguards to prevent errors and improve readability.

Fast. Swift was built with performance in mind. Not only does its simple syntax and hand-holding help you develop faster, it also lives up to its name: as stated on apple.com, Swift is 2.6x faster than Objective-C and 8.4x faster than Python.

In demand. Remaining supreme to Objective-C, Swift is ranked 14th among the most popular programming languages of 2018.

A Brief History of Swift Language

2013-2014 – creation and launch

First introduced at Apple’s 2014 Worldwide Developers Conference (WWDC), Swift programming language has generated considerable debate ever since. Chris Lattner, Apple’s Senior Director, Developer Tools Department, started designing the basic concepts of the new language back in 2010.

Initially, it was really just me messing around and nobody knew about it because it wasn’t anything to know about. But eventually, it got a little bit more serious […] So I started talking to my management and some of the engineers that were working on Clang, and they seemed excited about it. We got a couple people working on it part-time and I convinced my manager that it was interesting enough that we could have a couple of people work on it.

– Chris Lattner for Accidental Tech Podcast, January, 2017

It wasn’t until 2013 that the team was able to solve a strategic question about how the new language would fit in with the existing Objective-C ecosystem. Forcing all iOS developers to move to a new language could have had a major disruptive effect on the community. So, the company decided to continue investing in Objective-C while also committing to the development of a new “safe programming language.

One year later, the registered Apple developers were able to lay their hands on the beta version of the new language. In the first month post its release as a part of Xcode tools, it was downloaded over 11 million times, according to Tim Cook.

The initial reactions to Swift were mixed at best. Some developers were delighted with its features, flexibility, and simplicity, while others criticized it. Yet, most of them agreed that it was too early for Swift to be used in production. The language was evolving fast: major changes were introduced with every new release.

This, however, didn’t prevent Swift from becoming the “most loved” technology:

Stackoverflow survey results on most loved technologies - This is Swift!
Stackoverflow survey results on most loved technologiesSource: 2015 StackOverflow Developer Survey

At the same time, the language was listed among the top 10 “most wanted” technologies.

2015 – turning open source

Since Apple decided to make Swift an open sourced language in 2015, its growth has been tremendous. Over 60,000 people took a clone of the Swift project in the first week after the announcement. After 2 years, Swift is officially the fastest growing language in history, according to TIOBE Index: The language reached its highest ranking as the 10s most popular in October, 2018.

Being free and open to all, the language is growing rapidly with rapidly with its last version, Swift 4.0, released September 2017. The language is actively deployed in iOS development, when building desktop apps for OSX, or even as a server-side technology, thanks to IBM.

2019 – Swift 5.0, stable ABI, and backward compatibility

In March 2019, Swift 5.0 was officially released. The current version of Swift now contains a stable version of the application binary interface (ABI) across Apple’s platforms. Which is a giant step toward helping developers use Swift on dedicated OSs like iOS, macOS, tvOS, watchOS and upcoming iPadOS. Needless to say, Apple is building a solid ecosystem, as now standard Swift libraries are included in OS releases.

SwiftUI was introduced in the release, which is basically a library of controls, graphic elements, and layouts for Swift applications that can be used to design user interface. Keep in mind that this is just a beta. The update also brought renewed documentation, updated CLI Xcode 10.2, and binaries for Ubuntu. Swift also became backward compatible with its previous versions. The list of languages that it is interoperable with now includes Ruby, Python, and JavaScript.

Since the release version 5.0, standard Swift libraries are integrated into every macOS, iOS, tvOS, and watchOS release. That means any app built on those platforms will be smaller, because these libraries are included. With this advancement, stable application binary interface (ABI) was also released. That allows Apple to provide support of Swift across its platforms.

Moreover, Apple provided support for all its devices: Mac, MacBooks, iPhones, iPads, Apple TV, and Apple Watch. Aside from Apples, there is already support for Linux, and even the Windows platform, as an open-source project.

2021 – Last update

Now, Swift is still in the top 10 of the most beloved technologies based on the Stackoverflow Developer Survey this year.

Stackoverflow Most Loved Languages 2021
Stackoverflow Most Loved Languages 2021
Objective-C vs Swift
Objective-C vs Swift

Pros of Using Swift for iOS Native Development

Often referred to as “Objective-C, without the C,” Swift language is in many aspects superior to its predecessor.According to the official press release, “Swift combines the performance and efficiency of compiled languages with the simplicity and interactivity of popular scripting languages.” Leaving technology details and marketing aside, let’s see what it really means from a business perspective.

Rapid development process

A clean and expressive language with a simplified syntax and grammar, Swift is easier to read and write. It is very concise, which means less code is required to perform the same task, as compared to Objective-C. Automatic Reference Counting (ARC) does all the work tracking and managing the app’s memory usage, so developers don’t need to spend time and effort doing that manually. Accordingly, it usually takes less time to build iOS apps with Swift.

A shining example of this advantage is the new Lyft app: The company completely re-wrote its iOS app using Swift. While the old codebase consisted of about 75,000 lines of code, the Swift version recreated the same functionality with less than a third of that. Moreover, the app now featured a new onboarding process: while the old one took more than a month and multiple engineers to implement, the new onboarding with Swift was completed within a week with only one engineer.

Easier to scale the product and the team

In addition to faster development time, you get a product that is future-proof and can be extended with new features as needed. Thus, Swift projects are typically easier to scale. The fact that Apple is more likely to support Swift than Objective-C should also get serious consideration for long-term investment.

Moreover, Swift allows you to add more developers to your team if needed: The onboarding is relatively fast due to the simplicity and conciseness of the codebase. The syntax of Swift is considered near to natural English, thus it offers easy readability for new team members.

Swift syntax is easy to read because of logical english function names - This is Swift!
Swift syntax is easy to read because of logical english function names

Improved safety and performance

As suggested by its name, Swift is made to be… well, swift. With a focus on performance and speed, the language was initially designed to outperform its predecessor. Namely, the initial release claimed a 40 percent increase in performance, as compared to Objective-C. Over the years, multiple benchmarks and tests conducted by individual developers have proved that. Moreover, there are many ways to optimize Swift code for even better performance.

Another of Swift’s strengths is its safety. Its strong typing system and error handling prevents code crashes and errors in production. Thus, Swift has a shorter feedback loop, allowing you to see the errors in the code instantly and fix them on the fly, greatly reducing the time and effort needed for bug fixing and eliminating the risks of deploying low quality code.

Decreased memory footprint

When you build an app, you use a lot of third-party code – reusable and often open source frameworks or libraries compiled into your app’s code. These libraries can be static and dynamic (or shared). Swift first introduced dynamic libraries to iOS when it launched. You can probably guess that static libraries are locked into code at the time you compiled them, become the part of your executable file, thus increasing its size and load time. They also can’t be automatically updated since they’re stuck in the version you compiled at. Dynamic libraries, on the other hand, exist outside of your code and are uploaded only when needed. Static libraries need to have copies in all files of your program while dynamic ones only need one.

Though it takes more time to reach for the dynamic code from the outside than call to it when it’s already included, you have a choice to keep using static libraries when you want to isolate apps that are not supposed to be shared.

Since the release version 5.0, standard Swift libraries are integrated into every macOS, iOS, tvOS, and watchOS release. That means any app built on those platforms will be smaller, because these libraries are included. With this advancement, stable application binary interface (ABI) was also released. That allows Apple to provide support of Swift across its platforms.

Interoperability with Objective-C

As Jordan Morgan, iOS developer at Buffer, wrote in his Medium post, “[…] swift is the new toy and marked as the future. Objective-C is showing its age and will, eventually, be much less prevalent. But in the here and the now, the two must learn to coexist peacefully.” Accordingly, there are two possible scenarios for using both in the same project: You either add new features in Swift to the existing Objective-C codebase, or use Objective-C elements in your new Swift project.

Either way, Swift language is perfectly compatible with Objective-C and can be used interchangeably within the same project. This is especially useful for large projects that are being extended or updated: You can still add more features with Swift, taking advantage of the existing Objective-C codebase. Thus, the porting process becomes easier and more risk-free.

Automatic memory management

Swift uses Automatic Memory Counting (ARC) – a technology aimed to add a garbage collector function that wasn’t introduced to iOS before. Languages like Java, C#, and Go use garbage collectors to delete class instances that are no longer used. They are useful to decrease your memory footprint but can add up to 20 percent to CPU. Before ARC, iOS developers had to manage memory manually and constantly manage retain counts of every class. Swift’s ARC determines which instances are no longer in use and gets rid of them on your behalf. It allows you to increase your app’s performance without lagging your memory or CPU.

Full stack potential and cross-device support

Actively pushed forward by IBM, the initiative to put the language in the cloud has been pretty successful so far. Server-side Swift integrates with most of the popular backend technologies. Just like in full stack Javascript development, using Swift on both backend and frontend of your app allows for extensive code sharing and reuse, speeding up the development process and reducing development efforts.

Moreover, Apple provided support for all its devices: Mac, MacBooks, iPhones, iPads, Apple TV and Apple Watch. Aside Apples’, there is already support for Linux, and even Windows platform, as an open-source project.

Vibrant open source community and learnability

As Apple’s Senior VP of Software Engineering, Craig Federighi, mentioned “We saw open sourcing as a critical element to make Swift reach its potential to be the language, the major language for the next 20 years of programming in our industry.”

Indeed, with the strong corporate support from Apple and IBM, Swift has quickly gained one of the most active and vibrant open source communities. The adoption trends, mentioned earlier are a case in point. Besides, Swift is the second starred language, with Go occupying the first place.

Github list of the most actively developed languages - This is Swift!
Github list of the most actively developed languages

For such a young language, Swift sure has an abundance of resources to help developers accelerate adoption. Apart from official e-books, there are tons of community guidelines, podcasts, online and even real-life courses, third-party apps, and of course Swift Playgrounds– a gamified learning experiences from Apple.

The Cons of Swift Programming Language

While there seem to be so many reasons to love Swift, the language is still far from perfect. Many developers and business owners are overly cautious when it comes to switching to the new language. There are several reasons for that.

The language is still quite young

Swift was introduced to the world in 2014, which seems to be long ago, but the language itself is really only 5 years old, compared to Objective C live since the 1980s. The recent update brought ABI stability across Apple’s platforms, backward compatibility of Swift versions, and renewed documentation. Those are huge steps toward making Swift a more mature language.

But, looking at the bigger picture, Swift is limited to native libraries, tools, and doomed to be unstable after every release.

Limited talent pool

While the Swift community is growing fast, it is still significantly smaller as compared to any other open source language. According to the latest StackOverflow Developer Survey, only 6.6 percent of the 87.354 respondents use Swift.

While there are not many Swift developers out there, even fewer of them have decent hands-on experience with the language. There is probably only one person who has such experience with Swift, but Tesla already snagged that player for their roster.

Poor interoperability with third-party tools and IDEs

Largely due to frequent updates, as mentioned above, it is often hard to find the right tools to help with certain tasks. Moreover, the official Apple IDE, XCode, lags in terms of tooling and support for Swift. Developers often report issues with syntax highlighting, autocomplete, refactoring tools, and compilers.

Lack of support for earlier iOS versions

You can only use Swift in the apps that target iOS7 and later. That said, Swift can’t be used for legacy projects running on older versions of the operating system.

However, per recent research, less than 5% of Apple devices currently run on iOS6 or earlier.

Distribution of iOS platform - This is Swift!
Distribution of iOS platform

The distribution break of iOS is not as big as on Android, which makes it a relatively small con.

Objective-C over Swift? Comparing use cases

A big part of making a choice between programming languages is your team’s experience and programming preferences. If you have developers skilled at Objective-C, having them all migrate to Swift may not be an option. Let’s unpack in which cases you might want to stick with Objective-C over Swift.

Old OS versions support

Being a new language, Swift supports only iOS 7 and macOS 10.9 or higher. If you have a reason to build apps that should run on older versions, you don’t have any other choice rather than using Objective-C.

Tight deadlines

Learning a language, even a simple one like Swift, takes time and effort that many projects lack. If you don’t have the luxury of postponing your app release until members of your team get comfortable with Swift, you should consider sticking to ObjC. In case the time allows, learning Swift would definitely be beneficial in the long run, considering that Apple doesn’t plan to stop its development.

Big project size

Swift is young, which is why smaller apps can get around updates much easier. In the cons section, we mentioned that rewriting your program with each version release may be a struggle, so until this issue is fully fixed, you wouldn’t want to risk long lists of changes.

Using C or C++ third-party frameworks

Being a superset of C, Objective-C allows you to comfortably and smoothly use C and C++ libraries. While the need to exclusively import C++ files is a rare case, you should be aware that Swift doesn’t have that supported.

Reference

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.