앨런 케이, "객체 지향 프로그래밍"의 의미를 말하다 (2003)
(notes.shixiangxi.com)
객체지향 프로그래밍의 창시자 앨런 케이가 밝힌 원래의 개념은 단순한 상속과 다형성이 아니라 메시징, 상태 보호, 그리고 극단적인 후기 바인딩을 통한 유연한 시스템 구축에 있음을 재확인하며 소프트웨어 설계의 본질적 방향성을 제시한다.
이 글의 핵심 포인트
- 1앨런 케이는 1967년경 유타 대학교에서 '객체지향 프로그래밍'이라는 용어를 처음 고안함
- 2생물학적 세포나 네트워크상의 개별 컴퓨터처럼 메시지로만 소통하는 구조를 구상함
- 3그가 정의하는 OOP의 핵심은 메시징, 상태의 국소적 유지 및 보호, 그리고 극단적인 후급 바인딩임
- 4'다형성(Polymorphism)'이라는 용어 대신 '제너리시티(Genericity)'라는 개념을 사용하고자 했음
- 5초기 설계에서는 상속(Inheritance)을 기본 기능으로 포함하지 않기로 결정했었음
이 글에 대한 공공지능 분석
왜 중요한가?
현대 개발자들이 당연하게 받아들이는 OOP의 핵심 요소(상속, 다형성 등)가 사실은 창시자의 의도와는 다른 측면이 있음을 보여줍니다. 소프트웨어 아키텍처의 본질이 단순한 기능 구현을 넘어 시스템 간의 메시징과 유연한 결합에 있음을 일깨워줍니다.
어떤 배경과 맥락이 있나?
1960년대 후반 생물학적 세포와 네트워크 컴퓨터 모델에서 영감을 얻은 초기 설계 철학을 다룹니다. 당시에는 데이터 자체를 없애고 메시지 토큰화하는 혁신적인 시도가 있었으며, 이는 이후 Smalltalk 개발의 근간이 되었습니다.
업계에 어떤 영향을 주나?
현대의 복잡한 타입 시스템과 프레임워크 중심 개발에 경종을 울립니다. 시스템의 확장성과 유연성을 확보하기 위해서는 객체 간의 인터페이스(메시징)와 상태 제어에 집중하는 설계가 중요하다는 통찰을 제공합니다.
한국 시장에 어떤 시사점이 있나?
대규모 트래픽과 복잡한 마이크로서비스 아키텍처(MSA)를 다루는 한국 테크 기업들에게, 서비스 간 결합도를 낮추고 메시지 기반의 느슨한 결연을 구현하는 것이 시스템 안정성과 확장성의 핵심임을 시사합니다.
이 글에 대한 큐레이터 의견
앨런 케이의 회고는 현대 소프트웨어 공학이 '기능적 구현'에 매몰되어 '시스템적 유연성'이라는 본질을 놓치고 있음을 날카롭게 지적합니다. 특히 메시징과 후기 바인딩을 강조한 부분은, 컴포넌트 간의 강력한 결합을 초래하는 현대적 객체지향 설계가 시스템의 경직성을 높일 수 있다는 위험을 시사합니다. 스타트업 창업자들은 코드의 재사용성(상속)에 집착하기보다, 서비스 간 인터페이스와 메시지 전달 방식의 유연성을 확보함으로써 비즈니스 변화에 기민하게 대응할 수 있는 아키텍처를 구축해야 합니다.
물론, 극단적인 후기 바인딩과 동적 타이핑은 개발 속도를 높일 수 있지만, 대규모 시스템에서는 런타임 에러와 예측 불가능한 부작용(side-effects)이라는 큰 리스크를 동반합니다. 따라서 창업자는 '유연성'과 '안정성' 사이의 트레이드오프를 명확히 인지해야 합니다. 초기 단계에서는 빠른 실험을 위해 유연한 설계를 지향하되, 시스템이 커짐에 따라 강력한 타입 시스템과 계약 기반의 인터페이스를 도입하여 안정성을 확보하는 균형 잡힌 접근이 필요합니다.
관련 뉴스
댓글
아직 댓글이 없습니다. 첫 댓글을 남겨보세요.