객체지향을 넘어 프로토콜 지향과 선언적 프로그래밍으로 ~

JaeEun Lee·2025년 3월 23일
0

객체지향에서 프로토콜지향으로의 패러다임전환

기존 Java 등 순수한 객체지향(OOP)의 접근 방식에서는 클래스의 상속, 다형성 등 클래스 중심의 설계를 강조했습니다. 하지만 Swift, Kotlin 등 현대 언어가 주류로 떠오르면서 프로토콜(인터페이스)을 중심으로 구조를 설계하는 접근법이 크게 부각됐죠.

Swift에서 애플은 아예 Protocol-Oriented Programming(POP, 프로토콜 지향 프로그래밍) 을 공식적으로 권장했고, Kotlin 역시 Interface를 강력하게 활용하여 상속보다는 CompositionDelegation 방식의 설계를 유도합니다. 이는 기존 OOP의 한계를 넘어 좀 더 유연하고 유지보수성과 재사용성을 강화하려는 트렌드입니다.

특히 Swift에서는 상속 대신 Protocol을 통해 코드의 재사용과 확장성을 극대화하고 Protocol Extension이라는 혁신적인 개념을 통해 Protocol이 단순한 계약을 넘어 기능까지 제공하는 역할을 수행했습니다.

이러한 변화는 단지 문법적인 변화를 넘어 프로그래밍의 사고방식 자체를 변화시켰다고 생각합니다.

이벤트중심 프로그래밍에서 함수형 프로그래밍 기반 그리고 선언적 UI로의 변화

이벤트중심 프로그래밍은 주로 사용자의 액션(이벤트)에 따라 상태를 직접 변경하고 뷰를 갱신하는 방식이었습니다. 이 방식의 가장 큰 한계는 앱 규모가 커질수록 코드 복잡성이 높아지고 관리가 어렵다는 점이었습니다.

React, SwiftUI, Jetpack Compose 등의 등장으로 UI 프로그래밍 패러다임이 함수형 프로그래밍의 영향을 받은 선언적 프로그래밍(declarative programming) 으로 전환되었습니다.

  • UI를 상태(State)의 함수(Function)로 간주하는 사고방식
  • 상태가 변경되면 UI는 자동으로 재렌더링
  • 개발자가 “어떻게(How)” 화면을 바꿀지 고민하지 않고, “무엇을(What)” 보여줄지만 선언하면 프레임워크가 알아서 UI를 업데이트하는 방식

이는 명확히 함수형 프로그래밍(Functional Programming)의 원칙을 UI 프로그래밍에 접목시킨 사례입니다.

구분이벤트중심 프로그래밍선언적 프로그래밍
핵심상태를 직접 변경상태에 따라 UI 자동 갱신
상태 관리개발자가 수동 관리프레임워크가 자동 관리
사고방식명령형(Imperative)선언적(Declarative)
코드 관리 난이도앱 규모 커질수록 증가앱 규모가 커져도 유지

이러한 변화는 UI 개발의 생산성, 코드 안정성, 유지보수성을 혁신적으로 향상시켰으며, 앞으로의 개발 방향을 명확하게 제시하고 있습니다.

정리

결국 최근 5~10년 동안 프로그래밍 세계에서 벌어진 중요한 흐름은 바로 “클래스 중심의 객체지향(OOP) → 프로토콜 중심 설계 → 선언적 함수형 프로그래밍 기반 UI 설계” 로 언어의 변화에 맞추어 프로그래밍 패러다임을 전환시킨 것 같습니다.

profile
공업철학프로그래머

0개의 댓글