public/protected/private: 불필요한 OOP 기능?

2025-06-19

이 글은 객체지향 프로그래밍에서 접근 제한자(public, protected, private)의 필요성에 대해 의문을 제기합니다. 저자는 인터페이스와 상속을 결합하여 추가적인 메커니즘 없이도 동일한 기능을 구현할 수 있다고 주장합니다. 접근 제한자의 존재는 Simula 언어 설계상의 간과로 인한 중복 기능일 가능성이 있다고 시사합니다. 더 깔끔한 코드를 위해 저자는 접근 제한자 사용을 피하고 상속보다는 합성을 권장합니다.

더 보기

상속: 우연한 성능 향상

2025-05-08

Simula가 상속을 발명한 것은 코드 재사용이나 확장성을 위해서가 아니라, 단순한 가비지 컬렉션과 침입형 리스트 관련 문제를 해결하기 위해서였습니다. Simula의 가비지 컬렉터는 스택 변수에 대한 포인터를 처리하기에는 너무 단순했습니다. 충돌을 방지하기 위해 다양한 매개변수 전달 방식이 금지되었고, 표현력이 제한되었습니다. 침입형 리스트를 효율적으로 사용하기 위해 Simula는 "접두사"(상속)를 발명하여 객체가 리스트 노드를 직접 포함할 수 있도록 하고 추가 메모리 할당을 피했습니다. 따라서 상속은 처음에는 성능 최적화였지 OOP의 초석은 아니었습니다.

더 보기
개발