Email: sales@altexsoft.com

Phone: (877) 777-9097

Request for Proposal
The good and the bad of Swift programming language

The Good and the Bad of Swift Programming Language

Reading time: 14 minutes

Recent loss of market share shows that iOS seems to be having a hard time. Nevertheless, as of July 2019, iOS has been installed on 22.1 percent of all mobile devices, being the second most popular mobile platform. And that means there are still a lot of people bound to Apple devices for their business and personal needs.

If you are one of those smart business owners following the iOS app development path, probably the most important decision you will make is choosing the right tech stack for your product. If you decide to go for native development instead cross-platform solutions, you still have to decide which language to use: the good old Objective-C or brand-new Swift.

What is Swift and why should you use it?

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.

Keep reading to learn more about the technology or visit the following links if you want to jump right into development with Swift:

Download and read documentation on Official Swift Community website

Download Xcode IDE to get started with Swift on macOS

Visit Swift repository on GitHub to contribute or dive into technical details of the language use

Learn Swift via interactive Swift Playgrounds on iPad

Connect with fellow developers by asking and answering Swift questions on StackOverflow

Watch the presentation of the latest Swift 5.0 at WWDC to discover new features

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:

Most loved technologies, 2015 StackOverflow Developer Surve

Stackoverflow survey results on most loved technologies

Source: 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.

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. To get an in-depth comparison of Swift and Objective C, check our separate article. 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

Source: extremetech.com

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.

Apple WWDC 2014 presentation

Image source – AppleInsider Live Blog

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, mentionedWe 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 rate of the most starred languages

Github list of the most actively developed languages

Source – github.com

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.

ios versions adoption trends

Distribution of iOS platform

Source – david-smith.org

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.

Learning to code in Swift

After deciding if Swift is good or bad for you, you may ask how to learn it. As any open-source project, Swift has increased in both platforms and people to learn the language from. We’ve mentioned some of them, but let’s gather the information concerning those resources here.

The first place you should look is Apple’s resources:

App Development with Swift is a book explaining basics and advances of the language, and serves as a required theoretical base, if you want to become a Swift developer.

Intro to App Development with Swift will teach you how to actually create an application with Swift as a practical course.

Swift Playgrounds is a development environment integrated into Xcode on MacOS, or it can be installed as an app on the iPad. It is basically a training program that will teach you interactively how to code stuff with Swift.

There are also alternative places to learn the language. Most links to useful resources are gathered on the Hacking with Swift page on how to learn Swift for free. There you will find manuals, videos, podcasts, web courses, and their own resources on the topic. The creator of Hacking with Swift is Paul Hudson, who posts news and guides on Swift on his YouTube channel, so it might come in handy as well.

Concerning the latest version of Swift, consider running through official guides on the stable 5.1 version. The last but not least important stop on your trip might be Swift documentation, which has a structured view on libraries, data models, and language interoperability.

IDEs to be used with Swift

IDE (Integrated Development Environment) is the main point of interaction with the language. Here we’ll discuss IDEs that can be used for Swift.

Xcode. As mentioned above, working with Swift using the native Apple IDE Xcode isn’t always the best choice. In most cases, Xcode will be enough for Swift engineering. It has a convenient interface, autocompletion support, and many other features that make Swift engineering smooth. However, if you also need to use HTML, CSS, and JavaScript, Xcode will turn into a simple text editor lacking instruments available with Objective-C and Swift.

Atom. Atom text editor and IDE was created by GitHub. It shines if you combine plain iOS development with other platforms and languages. While Atom itself is basic, it has a great number of open source packages built by the GitHub community which will allow you to customize the IDE for cross-platform and versatile development with autocompletion, advanced navigation, and other useful features.

AppCode. This IDE for iOS and macOS developers was designed by JetBrains. The product is aimed at improving development performance by providing some refactoring tools similar to those available in Android Studio. And this perhaps is one of the main reasons why you might consider AppCode over Xcode. Unfortunately, AppCode still has limited functionality with Swift compared to Xcode, lacking storyboards, app validation, and submission. On top of that, AppCode comes with a subscription fee.

While you can also consider Visual Studio and some other IDEs for Swift these three are on the list to check first as each one of them provides unique benefits of working with this language.

Can Swift Be the Future of iOS Development?

Despite its tender age and the attendant controversy, Swift already has a number of prominent success stories. Some of the companies that chose the new language are Lyft, LinkedIn, Coursera, Pandora, Vimeo, Twitter, Fitbit, and Groupon. Moreover, Facebook and Uber are reported to have shown significant interest in Swift.

Swift has become a more mature language with the latest update, but there are a lot of things to fix. Apple is creating its own ecosystem with a stable ABI over its platforms, but it still lacks tooling and support for earlier versions, which might be fixed in the next releases. Thus, Swift adoption will continue to grow, which soon might lead to a complete displacement of Objective-C as the leading first-class language for iOS mobile application development.

For business owners, it is crucial to be ready for any changes the market might impose. Thus, preparing to switch to the new language with minimum effort and at a reasonable cost should be one of the key strategies for the near future.


This post is a part of our “The Good and the Bad” series. For more information about the pros and cons of the most popular technologies, see the other articles from the series:

The Good and the Bad of Angular Development

The Good and the Bad of Serverless Architecture

The Good and The Bad of Xamarin Mobile Development

The Good and the Bad of JavaScript Full Stack Development

The Good and the Bad of Node.js Web App Development

The Good and the Bad of ReactJS and React Native

The Good and the Bad of Selenium Test Automation Tool

The Good and the Bad of Android App Development

2 Comments

Comments

avatar
Sort by: newest | oldest | most voted
Anonymous
Mar 4, 2019
Anonymous

“Moreover, Facebook and Uber are reported to have shown significant interest in Swift.”
Facebook is most definitely, in 2019, an Objective C shop and that isn’t changing soon.

Anonymous
Oct 30, 2018
Anonymous

Hello,
thank you for this very informative article..This will be very helpful for all who want to make сareer in Android ..You explain all the thing about languages very well ..I used to follow you blog since long time.looking forward for some more blogs from you..Thank you