#review Are We There Yet? - Rich Hickey - OO는 시간 개념 없네

/pnotes/assets/2013-06-17-1807-00.jpg

객체지향(Object Oriented) 자체가 가진 복잡성의 원인은 뭘까? 그 원인을 찾아보고 해결할 수 있는 다른 모델을 제시한다. 발표자는 리치 히키(Rich Hickey). Clojure를 만든 사람이다.

명확하게 정의하지 않아 괴롭히는 개념이 하나 있다. 바로 시간. 객체 지향(Object Oriented)에는 시간이란 개념이 없다. 이 발표에서 가장 인상적이었다. 이 개념에 대한 설명이 주제이기도 하고.

진짜 없을까? 아예 없는 걸까? 그건 아니다. 명확한 개념 정의를 안 했을 뿐이다. 프로그램에서 공통으로 사용하는 보편적인 시간대가 있다. 바로 메인 스레드(thread)의 타임라인이다.

병행 프로그래밍(concurrent programming)에서 이 시간대가 깨진다. 시간을 구성하는 건 인과 관계를 맺은 값들. 즉 변화가 시간대를 구성하는 재료가 된다. 스레드마다 변화를 각기 주도하기 때문에 보편적인 시간대가 깨지게 된다. 계산은 상관없으나 리소스에 접근하는 게 문제다. 시간대를 맞춰줘야 한다. 하나의 시간대로 복귀하는 건 어떻게 하나? 바로 Lock 메커니즘. 시간대를 맞추는 데 사용한다.

시각을 넓힐 수 있는 좋은 발표자료. clojure 관심 여부를 떠나서 추천하고 싶다. 약점을 알게 되면 이해가 더 깊어진다. 이 발표가 객체지향이 가진 약점을 내게 알려줬다. 명확히 정의하면 주변이 명료해지는 시간이란 개념도 배웠다.

참고

주요 슬라이드와 간단한 코멘트

/pnotes/assets/2013-06-17-1807-01.jpg

OO에는 시간이란 개념이 존재하지 않는다.

/pnotes/assets/2013-06-17-1807-02.jpg

실제 entity와 identity를 결합했다.

/pnotes/assets/2013-06-17-1807-03.jpg

미래는 과거로부터 만들어진다. 이런 과정을 process라고 부른다. 시간은 연속된 process 이벤트들로 만들어진다.

/pnotes/assets/2013-06-17-1807-04.jpg

identity는 상상의 entity이다. 인과 관계를 맺은 값들의 시리즈를 결합해서 만든다.

/pnotes/assets/2013-06-17-1807-05.jpg

/pnotes/assets/2013-06-17-1807-06.jpg

CAS (compare and swap)와 agent를 시간 건축물 관점에서 본다.

/pnotes/assets/2013-06-17-1807-07.jpg

/pnotes/assets/2013-06-17-1807-08.jpg

타임 라인이 여러 개 있을 때, STM (Software transactional memory)



크리에이티브 커먼즈 라이선스
A Random Post
Feedback plz <3 @ohyecloudy, ohyecloudy@gmail.com