은닉화 (encapsulation)


예전에 디자인 회사에 있을 때, 그 디자인 회사의 사장 형이 말해 줬었지.

데셍과 정밀묘사는 껌인데 색채론에 약하다는 내 말에,


"정말 최고의 색채론은 Black & White 다."

"모든 색과 가장 잘 어울리는 색은 무채색이다."


그 이후 나는 인터페이스에 3톤 이상을 사용하는것을 무척 절제하게 되었다.

신호처리 알고리즘에 있어서도 마찬가지지. 2진화라는건 중요한 부분을 드러내는데 그 가치가 있다.

판화 작품으로 부터 타들어가는 듯한 강렬한 인상을 느껴본적 있는가?

나는 뱀파이어물 만화 hellsing 이란 작품의 코믹스판 그림체에서 '판화 같다' 는 느낌을 받은적 있다.

강렬한 흑백사진같은 정중동의 느낌을 잘 살린 만화는 아쯔시 카미조의 to-y 였지.



투명성 (clarity, transparency)


Java 코드는 C++ 코드에 비해 많은 것을 숨기고 있다.

그 말은 로우레벨 자유도가 떨어진다는 의미와 함께, 하이레벨 자유도가 높아진다는 의미를 갖는다.


로우레벨 접근성이 좋다는 것은, 당연히 경제성을 극대화 할 수 있다는 이야기가 된다.

CISC 와 RISC의 장단점을 떠올려 보라.

손으로 한땀 한땀 최적화한 RISC 프로세서는 renewal 비용이 비싸지만,

새로운 요구사항들이 쏟아지지 않는 한 양산화에서 최적의 경제성을 보장한다.


초기 개발시점에서 python 으로 작업하고, 어느정도 완성도를 가졌을 때

보다 native 한 언어로 porting 하는 것은 두 마리 토끼를 잡을 수 있는 방법일 것이다.

하드웨어 칩셋 개발에서도, 프로토타이핑과 소규모 시장 테스트는 FPGA로,

massive한 수준의 양산화가 필요하면 로직 디자인을 ASIC 하는 것이 유효한 방법인 것 처럼 말야.


시장은 틈새에서 발생하는것이니만큼, 어느쪽이 유용하다 단정할 순 없다.

둘 다 아는 것이 필요하다.



Exposing issues of deveolper's Interface


private, protected, public, published 와 같은 노출과 접근 권한 관계의 이야기에 있어서,

투명성은 안정성을 해치고, 은닉화는 개발의 시간적 최소비용을 증가시킨다.

하지만, 프로젝트의 볼륨이 커지면, 안정성이 더 큰 가치로 대두되는 것이지.


영어 사전이 있으면 단어장은 왜 가지고 다니는가? 둘 다 필요하기 때문이다.

osX 에는 exposer 가 있다.

단어 하나만 쳐 넣으면 필요한 정보들을 노출해 준다.

단어장의 장점을 사전에 도입한 경우랄까?


abstraction, summarize 없는 transparency는 두 말할 여지없이 독(toxic)이다.

abstraction 과 encapsulation 은 조금 닮았지만 전혀 다르다.


진정한 명료성은(clarity)

transparency, abstraction, summary, encapsulation 의 적절한 배합으로 얻어질 수 있다.