원문 링크: https://github.com/JasonDevlog/oop-analysis/blob/master/src/preface.md
이 글은 조영호님의 저서『객체지향의 사실과 오해』를 읽고 영감을 얻어 작성하였습니다.
이 책을 읽으면서 뭔가 OOP 개념들을 좀 더 세련되게 설명할 수 있지 않을까 싶었습니다.
처음에는 1주일 만에 끝날 줄 알았습니다.
이건 엄청난 착각이었습니다.
『객체지향의 오해와 진실』의 머리말에도 원고가 너무 어려워져서 폐기하고 새로 썼다는 내용이 나오는데, 저도 실제 원고 작성 전에 구상만 몇 번을 갈아엎고, 실제 원고 작성에 착수하고도 6번을 갈아 엎었습니다.
중간에 정말 포기하고 싶었지만, black7375님의 객체 지향 시스템과 패러다임 그리고 철학(https://black7375.tistory.com/86), 그리고 임성묵님의 자바스크립트는 왜 프로토타입을 선택했을까(https://medium.com/@limsungmook/자바스크립트는-왜-프로토타입을-선택했을까-997f985adb42)를 접하면서 저와 비슷한 생각을 하는 사람이 있다는 것을 깨달았습니다.
그래서 그냥 이 글을 빨리 끝내는 방향으로 가닥을 잡았습니다.
저는 OOP를 배우면서 이러한 내용들이 여러 분야에 있는 추상적인 개념 구조들과 분석 형태들과 형식적 유사성이 있다는 것을 느꼈습니다.
클래스와 객체, 책임과 행위, 관념과 사물, 집합과 원소, 비단말기호와 단말기호 등등...
하지만 이러한 어떤 형식적 유사성과 별개로, 그 형식적 유사성들을 통일감 있게 설명할 수 있는 하나의 논리를 발견하는 작업은 매우 어려웠습니다.
이러한 분석 작업은 마치 담화에서 에피스테메를 발견하는 작업과 비슷합니다.
하지만 저는 푸코같은 천재가 아니죠.
정말 이런 건 제가 감당할 수 있는 수준이 아니라고 뼈저리게 느꼈습니다.
처음에는 OOP에 대한 총체적이면서 완결된 분석을 할 수 있을 것만 같았습니다.
하지만 이 글에 투입하는 시간이 길어지면서, 단순히 그게 가능한 것과 별개로 결국 해내지 못했다는 사실이 너무 안타까웠습니다.
거의 한 달 정도의 시간을 투입했고, 다른 해야 할 일도 많기에 여기서 잠시 글을 멈추려고 합니다.
글을 급하게 마무리하면서, 내용들이 약간 통일되지 않은 감이 큽니다.
특히 철학, 수학, 언어학 관련 내용들은 최소한의 내용만 남기고 모두 생략했습니다.
실제로 검수를 하면서 이 부분 바꿔야 하는데 싶었지만, 일단 초안으로 올리고 나중에 한 번에 수정하는 걸로 마음 먹었습니다.
비록 제가 생각한 퀄리티에 훨씬 미치지 못하지만, 제가 OOP에 대해 생각한 내용들을 공유하는 계기가 되었으면 바랍니다.
글 양 장난 아닌데요?ㄷㄷ 시간내서 한번 읽어봐야겠네요