What is Swift? Features, advantages, and syntax basics
Tags: programming, ios, development, swift
Published: 2021-10-27 18:27:27

We’re only a couple of months away from the new year, which means it’s time to start looking ahead to the tech trends that will dominate the software industry in 2022. As the new year approaches, we want to help you get familiar with upcoming trends so you can be prepared and start taking your skills to the next level. Today, we’ll discuss ***Swift***.

The Swift programming language is a general-purpose, open-source programming language designed by Apple. The language is influenced by Python, making it fast and intuitive. Swift is mainly used for native iOS and macOS development. Many popular apps including LinkedIn, Lyft, and WordPress are written in Swift. If you’re interested in iOS development, Swift is a great language to learn. Let’s learn more about this popular language!

**We’ll cover**:

* [What is Swift?](#whatisswift)
* [Why should I learn Swift?](#whylearnswift)
* [Swift vs Objective-C](#swiftvsobjectivec)
* [Introduction to Swift syntax](#swiftsyntax)
* [Wrapping up and next steps](#nextsteps)

<a name="whatisswift"></a>

## What is Swift?

Swift is a multi-paradigm, general-purpose, open-source programming language for iPadOS, macOS, tvOS, watchOS, and **iOS development**. It was created by Apple in 2014 to give developers a powerful language to develop iOS apps. According to swift.org, the language was designed to be **safe, fast, and expressive**. It’s intended to be a replacement for C-based languages. The Swift language is constantly evolving, and the community continues to grow. Swift source code can be found on GitHub, making it easy for anyone to access the code.

### Swift features

* **Powerful generics**: Generics allow you to write flexible, reusable functions and types that can work with any type. 
* **Native error handling**: Swift provides support for throwing, catching, propagating, and manipulating errors at runtime.
* **Structs and classes**: Swift allows you to define a structure or class in a single file, and the external interface is made available for other code to use.
* **Protocol extensions**: Swift allows you to define behavior on protocols themselves, rather than in global functions or individual conformances.
* **Memory safety**: Swift automatically manages memory and prevents unsafe behavior from happening in your code. 
* **Memory management**: With Automatic Reference Counting (ARC), Swift tracks and manages our app’s memory usage. This means we don’t need to worry about memory management ourselves.
* **Flexible enumerations**: Swift enums support pattern matching and can have payloads.
* **Package manager**: The Swift package manager is a cross-platform tool we can use to build, run, test, and package Swift libraries and executables.
* **Debugging**: Swift uses the LLDB debugger, which provides you with a REPL and debugger to enable integrated debugging, consistent formatting, failure recovery, and expression evaluation.
* **Source and binary compatibility**: The latest version of Swift has binary compatibility for apps. Swift libraries are included in every operating system release, so your apps will use the latest version of the library in the OS, and your code can run without recompiling.
* **Tuples**: Tuples allow us to create and share value groupings. We can use tuples to return multiple values as a single value.
* **Closure syntax**: Swift has a lightweight closure syntax, which has optimizations to enable a clutter-free syntax and clear style.

<br>
 
<a name="whylearnswift"></a>

## Why should I learn Swift?

Swift was designed to be **easy to learn** and easy to use. Apple created the language with new coders in mind. Whether you’re still in school, exploring a new career path, or wanting to learn how to code, Swift was created to be a simple and **intuitive** first language to learn. If you’re new to coding, Swift Playgrounds is an iPad app that makes it easy to get started with Swift coding.

Once you learn Swift, you’ll be an appealing candidate for potential employers. Swift developers are in **high demand**. According to Apple, the company has created around **two million jobs** in the United States. According to Indeed, the average salary for an iOS developer in the U.S. is **$116,804**. If you want to get into app development, Swift is a smart language to learn.

Let’s take a look at some of the pros and cons of the Swift programming language.

### Swift pros

* **Fast and powerful**: Swift uses LLVM compiler technology and its standard library makes writing code intuitive and efficient.
* **Modern**: Swift APIs are easy to read and maintain. Inferred types make your code cleaner and less error-prone. Modules eliminate headers and provide namespaces.
* **Easy to learn**: Swift was designed with beginner programmers in mind. You can use Swift Playgrounds for iPad to get started with Swift code, and you can access courses to learn how to build Xcode apps.
* **Safe**: Swift has a variety of safety features, such as automatic memory management, value types, and variable initialization. In Swift, objects can never be `nil`, and the Swift compiler will stop you if you try to use a `nil` object. These features help prevent runtime crashes.
* **Cross-platform**: Swift supports all Apple platforms, Linux, Windows, and Ubuntu.
* **Dynamic libraries**: Dynamic libraries exist outside of your code and are uploaded when needed. Libraries are integrated into every device release.
* **Large community**: Swift has one of the most active and rich open-source communities. Also, there are a lot of resources to help you learn the language.

### Swift cons

* **Relatively new language**: Swift is still a young language. This means that some of its capabilities and resources aren’t as robust as other programming languages.
* **Weak cross-platform support**: While Swift does support all Apple platforms, Linux, and Windows, it works best for native iOS development.
* **Frequent updates**: Swift is a newer language and has frequent updates. This can make it hard to find the right tools to help with certain tasks. 
* **IDE support**: Xcode, the official Apple IDE, falls short in certain support areas, including syntax highlighting, autocomplete, refactoring, and compiling.

<br>
 
<a name="swiftvsobjectivec"></a>

## Swift vs Objective-C

Objective-C is a general-purpose, object-oriented programming language. It was the primary programming language used for OS X and iOS development before Swift came along in 2014. It combines **features of C and Smalltalk**. After the creation of Swift, Objective-C began to decline in use and popularity, although existing apps written in Objective-C will still need to be maintained.

*So, what makes Swift the better choice?*

First, it’s important to note that Swift is not the direct successor to Objective-C. Both languages have different capabilities and can be used together for mobile app development. Let’s look at a comparison of the two languages.

### Swift

* With Swift, you can develop in Xcode, Swift Playgrounds, Cocoa Touch, and more.
* As of now, Swift requires at least iOS 7. This means that iPhones and iPads developed before 2014 won’t be compatible with your apps. 
* Swift is a modern, human-friendly language with a simple syntax, which means that the speed of coding is faster.
* According to Apple, Swift is 2.6 times faster than Objective-C.
* Swift has rich documentation that is constantly updated.
* The demand for Swift developers is increasing.

### Objective-C

* With Objective-C, you mainly develop in Xcode.
* Your apps will run on any available version of iOS.
* Using Objective-C typically results in a decreased speed of coding because the language isn’t as intuitive and human-friendly.
* Objective-C is 2.6 times slower than Swift, and it takes longer to write because of its more complex syntax.
* Objective-C has rich documentation that isn’t updated frequently.
* The demand for Objective-C developers is decreasing.

Overall, Swift is a more desirable language to choose because it’s safer, faster, more intuitive, and interactive. Swift has **Objective-C interoperability**, which means that Swift code can live alongside existing Objective-C files. With Swift, you’ll also have complete access to Objective-C APIs.
<br>

<a name="swiftsyntax"></a>

## Introduction to Swift syntax

Swift is known for its simple and intuitive syntax. Let’s take a look at some of the Swift syntax basics:

### Hello World

In Swift, a `Hello World!` program is simple. It can be done in one line, and you don’t need to import any libraries or additional functionalities. Swift also doesn’t require semicolons at the end of statements.

```
print("Hello World!)

=> Hello World!
```

### Variables and constants

In Swift, you use `var` to make a variable and `let` to make a constant. Variables and constants need to have the same type as the value you want to assign to them.

```
var myVariable = 10

let myConstant = 10
```

You don’t have to explicitly write the type. If you provide a value when creating a variable or a constant, the compiler can infer what type it is. For example, the compiler will infer that `ourVariable` is an integer because its value is set to an integer.

```
ourVariable = 25
```

If you want to convert a value to a different type, make an explicit instance of the desired type.

```
let age = 3

let myCatIs = "My cat is " + String(age)

print(myCatIs)

=> My cat is 3
```

There’s an easier way to include an integer in a string. You put the value in parentheses, and then put a backslash before the parentheses.

```
let cats = 5

let dogs = 10

let catsAmount = "I have \(cats) cats."

let dogsAmount = "I have \(dogs) dogs."

let petsAmount = "I have \(cats + dogs) pets."

print(petsAmount)

=> I have 15 pets.
```

### Arrays and dictionaries

You can create arrays and dictionaries using brackets. You access elements by putting the index or key in the brackets. Your array will grow automatically as you add new elements.

```
var groceryList = ["eggs", "yogurt", "cheese"]

groceryList[1] = "bread"
 
groceryList.append("coffee")

print(groceryList)

=> ["eggs", "bread", "cheese", "coffee"]
```

<a name="nextsteps"></a>

## Wrapping up and next steps

Congrats on taking your first step with Swift! Swift is a general-purpose, open-source programming language mainly used for native iOS and macOS development. Many of the apps on the app store are written in Swift. Swift is growing in popularity, so it’s a good time to learn the language. We covered some of the basics today, but there’s still so much more to learn about Swift programming, such as:

* Property wrappers
* Constants
* SwiftUI

To get started learning these concepts and more, check out Educative’s course [**Swift Programming for Mobile App Development**](https://www.educative.io/courses/swift-programming-mobile-app). In this hands-on course, you’ll cover topics ranging from arrays, dictionaries, integers, object-oriented programming, error handling, and more. By the end, you’ll have the foundational knowledge you need to begin diving deeper into Apple-based app development.
 
*Happy learning!*
<br>
 
### Continue learning about app development

* [How to develop your first Android app with Kotlin](https://www.educative.io/blog/android-development-app-kotlin)
* [Java vs JavaScript: What’s the difference?](https://www.educative.io/blog/java-vs-javascript)
* [Build modern, offline apps with Progressive Web Apps](https://www.educative.io/blog/build-modern-apps-progressive-web-apps)