프로그래밍 패러다임
패러다임이란 한 시대의 사회 전체가 공유하는 이론이나 방법, 문제의식 등의 체계이다. 즉, 프로그래밍 패러다임은 프로그래밍이라는 기술을 이용하는 구성체가 가지고 있는 현 시대의 체계로 볼 수 있는데, 이 말인 즉슨 시대의 흐름에 따라 프로그래밍 패러다임도 변화하고 여러 갈래로 나눠질 수 있다.
프로토콜지향 프로그래밍(POP)과 객체지향 프로그래밍(OOP) 둘 모두 프로그래밍 패러다임으로서 "다형성"을 통해 각 코드들의 재사용성을 비약적으로 높이고, 이를 통해 기존보다 더욱 생산적이고 클린한 구조의 설계를 이끌어내도록 도와준다.
기존 OOP의 슈퍼클래스와 서브클래스의 의존적인 관계와 달리, 프로토콜에 정의된 인터페이스만 구현하면 되고 이를 따르는 사이들끼리도 깊게 연관되어 있지 않아 서로 독립적이며 안전하다.
(해당 프로토콜을 채택했다는 점만 공통 요소)
상속과 달리 다수의 프로토콜을 따를 수 있고, 물려받는 개념이 아니므로 다중 상속 시의 문제점(죽음의 다이아몬드 이슈)에서 자유롭다.
OOP보다 POP가 유용한 경우는?
OOP에서는 상속 구조로 설계해야 되는데, 이 경우 아마추어 축구선수와 프로 축구선수 간에 축구 관련 요소들이 겹치게 되는데 이를 상속 구조로 해결하기 위해서는 상위 클래스에 우겨넣는 형식이 되기 십상이다.
반면에 POP의 경우에는 각각의 필요한 프로토콜만 채택하여 다양한 구조로 구현이 가능하다. 따라서 이러한 경우가 OOP를 사용하는 것보다 POP를 사용하는 것이 유용하다고 할 수 있다.