스위프트의 프로그래밍 패러다임

개요


프로그래밍 패러다임은 굉장히 많은 분류로 나눌 수 있다.


프로그래밍 패러다임 설명

프로그래밍 패러다임 종류와 예시


이 많은 분류들 중에서 스위프트가 채택한 프로그래밍 패러다임은 무엇인지 알아보겠다.




스위프트의 프로그래밍 패러다임


우선 스위프트는 자바나 파이썬처럼 다중 패러다임 프로그래밍 언어이다.

명령형 프로그래밍, 객체지향 프로그래밍, 함수형 프로그래밍, 프로토콜 지향 프로그래밍 이렇게 4가지의 패러다임을 채택했다.

명령형과 OOP를 기반으로 한 함수형, 프로토콜 지향형이기 때문에 공부를 할 때 중점을 둘곳은 후자라고 볼 수 있다.

Swift는 선언형 프로그래밍 방식이다. 모던, 고급언어들은 거의 선언형 프로그래밍 언어이다.




명령형 프로그래밍


프로그래밍 패러다임은 크게 봤을 때 명령형과 선언형으로 나누어진다.

명령형 프로그래밍과 선언형 프로그래밍은 서로 반대되는 개념이다.

명령형 프로그래밍 안에 절차적 언어와 객체지향 언어가 있는데

절차적 언어는 간단하게 C언어라고 생각하면 된다.

명령형은 명시적인 명령 순서에 따라서 상태를 업데이트 하는 프로그래밍을 하는 것이다.




객체지향 프로그래밍


컴퓨터 공부를 하다보면 OOP라는 말은 한번쯤은 들어봤다. 최근에는 선언형 프로그래밍 요소들도 지원하지만 많이들 사용하는 자바가 대표적인 OOP언어라고 불린다.

객체지향 프로그래밍이란 컴퓨터 프로그램을 명령어의 나열의 실행이 아닌 각각의 독립된 객체들끼리의 교류로 바라보는 방식이다.

실제 세계의 모습을 프로그램에 반영하고자 한다.



객체지향 프로그래밍 특징


추상화, 상속, 다형성.



객체 VS 인스턴스


인스턴스는 실제로 메모리에 할당되어 동작하는 모양을 갖춘 것을 말한다.

객체는 그중에서 클래스의 인스턴스만을 지칭하며 스위프트에서는 객체라는 말보다는 구조체의 인스턴스, 클래스의 인스턴스등으로 인스턴스라는 용어만 사용한다.




함수형 프로그래밍


선언형 프로그래밍의 한 종류로 모던 프로그래밍 언어의 트렌드로 떠오르고 있다.

함수형 프로그래밍은 프로그램이 상태의 변화 없이 데이터 처리를 수학적 함수 계산으로 취급하는 방식이다.

함수를 일급 개체로 다룬다. 그렇기 때문에 함수를 리턴하고 매개변수로 전달할 수 있다.

명령형 프로그래밍은 값이나 상태의 변화에 중점을 뒀다면 함수형 프로그래밍은 함수 자체의 응용에 중점을 둔다.

함수에 전달된 인자를 함수처리하고 함수를 매개변수로 넘겨주고 넘겨주고 넘겨주면서 함수만으로만 프로그램이 동작한다.

그렇기 때문에 부작용이 없이 안정적이다.




명령형과 함수형의 비교


출처

  명령형 함수형
중점 How What
상태 변경 중요 없음
실행 순서 중요 중요 X
흐름제어 제어문, 함수호출 재귀함수 등의 함수 호출로 제어
데이터 조작 단위 인스턴스 함수




프로토콜 지향 프로그래밍


POP(Protocal-Oriented-Programming)

블로그

처음에도 프로토콜 기능은 있었지만 Swift 2.0 에 프로토콜 확장 기능을 추가하여 프로토콜 지향 프로그래밍 언어가 되었다.

스위프트에만 해당하는 기능인지는 모르겠지만 널리 사용되는 명칭은 아닌 것 같다.

인터넷에 검색을 해도 Swift 관련 정보만 나온다.

아직은 프로토콜에 대한 공부를 하기 전이기 때문에 프로토콜 프로그래밍을 하기에는 어렵다고 판단이 들어

간단하게만 알아보고 추후에 프로토콜을 공부하면서 감을 익혀보겠다.