On Understanding Types, Data Abstraction, and Polymorphism. _ACM Computing Surveys


이 논문에서 말했듯 결국 어떻게 다형성을 구현하는거고


다형성은 결국 동일한 인터페이스가 다수의 행동을 표현하는 그 자체고


핵심은 변화에 무너지지 않으면서 시스템이 어떻게 유연할것인가이고


다형성은 일종의 기능이라기보다는 행동적 추상화의 기제임.


무엇WHAT과 어떻게 HOW를 분리해서 상위 로직이 하위 구현에 영향을 받지 아니하는 것이지


이게 OOP는 상속과 컴포지션으로 구현하고


FP는 고차함수와 클로저로 구현하고


DOP는 구조적 접근성에 대해서 구현하고


다형적 단위가


OOP는 객체


FP는 함수


DOP는 데이터가 되는데


실제 현실적 제약에서는 패러다임 자체의 한계성이 있음


장기적인 state 관리가 필요한 시스템에서 사이드 스테이트를 피하기 위해서 모나드를 적용한다거나 하는데 이럴땐 그냥 FP쓸려고 용쓸때보다 OOP가 나은 경우도 있고


결국 짜다보면 각 패러다임을 복합적으로 쓰게 된단 말이지


결국 어떤 다형성 구현이 최고의 ROI를 내는가에 대한 판단 그 자체가 아키텍트 설계인거니까


어떤 지향만이 옳다 무엇을 해야한다는 건 그야말로 견지망월인것이지