[프로그래밍 언어론] 2. 언어 패러다임에 따른 분류

프로그래밍 언어는 프로그램을 어떤 방식으로 구성하고 문제를 해결할 것인가에 따라 다양한 프로그래밍 패러다임으로 분류할 수 있다.

대표적으로 절차적 프로그래밍, 객체지향 프로그래밍, 함수형 프로그래밍 등이 있다.

 

1. 절차적 프로그래밍(C, Pascal 등)

-처리해야 할 작업의 순서, 즉 절차를 중심으로 작성하는 방식으로 문제를 해결하기 위한 과정을 여러 개의 명령어와 함수로 나누어서 순차적으로 실행한다.

 

2. 객체지향 프로그래밍 (Java, Python, C++ 등)

-데이터와 데이터를 처리하는 기능을 하나의 객체로 묶어서 프로그램을 구성하는 방식으로 상속, 다형성, 캡슐화 등의 개념을 중심으로 프로그램을 작성하는 것이다.

 

3. 함수형 프로그래밍 (Haskell, Lisp 등)

- 프로그램을 함수의 조합으로 표현하고, 함수의 계산과 결과에 초점을 맞추는 방식이다.

 

 

그렇다면 Swift는 어떤 언어일까?

스위프트는 한 가지 패러다임에만 속하지 않는 다중 패러다임 언어이다.

하지만 애플이 Swift를 만들 때 가장 강력하게 내세운 정체성은 바로 객체지향과 프로토콜 지향, 그리고 함수형의 조화이다.

 

1. 객체지향 언어 (Object-Oriented)

-Class를 통해 데이터와 함수를 하나의 객체로 묶고, 상속, 캡슐화, 다형성 등 전통적인 객체 지향 특성을 지원한다.

-또한 UIKit 등 iOS 앱 개발 프레임워크 역시 객체지향적인 API를 많이 제공하기 때문에 iOS 개발에서도 객체지향 프로그래밍이 널리 사용된다.

 

2. 함수형 언어 (Functional)

-Swift에서 함수는 1급 객체이다. 즉, 함수를 변수에 담거나, 다른 함수의 인자로 전달하거나, 리턴값으로 반환 가능하다.

-map, filter, reduce 같은 고차 함수를 적극 활용하고, 클로저를 통해 함수형 프로그래밍 스타일로 코드를 간결하게 작성 가능하다.

 

3. 프로토콜 지향 언어(Protocol-Oriented Programming, POP)

-Apple이 2015년 WWDC에서 Swift는 "세계 최초의 프로토콜 지향 프로그래밍 언어"라고 선언했을 정도로 프로토콜 중심의 설계를 강조한다.

-프로토콜을 이용하여 타입이 가져야 할 속성과 메서드 등의 요구사항을 정의하고, 클래스뿐만 아니라 구조체(struct), 열거형(enum)등 다양한 타입이 이를 채택할 수 있다.

-이러한 특징을 활용해 클래스의 복잡한 상속 계층에 지나치게 의존하지않고, 프로토콜과 값 타입 등을 조합해 유연하고 수평적인 기능 확장과 코드 재사용성을 대폭 높였다.

 

요약하자면 Swift는 객체지향과 함수형의 특징을 모두 가진 다중 패러다임 언어이자, 프로토콜 지향 기법을 극대화한 언어이다.