Swift의 언어적 특징에 대해 간단하게 알아보겠습니다.
Swift는 Java,C++과 같이 객체지향 패러다임을 차용하여, 클래스와 상속, 접근자, 생성자, 소멸자 등 객체지향 프로그래밍의 특징들을 많이 찾아볼 수 있는데요,
Swift는 이 시점 최고 대세인 "함수형 프로그래밍" 또한 차용했습니다. 왜 함수형 Paradigm을 차용했는지, 함수형 프로그래밍은 어떤 특징을 갖고있는지 알아보겠습니다.
그 전에!!
먼저 명령형 프로그래밍, 객체지향 프로그래밍(OOP) 먼저 훑고 지나가겠습니다.
코딩의 기본은 "명령형 프로그래밍"입니다.
저도 컴퓨터공학과에 들어와 가장 먼저 배운 것이 C언어를 이용한 명령형 프로그래밍이었습니다.
왜 명령형 프로그래밍일까요??
- 한 줄 한 줄 컴퓨터에게 차례로 실행할 명령을 전달하는 방식의 프로그래밍이기 때문입니다.
이후 자바, C++,Objective-C,파이썬과 같이 객체지향 프로그래밍 패러다임을 차용한 언어들이 나타났는데요,
객체지향 프로그래밍은
- 자료 추상화 ( 추상 클래스, 인터페이스...)
- 상속
-다형성
-동적 바인딩
등의 특징을 가지고있습니다.
# 함수형 프로그래밍이란??
함수형 프로그래밍이란, "상태 변화"없이 데이터 처리를 "함수 계산"으로 취급하고자 하는 패러다임입니다.
객체지향 프로그래밍은 "절차 지향(명령형) 패러다임"이 주를 이루기 때문에
함수 실행 시, 객체의 상태, 메모리 참조값 등이 변경될 수 있어서 함수와 함수가 서로 영향을 미칠 수 있습니다.
그럼 어떤 함수에서는 우리가 의도한 결과와 다른 결과가 나오거나 오류가 생길 수 있겠죠??
하지만?!
함수형 프로그래밍은 어떤 상황에서든, 일정하게 "같은" 결과를 도출할 수 있습니다.
함수형 프로그래밍은 상태의 변화가 없기 때문에, 함수호출이 서로서로 영향을 주지 않아 병렬처리 시 부작용이 거의 없습니다.
그렇다면 여러 함수를 나누어 동시에 병렬처리하는데 유리하겠죠?
즉, 대규모 병렬처리가 굉~장히 쉽다고 합니다!
또다른 함수형 프로그래밍의 큰 특징은 함수가 "일급 객체"라는 것입니다.
일급객체는 아래 조건을 만족합니다.
- 동적 프로퍼티 할당 가능
- 변수에 담을 수 있다.
- 반환 값으로 사용 가능
- 전달인자로 사용 가능
이외에도, 모나드, 필터,맵,리듀스와 같은 고차함수 등의 함수형 프로그래밍에서 사용할수 있는 기능들이 있습니다.
자세한 내용들은 차근차근 정리해 포스팅해보겠습니다.