🐦 Swift

[Swift] 스위프트

dev_zoe 2023. 3. 7. 16:48
반응형

본 포스팅은 '스위프트 프로그래밍 (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 버전이 발표되면서 추가된 프로토콜 익스텐션이 프로토콜 프로그래밍을 지향하는 데에 큰 공헌

- 참조 타입의 참조 문제에서 자유로워지고, 다중상속이 불가능한 한계를 뛰어넘고, 더 나은 추상화 메커니즘 구현 가능

 

반응형