기존 Java 등 순수한 객체지향(OOP)의 접근 방식에서는 클래스의 상속, 다형성 등 클래스 중심의 설계를 강조했습니다. 하지만 Swift, Kotlin 등 현대 언어가 주류로 떠오르면서 프로토콜(인터페이스)을 중심으로 구조를 설계하는 접근법이 크게 부각됐죠.
Swift에서 애플은 아예 Protocol-Oriented Programming(POP, 프로토콜 지향 프로그래밍) 을 공식적으로 권장했고, Kotlin 역시 Interface를 강력하게 활용하여 상속보다는 Composition과 Delegation 방식의 설계를 유도합니다. 이는 기존 OOP의 한계를 넘어 좀 더 유연하고 유지보수성과 재사용성을 강화하려는 트렌드입니다.
특히 Swift에서는 상속 대신 Protocol을 통해 코드의 재사용과 확장성을 극대화하고 Protocol Extension이라는 혁신적인 개념을 통해 Protocol이 단순한 계약을 넘어 기능까지 제공하는 역할을 수행했습니다.
이러한 변화는 단지 문법적인 변화를 넘어 프로그래밍의 사고방식 자체를 변화시켰다고 생각합니다.
이벤트중심 프로그래밍은 주로 사용자의 액션(이벤트)에 따라 상태를 직접 변경하고 뷰를 갱신하는 방식이었습니다. 이 방식의 가장 큰 한계는 앱 규모가 커질수록 코드 복잡성이 높아지고 관리가 어렵다는 점이었습니다.
React, SwiftUI, Jetpack Compose 등의 등장으로 UI 프로그래밍 패러다임이 함수형 프로그래밍의 영향을 받은 선언적 프로그래밍(declarative programming) 으로 전환되었습니다.
이는 명확히 함수형 프로그래밍(Functional Programming)의 원칙을 UI 프로그래밍에 접목시킨 사례입니다.
| 구분 | 이벤트중심 프로그래밍 | 선언적 프로그래밍 |
|---|---|---|
| 핵심 | 상태를 직접 변경 | 상태에 따라 UI 자동 갱신 |
| 상태 관리 | 개발자가 수동 관리 | 프레임워크가 자동 관리 |
| 사고방식 | 명령형(Imperative) | 선언적(Declarative) |
| 코드 관리 난이도 | 앱 규모 커질수록 증가 | 앱 규모가 커져도 유지 |
이러한 변화는 UI 개발의 생산성, 코드 안정성, 유지보수성을 혁신적으로 향상시켰으며, 앞으로의 개발 방향을 명확하게 제시하고 있습니다.
결국 최근 5~10년 동안 프로그래밍 세계에서 벌어진 중요한 흐름은 바로 “클래스 중심의 객체지향(OOP) → 프로토콜 중심 설계 → 선언적 함수형 프로그래밍 기반 UI 설계” 로 언어의 변화에 맞추어 프로그래밍 패러다임을 전환시킨 것 같습니다.