본문 바로가기

분류 전체보기

추상화의 봉쇄 요즘 생각하는 키워드가 추상화에 대한 것이라서인지 어떤 책을 읽어도 연관되어 생각된다. 그중 한가지가 추상화의 봉쇄이다. 만약 우리가 어떤것을 추상적으로 생각할때 가장 주의를 기울여야 하는 부분은 그 추상화가 하위의 개념들과 완벽히 분리되어 있는가 이다. 이 봉쇄란 개념이 없다면 추상화는 의미가 없어져 버린다. 예를들면 시계의 운동이 하위 양자역학에 얽매이게 된다면 시계란 개념을 가질수 없게된다. 마찬가지로 물리와 화학,생물학의 분야가 나눠질수 있게되는 가장 큰 이유중 하나는 각각의 연구가 다른 하위 연구에 대해 봉쇄될 수 있기 때문에 다른 분야의 상세한 지식을 갖지않고도 자신의 연구를 계속할수 있다. 즉 각각의 분야는 서로 공유할수있는 공통된 추상화 명제를 가지고있다. 이명제는 하위 추상화에 대해 봉쇄.. 더보기
추상화의 같은 층위 어떤 부분을 높은 관점에서 본다는것은 그것에 대해 묶음으로 처리할수 있다는 말이다. 그런데 이런 묶음 처리에서도 관점에 따라 묶음을 달리 처리할수있다. 이렇게 처리된 묶음(추상화덩어리) 들은 같은 수준에서의 추상화 층위를 구성한다. 얼마전 SOA의 관한 단상중에서 결론을 내지 못한 부분에 대해 언급을 하자면, Service - Service 는 OS-VM이 실행하는 기능을 추상화한다. 프로그램은 어떤 하나의 기능과 목적을 가지고 있는데 이런 각각의 기능을 전체적으로 하나의 서비스로서 추상화 시킬수있다. SOA- 개개의 서비스들을 구현하기 위해 필요한 인터페이스를 정의한다. 서비스의 내용과는 별개이다. (계속..) Machine - Os & Programming - Service - Instruction .. 더보기
지배계층과 피지배계층 인류는 기원전부터 현재까지 지배와 피지배를 받는 구조로 나눠져 있었다. 예전에는 단순히 육체적 힘이 강한 사람이 약한사람을 지배하는 것이 기준이 되었지만 점점 그 기준은 변화하고 다양화되었다. 현재에 이르러서는 지능 및 외모, 그리고 어떤 집단 및 어디에 소속되느냐, 어느 정도의 부를 가지고있느냐 등에 의해 나눠지게 되었다. 하지만 피지배계층으로서 이러한 구조에서 자신의 위치를 바꿀수 방법이 없는것은 아닌데, 그중 한가지는 새로운 변화에 맞추어 자신을 맡기는 방법이 있다고 볼 수 있겠다. 지배계층과 피지배계층의 구조는 변하지 않더라도 지배계층과 피지배계층을 구성하는 구성원은 변하기 때문이다. 즉 구성원이 변하는 시기를 맞추어 물타기(?)를 하면 된다. 예를들면 프랑스 혁명때에서 시민들을 부추겨서 혁명을 .. 더보기
SOA.? Machine 을 추상화시킨 OS -기계와의 인터페이스인 Api가 근간을 이루고있다. 이 API는 기계의 소통을 추상화한다. OS를 추상화시킨 VM -자바는 OS에 비 의존적인 가상의 머신을 제공하고있다. 이것은 windows,linux의 서로 다른 운영체제를 덮고 있다. VM을 추상화한 서비스. -??아직은 이해부족 서비스를 추상화한 SOA -??? 더보기
혼돈의 가장자리에서.. 각 각의 향상적인 걸음 후에 오르막 방향의 예상 숫자는 이전의 반으로 준다. 만약 N = 10000 이고 우리가 가장 덜 적절한 것에서부터 시작한다면, 오르막 방향들의 숫자는 잇따라 10000, 5000, 2500, 1250, ... 이 되는 것이다. 따라서 높아지면 높아질수록, 위쪽으로 계속되는 길을 찾아내기는 더욱더 어려워진다. 위 로 향한 걸음마다 매번 두 배로 많은 길들을 시도해봐야 할 것이다. 물론 당연히 위쪽으로 걸음을 옳기는 예상 대기 시간 역시 위쪽으로의 걸음마다 매번 두 배가 된다. 첫번째 걸음이 1번의 시도를 필요로 한다면, 두번째에는 2번의 시도를, 다음에는 4번, 8번, 16번등으로 말이다. 위쪽으로 10번째 걸음에 이르게 되면 1024번의 시도가 필요하게 되는 것이다. 위쪽으로의 .. 더보기
추상화와 구상화2 얼마전 쓴 글 추상화와 구상화에 대해 몇가지 더 떠오른 생각들이 있어서 쓴다. 언젠가 나도 생긴 버릇이지만 조금 짜고 컴파일 하고 돌려본다. 뭐 TDD(Test-Driven Development)에서는 좋은 것일지 모르겠지만 로직이 흐르고 정상적으로 동작함을 기계에게 의존하게 된다. 이것이 지속되다 보면 코드의 흐름을 머리속에서 놓쳐 버린다. 부분부분 분명 뭔가를 받고 뭔가를 토해내고는 있지만 이 시스템이 뭘 하고 있는지에 대한 감은 점점 놓친다. 이 시스템이 뭘 하고 있는지에 대한 감을 놓치는 이유는 아마 코딩을 하면서 추상화의 수준을 내려갔기 때문에 애초 무엇을 하려고 했는지에 대한 높은 추상화수준의 감을 놓쳐버린게 아닐까? 즉 정확히 말하면 구상화에 집중함으로서 추상화의 감을 놓쳐버린것이라 볼수있다.. 더보기
추상화와 구상화? 몇일전 아는 지인과 대화중에 깨닭은 점인데, 추상화와 구상화의 범위에 대한 이야기였다. ...omitted... 최상의 아키텍쳐가 걍 그림만 그리는것이 아니다. 오히려 그런 사람들에게는 말단의 코딩 실력까지 상당한 수준이 되어야만 한다. 자신의 선 하나가 실제로 구현될 것 까지 예상을 하며 큰 그림을 머리속에 수행시키고 디버깅하고 검증할 수 있는 사람만이 전체 그림을 그릴 수 있다. ...omitted... (*겐도사마의 재림:코드를 잘뽑아내고싶은가 그럼 컴퓨터를버려라 에서 6번째 단락) 즉 어느 아키텍쳐는 추상화 수준을 자신이 구현하고자 하는 기능의 동작코드까지 단숨에 끌어 내릴수 있어야 한다. 는 이야기라 볼수있다. 하지만 반대로 그 지인은 전체 프로젝트에서 아키텍트가 커버할수 있는 범위가 있다고 했.. 더보기
팀문화와 개발 환경. 난 개인적으로 팀문화를 좋아하며 서로 즐겁게 일할수있는 환경에서 효율적으로 일할 수 있기를 바란다. 왜 팀문화를 좋아하느냐 하면 그것이 1+1 = 3 을 만드는 유일한 길이기 때문이다. 또 프로젝트에서는 그 시너지 효과만이 프로젝트와 구성원의 성공을 이끄는 요인이 된다고 생각한다. 팀원들이 서로를 자극하며 발전하고 좋은 아이디어를 내고 개선해가며 성공을 공유하는것. 물론 이상적이긴 하지만 이것이 직장생활의 묘미가 아닐까? 또 개발하기위해서는 환경이 중요하다. 좋은 환경은 그로 하여금 그 구성원들이 자신을 특별한 사람이라고 느끼게 해주기 때문이다. 또 이러한 엘리트의 의식이 생산성을 높이며 좋은 아이디어를 만드는 요인이 되기도 한다. (단어의 선택이 참으로 중요한데 엘리트주의 가 아닌 엘리트 의식이다.) .. 더보기
맥스웰과 악마 맥스웰의 악마 열역학 제2법칙은 쉽게 말해서 뜨거운 공기를 담은 상자 A와 차가운 공기를 담은 상자 B를 연결하면 서로 온도가 비슷해진다(열평형 상태)는 것인데, 이 도깨비는 두 상자의 가운데 연결통로에 있으면서 한 가지 기준을 가지고 특정 분자를 지나가게 하거나 못 지나가게 한다. 그 기준이란, A에서 B로 지나가려는 공기분자 중에서는 느린(차가운) 분자만 통과시킨다. B에서 A로 지나가려는 공기분자 중에서는 빠른(뜨거운) 분자만 통과시킨다. 이렇게 되면 온도가 비슷해지기는 커녕 오히려 A는 점점 더 뜨거워지고, B는 점점 더 차가워지게 된다. 즉, 엔트로피가 감소하게 되는 것이다. 맥스웰의 악마 W.Poundstone, The Recursive Universe,chap.3,"Maxwell's Demo.. 더보기
스펙이 가지는 의미 나처럼 바보같이 느즈막해서야 이해가는 사람이 있을까 해서 남겨두는 글 HTML4 , J2EE , SERVLET 2.0 , SERVLET 2.4 , JAVA 1.5.... 등등등 수많은 버젼 스팩이 난무하는 세상이다. 하지만 저 도대체 정말로 저 이름들이 뜻하는것은 무엇일까? 난 처음 일반 application처럼 새로운 버젼의 프로그램이 나오는 것으로 생각했었다. 물론 반은 맞는 말이다. 하지만 저것들은 specifications 즉 명세이다. 이것은 표준화란 말로 다시 설명 할수있는데 실제 저 이름이 뜻하는 것은 대상의 기능 및 사양을 정의한 명세서이다. 몇 천장의 상세한 기능을 설명한 구현 명세로서 저 공개된 저 명세서에 맞추어 구현을 하면 그것이 HTML4가되고 J2EE가되며 SERVLET이 되는것.. 더보기