본 포스팅은 '스위프트 프로그래밍 (3판)' 도서와 레퍼런스를 참고하여 Swift 프로그래밍에 대해 정리하는 글입니다.
혹시 틀린 부분이 있거나 질문이 있으시다면 언제든지 댓글 달아주시면 정말 감사하겠습니다 :)
1. 스위프트란 무엇인가?
- 안전을 우선으로 하는 프로그래밍 패턴 지향하는 언어
- ARC(Automatic Reference Counting, 자동 참조 카운팅) 지원하므로 쉽게 메모리를 관리할 수 있음
* arc 공식문서 : https://docs.swift.org/swift-book/documentation/the-swift-programming-language/automaticreferencecounting/
ARC는 클래스 인스턴스가 더 이상 필요하지 않을 때 메모리를 자동으로 해제하여 메모리 관리를 도와주는 친구!
- Objective-C의 동적 객체 모델과 매개변수 형식을 도입한 언어
2. 스위프트의 언어적 특성
스위프트의 언어적 특성은 대표적으로 Safe, Fast, Expressive 키워드로 표현할 수 있다.
1) Safe (안전성)
스위프트는 안전한 프로그래밍을 지향합니다. 프로그래머의 실수를 엄격한 문법을 적용해 미연에 방지하고자 하는 특성이 있습니다.
대표적으로 옵셔널, guard 구문, 오류처리, 강력한 타입 통제 가 있습니다.
2) Fast (신속성)
C 언어 수준과 동등한 성능을 유지하는 데 초점을 맞춰 개발되었으므로, 실행 속도가 최적화 되어있으며
컴파일러를 지속적으로 개량해 더 빠른 컴파일 성능을 구현해나가고 있습니다.
3) Expressive (더 나은 표현성)
프로그래밍 언어의 각 장단점을 참고해 좀 더 사용하기 편하며 보기 좋은 문법을 구현하고자 노력
ex) 함수형, 프로토콜 프로그래밍
3. 스위프트의 패러다임
스위프트가 지향하는 패러다임은 함수형, 프로토콜 프로그래밍 패러다임입니다.
1) 함수형 프로그래밍
- 상태 변화 (프로퍼티 값의 변화) 없이, 데이터 처리를 수학적 함수 계산으로 취급하고자 하는 프로그래밍
- 객체지향 프로그래밍은 인자, 포인터 등의 값에 영향을 주지만 / 함수형 프로그래밍은 함수에 전달된 인자 값만 영향을 주므로
순수하게 함수만으로 동작함
-> 인자 값만 같다면 일정하게 같은 결과를 도출한다는 장점이 있음
-> 순수하게 기능 구현에 초점을 맞추어 설계할 수 있음
- 위 장점으로 인해, 서로의 간섭 없이 함수 호출이 배타적으로 실행되므로 병렬처리할 때의 부작용이 없다는 큰 장점이 존재
- 함수를 일급 객체로 다룸 / 즉, 함수를 호출, 전달, 반환하는 동작만으로 프로그램을 구현할 수 있음
❓일급 객체란
그 자체로 하나의 타입으로 취급하는 객체이기 때문에
- 인자(argument)로 전달 가능하고, 함수의 반환값으로 사용할 수 있다.
- 고차 함수인 필터, 맵, 플랫맵, 리듀스 등의 기능 사용 가능
2) 프로토콜 프로그래밍
- 2015년 Swift 2.0 버전이 발표되면서 추가된 프로토콜 익스텐션이 프로토콜 프로그래밍을 지향하는 데에 큰 공헌
- 참조 타입의 참조 문제에서 자유로워지고, 다중상속이 불가능한 한계를 뛰어넘고, 더 나은 추상화 메커니즘 구현 가능
'🐦 Swift' 카테고리의 다른 글
[Swift] 변수와 상수, 의미 있는 이름 (0) | 2023.05.09 |
---|---|
[Swift] 옵셔널, 옵셔널 바인딩, 강제 추출, nil-coalescing (0) | 2023.03.20 |
[Swift] 함수 (0) | 2023.03.15 |
[Swift] 흐름제어 (0) | 2023.03.14 |
[Swift] 데이터 타입 기본 (0) | 2023.03.08 |