본문 바로가기
IT공부/IOS개발

스위프트(Swift)란 무엇인가? 배경과 특징

by 놀고싶은 노자 2021. 5. 19.

iOS 앱 개발을 할 수 있는 언어로는 Objective-C와 Swift가 있다.

안드로이드 앱 개발을 하기 위한 Java 와 Kotlin과 같다. 

본인은 현업에서 Swift를 통해 iOS앱을 개발하고 있기 때문에 스위프트에 관한 글을 작성하고자 한다. 

오늘은 그럼 Swift란 무엇인지에 대해 알아보도록 하겠다. 

 

 

스위프트? Swift!

스위프트는 애플의 iOS와 macOS를 위한 프로그래밍 언어로, 2014년 6월 12일 처음 소개되었고, 9월 정식 발표되었다. 기존의 애플 운영 체제용 언어는 Object-C였으며, 이와 같이 사용하기 위해 만들어졌다.

따라서 Object-C와 동일하게 LLVM(컴파일러)를 통해 빌드가 되고, 같은 런타임을 공유한다.

Object-C에는 없던 기능이 추가되었다.(클로저, 다중 리턴 타입, 네임스페이스, 제너릭, 타입 유추 등)

현재에는 애플이 오픈소스로 공유하면서 애플 플랫폼 외에 다양한 플랫폼에서 사용될 수 있다고 한다. 

 

스위프트의 언어적 특성

애플이 처음 공개했을 때, 스위프트의 특징을 Safe, Modern, Powerful이라고 했지만, 오픈소스로 전환되면서 Safe, Fast, Expressive라고 정정하였다.

 

1. 안전성 

스위프트는 안전한 프로그래밍을 지향하는데, 프로그래머가 저지를 수 있는 실수를 엄격한 문법을 적용하여 미연에 방지하고자 노력했다. 옵셔널이라는 기능을 비롯하여, guard구문, 오류처리, 강력한 타입 통제 등을 통해 스위프트는 안전성을 구축하고 있다. 

 

2. 신속성

C언어를 기반으로 한 C, C++, Object-C와 같은 프로그래밍 언어를 대체하려는 목적으로 만들어졌기 때문에, C와 비슷한 수준의 성능을 유지하는데 초점을 맞추어 개발되었다. 실행 속도의 최적화뿐만 아니라, 컴파일러를 지속적으로 개량하여, 더 빠른 성능을 구현해 가고 있다. 

 

3. 표현성

스위프트는 좀 더 사용하기 편하고, 보기 좋은 문법을 구현하려고 노력했다. 그렇다고 한다. ... 

 

스위프트 프로그래밍 패러다임

스위프트는 여러 가지 프로그래밍 패러다임을 차용한 다중 패러다임 프로그래밍 언어이다. 

이에 대해 간단히 알아보자!

 

1. 객체지향

컴퓨터 프로그램을 명령어의 목록으로 보는 기존의 명령형 프로그래밍 패러다임의 시각에서 벗어나 여러 개의 독립된 단위인 객체의 모임으로 파악하고자 하는 시각이다. 

따라서, 프로그램을 유연하고 쉽게 변경할 수 있도록 작성할 수 있어 대규모 소프트 웨어 개발에 사용되기 용이하다. 

또한 유지 보수가 간편해 지는 장점도 있다. 

 

2. 함수형

함수형의 장점은 대규모 병렬처리가 쉽다는 점이다. 

프로그램의 상태 변화 없이 데이터 처리를 수학적 함수 계산으로 취급하고자 하는 패러다임이다. 

따라서 값이나 상태의 변화에 집중했던 것과는 달리 함수 자체의 응용을 중요하게 여긴다. 

머 일단 그렇다는데 이해하기가 어렵다... ㅎ;;

 

함수형 패러다임으로 프로그램을 작성할 경우 

여러 가지 연산 처리 작업이 동시에 일어나는 프로그램을 만들기 쉽다고 한다. 

그리고, 멀티 코어 혹은 여러 개 연산 프로세서를 사용하는 시스템에서 효율적인 프로그램을 만들기 쉽다. 

그 외에도, 상태변화에 따른 부작용에서 자유로워지므로 순수하게 기능 구현에 초점을 맞출 수 있다. 

 

3. 프로토콜 지향

프로토콜 지향은 참조 타입인 클래스의 인스턴스보다 값 타입을 더 효율적으로 사용하며, 오류를 줄일 수 있다고 한다. 

스위프트에서는 구조체와 열거형에 기존의 클래스에서 구현할 수 있었던 캡슐화, 추상화, 접근 제어 등의 기능을 모두 구현할 수 있다. 더불어 프로토콜에 익스텐션을 활용할 수 있기 때문에 프로토콜 지향 프로그래밍이 가능해졌다고 한다. 

결국, 다중상속이 불가능한 한계를 뛰어넘어, 더 나은 추상화 메커니즘을 구현할 수 있는 것이다. 

 

이상 스위프트의 배경과 특징을 알아보았습니다. 

열심히 공부하겠습니다!!