[1편] 목차 👈
1. Swift의 등장 배경
2. Swift의 특징
3. Objective-C와 구별되는 기능
[2편] 목차
4. Swift의 프로그래밍 패러다임
4.1. 패러다임에 대한 배경지식
4.2. 객체지향 프로그래밍 패러다임
4.3. 함수형 프로그래밍 패러다임
4.4. 프로토콜지향 프로그래밍 패러다임
🤔 Swift 문법을 한참 공부하다가.. 문득 이런 생각이 들었다. "Swift 언어가 어떤 배경으로 등장했을까?", "다른 언어와 구별되는 Swift만의 특징은 뭐지?", "Swift가 추구하는 프로그래밍 패러다임은 뭐지..? 객체지향? 절차지향? 함수형?"
이러한 질문에서 출발하여 이번 글을 "[iOS / Swift] Swift 기초" 시리즈에 추가하게되었다. Swift의 프로그래밍 패러다임은 내용이 조금 길어져 "Swift 언어에 대해서 알아보자 2편"에서 정리해보겠다.
1. Swift의 등장 배경
- 스위프트(Swift)는 애플의 iOS와 macOS 개발을 위한 프로그래밍 언어이다.
- 2014년 6월 2일 애플 세계 개발자 회의(Worldwide Developer Conference, WWDC)에서 처음 소개되었다.
- 그동안 iOS 앱 개발에 사용되던 Objective-C를 대체하고자 개발된 언어이다.
- Objective-C는 진입장벽이 높았기 때문에 개발자들의 부담을 덜어주고 손쉬운 개발환경을 만들기 위해 새로운 언어인 Swift가 등장하였다.
- 당시 안드로이드가 스마트폰 시장 점유율이 높은 상태였는데, 애플은 기술적으로만 뛰어난 언어보다는 다양한 컨텐츠를 쉽게 만들 수 있는 언어를 출시함으로써 시장 지배력을 높이고자 했다.
2. Swift의 특징
- 오브젝티브-C와 마찬가지로 LLVM으로 빌드되고 같은 런타임을 공유한다.
- 확장자는 .swift이다.
- 세미콜론이 없다.
- 변수는 항상 사용하기 전에 초기화되어야 한다. (이를 준수하지 않으면 에러가 발생한다.
- Objective-C 및 C++과 상호 운용성이 있다.
- 따라서 동일 프로젝트에 Objective-C 및 C++ 파일과 Swift 파일들이 같이 있을 수 있으며, Swift언어에서 Objective-C 및 C++ API 접근 및 사용이 매우 쉽다.
3. Objective-C와 구별되는 기능
- Objective-C에는 없었지만 Swift에 추가된 문법, 기능이 었다.
- 클로저
- 다중 리턴 타입
- 네임스페이스
- 제네릭스
- 타입 유추
- 메모리는 ARC(Automatic Reference Counting) 기법을 통해 자동으로 관리된다. 반면에 Object-C는 ARC가 해주던 자원관리를 개발자가 수동으로 관리해야 했고, Java와 C#은 가비지컬렉션으로 관리된다. (ARC와 가비지컬렉션은 비슷한듯 하지만 조금 다르다.)
<참고> ARC가 관리해주는 Reference Counting (참조 횟수 계산)은 참조 타입인 클래스(Class)의 인스턴스에만 적용된다. 구조체(Struct)나 열거형(Enum)은 값 타입으로 다른 곳에서 참조하지 않기 때문에 ARC로 관리할 필요가 없다.
- Swift 3.0에서 아래와 같은 변화가 있었다.
- ++, -- 오퍼레이터 제거
- C 스타일의 for 구문 대신 “…” 등의 범위 연산자를 이용
- 함수의 매개변수에 라벨을 붙이는 기능이 있다.
ex) "color"를 key로 가지는 값에 대해 test하겠다.
test.valueForKey("color”) ➡️ test.value(key:”color”)
Swift의 프로그래밍 패러다임은 내용이 조금 길어져 "Swift 언어에 대해서 알아보자 2편"에서 정리해보겠다.