상세 컨텐츠

본문 제목

Swift언어와 함수형 프로그래밍

Swift 지식(CS)

by 앱등개발자IOS 2022. 5. 21. 13:38

본문

Swift의 언어적 특징에 대해 간단하게 알아보겠습니다.

Swift는 Java,C++과 같이 객체지향 패러다임을 차용하여, 클래스와 상속, 접근자, 생성자, 소멸자 등 객체지향 프로그래밍의 특징들을 많이 찾아볼 수 있는데요,

Swift는 이 시점 최고 대세인 "함수형 프로그래밍" 또한 차용했습니다. 왜 함수형 Paradigm을  차용했는지, 함수형 프로그래밍은 어떤 특징을 갖고있는지 알아보겠습니다.

 

 

그 전에!! 

먼저 명령형 프로그래밍, 객체지향 프로그래밍(OOP) 먼저 훑고 지나가겠습니다.

 

코딩의 기본은 "명령형 프로그래밍"입니다.

저도 컴퓨터공학과에 들어와 가장 먼저 배운 것이 C언어를 이용한 명령형 프로그래밍이었습니다.

 

왜 명령형 프로그래밍일까요??

- 한 줄 한 줄 컴퓨터에게 차례로 실행할 명령을 전달하는 방식의 프로그래밍이기 때문입니다.

 

이후 자바, C++,Objective-C,파이썬과 같이 객체지향 프로그래밍 패러다임을 차용한 언어들이 나타났는데요,

객체지향 프로그래밍은 

- 자료 추상화 ( 추상 클래스, 인터페이스...)

- 상속

-다형성

-동적 바인딩

등의 특징을 가지고있습니다.

 

 

# 함수형 프로그래밍이란??

 

    함수형 프로그래밍이란, "상태 변화"없이 데이터 처리를 "함수 계산"으로 취급하고자 하는 패러다임입니다.

    객체지향 프로그래밍은 "절차 지향(명령형) 패러다임"이 주를 이루기 때문에

    함수 실행 시, 객체의 상태, 메모리 참조값 등이 변경될 수 있어서 함수와 함수가 서로 영향을 미칠 수 있습니다.

    그럼 어떤 함수에서는 우리가 의도한 결과와 다른 결과가 나오거나 오류가 생길 수 있겠죠?? 

 

    하지만?! 

    함수형 프로그래밍은 어떤 상황에서든, 일정하게 "같은" 결과를 도출할 수 있습니다.

    함수형 프로그래밍은 상태의 변화가 없기 때문에, 함수호출이 서로서로 영향을 주지 않아 병렬처리 시 부작용이 거의 없습니다.

   그렇다면 여러 함수를 나누어 동시에 병렬처리하는데 유리하겠죠?

   즉, 대규모 병렬처리가 굉~장히 쉽다고 합니다!

 

    또다른 함수형 프로그래밍의 큰 특징은 함수가 "일급 객체"라는 것입니다.

    일급객체는 아래 조건을 만족합니다.

    - 동적 프로퍼티 할당 가능

    - 변수에 담을 수 있다.

    - 반환 값으로 사용 가능

    - 전달인자로 사용 가능 

   

이외에도, 모나드, 필터,맵,리듀스와 같은 고차함수 등의 함수형 프로그래밍에서 사용할수 있는 기능들이 있습니다.

 

자세한 내용들은 차근차근 정리해 포스팅해보겠습니다.