목차
- Swift란?
- 더욱 빠른 성능 Fast
- 더욱 안전하게 Safe
- 세련된 표현 Expressive
- 다중 패러다임
- 명령형 객체지향 프로그래밍
- 함수형 프로그래밍
- 프로토콜 지향 프로그래밍
Swift란?
Swift 는 2014년 WWDC를 통해 처음 소개되었습니다. 기존 애플 운영체제용 언어인 Objective-C 와 함께 공존할 목적으로 만들어졌으며, 빠르고 안전하며 세련된 표현을 지원하는 프로그래밍 언어라는 점을 강조하고 있습니다.
It’s a safe and fast programming language that combines the best in modern language thinking with wisdom from a diverse open source community.
더욱 빠른 성능 Fast
- Swift는 C언어를 기반으로 한 C++, Objective-C 와 같은 프로그래밍 언어를 대체하기 위해 작성된 언어입니다.
- 따라서 C 기반 언어들을 사용했을 때와 같은 성능을 유지해야 했습니다.
- 실행 속도의 최적화 뿐만 아니라 컴파일러를 지속적으로 개량해 컴파일 성능을 향상시키고 있습니다.
더욱 안전하게 Safe
- Swift는 안전한 프로그래밍을 지향합니다.
- 개발 도중 발생할 수 있는 프로그래머의 휴먼 에러를 엄격한 문법을 통해 방지합니다.
- 강제적이라 느껴질 수도 있지만, 문법적 제재는 실수를 줄이는데 도움이 됩니다.
- 옵셔널, guard문, 오류처리, 강력한 타입 통제 등을 통해 안전한 프로그래밍을 구현합니다.
- 변수는 사용전에 항상 초기화하고, 배열 및 정수에 대한 오버플로우 검사가 수행되며 메모리는 자동으로 관리됩니다.
세련된 표현 Expressive
- Swift는 그간 발전된 프로그래밍 언어를 모두 참고하여 사용하기 편하고 보기 좋은 문법을 구사하려 노력했습니다.
- 개발자들이 원하던 현대적이고 세련된 문법을 구현했습니다.
- Swift는 다중 패러다임 프로그래밍 언어입니다.
다중 패러다임
- Swift는 여러가지 프로그래밍 패러다임을 채택한 다중 패러다임 프로그래밍 언어입니다.
- 명령형과 객체지향 프로그래밍 패러다임을 기반으로 한 함수형 프로그래밍 패러다임과 프로토콜 지향 프로그래밍 패러다임을 지향합니다.
명령형 객체지향 프로그래밍 패러다임
생략
함수형 프로그래밍 패러다임
함수형 프로그래밍이란 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임입니다. 명령형 패러다임에선 상태를 바꾸는 것을 강조하는데, 함수형 프로그래밍 패러다임에선 함수의 응용을 강조합니다.
명령형 프로그래밍에서도 함수를 쓰지만 함수형 프로그래밍에서의 함수와는 차이가 있습니다.
명령형 프로그래밍에선 함수를 통해 프로그램의 상태를 변화시키거나 사용자에게 입력 값을 받는 등 Side Effect가 발생하지만 함수형 프로그래밍에서의 함수는 수학적 함수와 비슷하게 항상 같은 입력값이 주어지면 같은 결과를 도출하고, 상태에 영향을 주거나 받지 않아 Side Effect로 부터 안전합니다. 이러한 purely functional programming의 장점은 Side Effect를 제거해서 프로그램이 더 적은 버그를 가지고, 디버깅하고 테스트하기 쉽다는 것입니다.
함수형 프로그래밍 패러다임은 최근 프로그래밍 패러다임의 대세로 따오르고 있는데, 가장 큰 장점은 대규모 병렬처리가 굉장히 쉽다는 것입니다. 그 이유는 프로그램이 동작할 때 상태가 변하지 않으면 함수 호출이 서로 간섭 없이 배타적으로 실행되기 때문에 병렬처리할 때 부작용을 크게 줄일 수 있기 때문입니다.
함수형 프로그래밍의 큰 특징 중 하나는 함수를 일급 객체(First-class Citizen)로 다룬다는 점입니다. 일급객체는 아래의 조건을 만족해야 일급 객체라고 정의합니다.
- Argument로 전달할 수 있다.
- 동적 프로퍼티 할당이 가능하다.
- 변수나 데이터 구조 안에 담을 수 있다.
- 반환 값으로 사용할 수 있다.
- 할당할 때 사용된 이름과 관계없이 고유한 객체로 구별할 수 있다.
Swift의 함수는 위의 조건을 모두 충족하기 때문에 함수가 일급 객체로 취급됩니다. 함수가 일급 객체가 된다는 것은 다양한 종류의 함수를 호출, 전달, 반환하는 것만으로도 프로그램을 구현할 수 있다는 것입니다.
프로토콜 지향 프로그래밍 패러다임
2015년 WWDC에서 발표된 Swift 2.0에 추가된 프로토콜 익스텐션은 Swift가 프로토콜 지향 언어가 되게끔 했습니다. Swift는 대부분의 타입이 클래스(참조 타입)가 아닌 구조체(값 타입)로 구현되어 있습니다. 이 상속이 불가능한 구조체를 공통 기능을 가질 수 있도록 하는게 프로토콜과 익스텐션 입니다.
기존 클래스에서 구현할 수 있었던 캡슐화, 추상화, 접근 제어 등의 기능들을 구조체와 열거형에서 구현할 수 있게 되었고, 클래스의 인스턴스 보다 값 타입을 사용함으로서 더 나은 효율성과 오류 최소화, 참조로부터 자유로움, 더 나은 추상화 매커니즘을 구현할 수 있게 되었습니다.
참고링크
https://yoojin99.github.io/app/Swift_%EC%8A%A4%EC%9C%84%ED%94%84%ED%8A%B8/
https://didu-story.tistory.com/m/144
'iOS' 카테고리의 다른 글
SwiftData 알아보기 (1) | 2024.05.24 |
---|---|
InjectionIII 라이브러리를 적용하면서 마주한 이슈들 (0) | 2024.05.02 |
XCode15+ Image Color Assets 관리 방법의 변화 (0) | 2024.03.05 |
XCode Archive 시 has no member Error 발생 (0) | 2024.03.04 |
MPNowPlayingInfoCenter 제어센터 초기세팅 및 갱신하는 방법 (0) | 2023.05.16 |