Swift란? (장/단점)

김민석·2022년 4월 27일
0

Swift

목록 보기
1/5
post-thumbnail

오늘은 Swift언어에 대해 알아보고자 합니다.
야곰님의 스위프트 프로그래밍(3판)에 있는 내용을 참고하여 작성하였습니다.

Swift

swift란 무엇일까?
iOS, macOS, watchOS, tvOS 등 애플의 제품 개발에 활용하고자 애플에서 개발한 프로그래밍 언어 입니다. 2014 WWDC에서 최초로 공개됐으며, Objective-C의 단점을 보완하는 언어입니다.

Swift의 이점

먼저, Swift는 오픈소스로 만들어 졌기 때문에, 지속적으로 업그레이드 된다는 이점이 있습니다.
Objective-C와 완벽한 호환이 가능하기 때문에, Objective-C와 혼합하여 사용이 가능하다는 점에서 Objective-C로 작성된 써드파티 라이브러리 등을 가져다 쓸 수 있습니다.
swift는 안전한 프로그래밍을 지향하기 때문에 옵서녈 기능 및 guard 구문, 타입 통제 등을 통해 안전한 프로그래밍이 가능합니다.
또한, 스위프트는 C언어를 기반으로 한 C, C++, Objective-C와 같은 프로그래밍 언어를 대체하려는 목적으로 만들어졌기 때문에 빠릅니다.

함수형 + 프로토콜 지향

기존의 C언어는 명령형 프로그래밍 패러다임(비슷한 의미로 절차적 프로그래밍 패러다임)이고, C++, 자바 등의 언어는 명령형 프로그래밍 펄다임과 객체지향 프로그래밍 패러다임을 동시에 차용한 다중 프로그래밍 패러다임 언어입니다.

Swift는 함수형 프로그래밍 패러다임과 프로토콜 프로그래밍 지향 프로그래밍 입니다.

함수형 프로그래밍 패러다임

함수형 프로그래밍 패러다임은 최근 프로그래밍 패러다임의 대세입니다.
가장 큰 장점으로는 대규모 병렬처리 가 쉽습니다.

함수형 프로그래밍 패러다임은 프로그램이 상태 변화 없이 데이터 처리를 수학적 함수 계산으로 취급하고자 하는 패러다임 입니다. 함수형 프로그래밍은 함수에 전달된 인자 값만 결과에 영향을 주므로 상태 값을 갖지 않고 함수만으로 동작합니다. 따러서 프로그램이 동작하는 흐름에서 상태가 변하지 않으면 함수 호출이 각각 상호 간섭 없이 실행되므로 병렬처리할 때 부작용이 없습니다.

또, 함수형 프로그래밍의 큰 특징은 함수를 일급 객체로 다룬다는 점입니다.
일급 객체가 될수 있는 특징으로는 다음과 같습니다.

  • 전달인자로 전달할 수 있다.
  • 동적 프로퍼티 할당이 가능하다.
  • 변수나 데이터 구조 안에 담을 수 있다.
  • 반환 값으로 사용할 수 있다.
  • 할당될 때 사용된 이름과 관계없이 고유한 객체로 구별할 수 있다.

기존 정수, 실수 등과 같은 타입은 거의 모든 언어에서 일급 객체의 조건을 갖지만, 함수는 그렇지 않습니다.
스위프트의 함수는 이 조건을 모두 충족할 수 있기에 일급 객체로 취급됩니다.

함수형 프로그래밍 패러다임 장점

  • 여러 가지 연산 처리 작업이 동시에 일어나는 프로그램을 만들기 쉽다.
  • 멀티 코어 혹은 여러 개 연산 프로세서를 사용하는 시스템에서 효율적인 프로그램을 만들기 쉽다.
  • 상태변화에 따른 부작용에서 자유로워지므로 순수하게 기능 구현에 초점을 맞추어 설계ㅅ할 수 있다.

때에 따라서 적절하게 객체지향과 함수형 프로그래밍을 섞어서 프로그램을 작성한다면 필요한 기능에 맞게 최적의 성능을 발휘할 수 있고, 생산성도 극대화 할 수 있는 프로그램을 작성할 수 있습니다.

프로토콜 지향

프로토콜 지향 프로그래밍은 참조 타입인 클래스의 인스턴스보다 값 타입을 더 효율적으로 사용하며, 오류를 줄일 방안이라고 소개했습니다.

스위프트에서는 구조체와 열거형에 기존의 클래스에서 구현할 수 있었던 캡슐화, 추상화, 접근 제어 등의 기능을 모두 구현할 수 있습니다. 또한 프로토콜에 익스텐션을 활용할 수 있기 때문에 프로토콜 지향 프로그래밍이 가능해졌습니다. 이는 참조 타입에서 참조 문제에서 더 자유롭고, 다중 상속이 불가능한 한계를 뛰어넘을 수 있으며, 더 나은 추상화 메커니즘을 구현할 수 있는 말과 동일합니다.

오늘은 Swift 언어에대해 얕게 알아보았는데 지금은 이정도로만 이해하고 직접 코드를 작성하며 위에 다뤘던 내용을 하나씩 이해해 나가면 좋을 것 같습니다.

profile
안녕하세요 95년생 김민석입니다

0개의 댓글