더북(TheBook)

3.9.1 객체 지향 언어를 추구해야 할 이유가 있을까?

자바 같은 객체 지향 언어가 매진되어 서로 시장에서 치열하게 경쟁하고 있는 지금, 더 이상 이런 언어를 선호할 이유는 없을 듯싶다. 객체가 탑재된 언어를 굳이 새로 만들 이유가 있을까? 새 음반을 8트랙 테이프10로 출시하는 꼴 아닌가?

1990년대에 ‘만물상속주의(all inheritance all the time)’라는 무분별한 가르침에 따라 괴물 같은 클래스 계층 구조가 탄생한 건 맞지만, 그래도 객체 지향 프로그래밍(OOP) 자체는 아직도 꽤 훌륭한 패러다임이다. 이미 수십억 줄에 달하는 성공적인 코드가 OOP 언어로 코딩되어 있고 그렇게 구현된 수백만 개의 앱들이 사용자를 행복하게 해주었다. 또 오늘날 프로그래머는 대부분 객체 지향 언어를 사용 중이다. 이들 모두가 다 그렇게 틀렸다고 할 수 있을까?

특히, 동적 타입 언어에서 객체는 아주 편리하다. 여러 데이터 덩이를 함께 묶으려면 당연히 복합적인 데이터 타입을 정의할 방법이 필요하다.

메서드를 따로 떼어낼 수 있다면 타입만 다를 뿐 기능은 비슷한데 단지 이름이 충돌하지 않게 하려고 함수가 동작하는 데이터 타입명을 함수명 앞에 접두어(prefix)로 붙일 필요가 없다. 예를 들면, 라켓11은 함수명이 서로 겹치지 않게 hash-copy(해시 테이블 복사), vector-copy(벡터 복사) 식으로 명명해야 한다. 메서드의 스코프가 객체 내부로 한정되면 이런 골치 아픈 문제가 모두 사라진다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.