'추상화'에 해당되는 글 6건

  1. 2008.02.16 추상화 수준에 따라 보이는 사물의 모습
  2. 2008.02.06 추상화의 비용? (4)
  3. 2007.12.18 추상화의 본질? (2)
  4. 2007.12.15 추상화의 봉쇄 (4)
  5. 2007.12.08 추상화와 구상화2
  6. 2007.12.07 추상화와 구상화?

추상화 수준에 따라 보이는 사물의 모습

Trivia 2008.02.16 10:13
 이 글은 먼저 추상화와 비용에 Tuna님의 댓글을 보고 작성한 글입니다.

 추상화 수준을 뒤로 두고 먼저 사물의 새로운 면이 무엇인가에 대해 생각해 보았습니다.
예를 들면 얼마전 쓴 글에서 비유한 인생은 경기장 말에 대해 생각해보면,

글에서 경기장이란 단어에 대해 언급한 정보들.
1. 아무것도 모르고 경기장에 처음 들어간 사람은 상처를 피할수 없게 됩니다.
2. 한번 경기장에 들어간 투사는 경기가 끝날때까지 나오지 못합니다. -  인생은 죽기전까지 나올수없습니다.

경기장이란 추상화에서 새로 보이는 정보들.
1. 경기장은 승자가 있는 곳입니다. - 인생은 승자가 있습니다.
2. 경기장에서 승자는 큰 부와 명예를 가지게 됩니다.

새로 보이는 정보란 추상화에서 비유한 속성의 다른 면을 이야기 하는 것 같습니다.
그런데 중요한 것은 이러한 새로운 정보들은 자신의 가지고 있는 정보 안에서의
같은 패턴가지고 있는 다른 대상의 정보라는 것입니다.

이것은 새로운 면이라고 말하여도 결국 자신이 가지고 있는 정보의 새로운 관계라는 것이죠.
추상화의 높은 수준을 가더라도 보이는 새로운 면들은 다시말해서 추상화를 통해 추출한 대상이
가지고 있는  보이지 않던 속성들인것 같습니다.



tags : 추상화
Trackback 0 : Comment 0

추상화의 비용?

Trivia 2008.02.06 16:54
큐브 맞추기와 개발에서 말한 추상화의 비용에 대해 생각 해 보자면,

전 이것은 두가지로 나누어 이야기 할수 있을 것 같습니다.

1. 추상화와 학습비용
   -낮은 수준의 학습을 거치지 않고 높은 추상화 수준을 공부하더라도 추상화의 공동화(空洞化)를
   불러일으키기 때문에 다시 낮은 수준을 공부를 해야한다.
  -높은 수준의 추상화 수준에서의 학습비용과 낮은 수준의 추상화 수준에서의 학습비용은 같다.
  

2. 추상화의 범위
   -높은 추상화의 수준으로 올라갈수록 상세한 사항은 은폐된다.
   -높은 추상화로 올라갈수록 보이지 않던 새로운 추상화의 면을 발견할수 있다.
     즉 처리해야 할 정보의 양은 감소하지 않는다.

결론을 내기위해 하고싶은 이야기가 있습니다.
    1. 인간이 처리할수 있는 정보의 양은 한정되어 있다.
    2. 개개인에게 맞는 학습 패턴은 틀리다.


 우리가 어떤 것을 배울때 2가지의방법을 생각합니다. TOP DOWN과 BOTTOM UP입니다.
TOP DOWN은 전체적인 개념을 먼저 알려주고 그세부사항을 찾는것입니다.
BOTTOM-UP은 반대로 구체적인 예로서 가장 뒤에 개념을 일러줍니다.

 위의 두가지 기술에는 장단점이 있는데, 어느 쪽이든 한쪽의 공부 만으로는 전체를 보기 어렵게 됩니다.
예를 들면 추상화계층의 공부만을 하게 되면 조엘이 언급한 추상화의 구멍을 메꾸지 못해 제대로 대상을
제대로 이해할수 없게되고, 세부에 치중하게 된다면 사물의 같은 부분만 보게되어 전체를 이해할수 없게
됩니다.

 하지만 전체를 세밀하게 훑어보기에는 인간의 능력은 한계가 있습니다. 게다가 추상화를 통해 정보를
제거 한다고 하더라도 높은추상화 층에서만 보이게 되는 사물의 새로운 면에 대한 정보로 전체적인
정보의 양은 감소하지 않게 됩니다.

 때문에 결국 전체적인 학습비용은 변하지 않게 됩니다.

 이것을 해결하는 효과적인 방법은 처음에 말한 2가지 학습 방법중, 자신에게 학습패턴을 통해
추상화의 범위를 조절해가는 것입니다. 그렇게 하더라도 물론 비용불변의 법칙은 변하지 않습니다.

Trackback 1 : Comments 4

추상화의 본질?

Trivia 2007.12.18 14:45
 추상화의 본질은 복잡도가 일정 규모 이상의 집단의 자기조직화 현상에 깊은 관련이 있다.

 얼마 전 읽은 글 김창준님의 협력을 통한 추상화을 읽고 나서 찾아낸 공통점이지만 낮은 수준에서 높은 수준의
발현(추상화)으로 이어지는 원리중에 하나는 얼마전 쓴 글 공부잘하는사람과... 에서 말했던 "정리"와 관련이
있다. 

 협력을 통한 추상화에서 말하는 추상화는 타인에게 설명을 통해 새로운 관점을 본다는 것이다.
다른사람에의 설명이라는 것은 자신의 정보를 정리하는것에서 시작한다. 이러한 정리를 통해 정보의 복잡도가
일정 규모를 이루게되면 새로운 추상화 수준으로 현상의 밖에서 볼 수 있는데(물론 항상그런것은아니다)
이런 추상화 수준에서는 이전에 보이지 않던 다른 관점들이 보이게 되고 새로운 정보를 얻을수있다.
(사실 이러한 현상은 자연현상으로서 자기조직화를 통한 창발성(emergence)과 관련이있다.)

 이 주장의 근거는 뇌의 창발성 및 지능, 개미군락의 지능적 대응(개개의 개미의 뉴런은 그러한 복잡한 대응을 할만한 수준이 안됨 *뉴런의 개수는 약 1만에불과)과 관련하여 설명되어지는 이론이다.

 좀더 정리하자면 집합-패턴-복잡도-자기조직화 의 관계인데,  집합 및 패턴은
규모의 복잡도-자기조직화-복잡도-자기조직화-....로 이뤄지는 재귀집합이다.
Trackback 0 : Comments 2

추상화의 봉쇄

Trivia 2007.12.15 23:57
 요즘 생각하는 키워드가 추상화에 대한 것이라서인지 어떤 책을 읽어도 연관되어 생각된다.
그중 한가지가 추상화의 봉쇄이다.

 만약 우리가 어떤것을 추상적으로 생각할때 가장 주의를 기울여야 하는 부분은 그 추상화가
하위의 개념들과 완벽히 분리되어 있는가 이다.

 이 봉쇄란 개념이 없다면 추상화는 의미가 없어져 버린다. 예를들면 시계의 운동이 하위 양자역학에
얽매이게 된다면 시계란 개념을 가질수 없게된다. 마찬가지로 물리와 화학,생물학의 분야가 나눠질수
있게되는 가장 큰 이유중 하나는 각각의 연구가 다른 하위 연구에 대해 봉쇄될 수 있기 때문에 다른 분야의
상세한 지식을 갖지않고도 자신의 연구를 계속할수 있다.
 즉 각각의 분야는 서로 공유할수있는 공통된 추상화 명제를 가지고있다. 이명제는 하위 추상화에 대해 봉쇄될수
있는 명제이다.

 즉 하위 구상화의 대한 모든 정보가 없이도 추상화된 정보로서 사고가 가능한것은 하위 추상화에 대한 봉쇄
가능하기 때문이다. 만약 이것이 불가능하다면 어떤 것을 기술할때 하위의 언어로 기술하지 않으면 안된다.
 예를들면 하늘에 던진 단순한 공의 운동을 설명하기 위해 공의 운동을 분자수준에서 기술하는것과 같다.

 추상화의 개념을 이끌어내기 위해서는 이러한 상세를 은폐할수있는 명확한 개념을 잡는것이 중요하다.


p.s 아직 마무리된 개념이 아니기에 마지막이 좀 어색하다.
Trackback 0 : Comments 4

추상화와 구상화2

Trivia 2007.12.08 17:53
     얼마전 쓴 글 추상화와 구상화에 대해 몇가지 더 떠오른 생각들이 있어서 쓴다.

언젠가 나도 생긴 버릇이지만 조금 짜고 컴파일 하고 돌려본다. 뭐 TDD(Test-Driven Development)에서는 좋은 것일지 모르겠지만 로직이 흐르고 정상적으로 동작함을 기계에게 의존하게 된다. 이것이 지속되다 보면 코드의 흐름을 머리속에서 놓쳐 버린다. 부분부분 분명 뭔가를 받고 뭔가를 토해내고는 있지만 이 시스템이 뭘 하고 있는지에 대한 감은 점점 놓친다.


 이 시스템이 뭘 하고 있는지에 대한 감을 놓치는 이유는 아마 코딩을 하면서 추상화의 수준을 내려갔기 때문에
애초 무엇을 하려고 했는지에 대한 높은 추상화수준의 감을 놓쳐버린게 아닐까?
 즉 정확히 말하면 구상화에 집중함으로서 추상화의 감을 놓쳐버린것이라 볼수있다.

 TDD의 목적은 전 코드의 실행 테스트라기보단 코드의 행위에 대한 테스트를 통해 개발을 주도한다는 말이다.
이러한 착각을 불러일으키는 테스트 주도 개발(TDD)란 이름을 최근 재정의해 BDD(Behavior driven development) 즉 행위 주도의 개발이란 이름으로 바뀌었다.
 무슨 뜻이냐 하면 각각 그 객체및 클래스가 해야할행동을 정의하고 그 행동의 달성을 테스트 함으로서
개발을 주도한다는것이다.
 이것을 인지하고 개발을 한다면 이 클래스가 무엇을 하려던 클래스인지에 대해 놓칠 우려는 적어들것이라
생각된다.

 그리고  몇일전 인용한 문장의

 최상위 아키텍쳐러가 걍 그림 그리는 것 아니다. 오히려 그런 사람들에게는 말단의 코딩실력까지 상당한 수준이 되어야만 한다


 이 부분에 대해 다른 예를 들어본다면 최고 건축 설계가가 건축에 사용되는 톱의 사용법에 대해 상당한 수준이  되어야 할까?

 내 생각은 추상화와 구상화의 관점에서 먼저 구현해야할 행동에 대한 전체적인 그림을 그려야한다. 이것은
높은 추상화의 상태에서 전체적인 틀을 보면서 작업해야한다. 그리고 완성된 각각의 부분에 대해 구상화를
들어감으로서 전체적인 그림이 망가지지 않은채로 자신의 작업 범위내에서 추상화및 구상화 작업에
들어가야한다.

 이것은 BDUF(Big Design Up Front)  과 bottom up의 관점의 이야기인데, XP의 점진적개선과 일반방법론의
큰 디자인으로 부터 시작하는 이야기와 연결된다.

 물론 둘다 장단점이 있겠지만 가장 큰 차이점은 프로젝트의 규모가 일정 범위를 넘어선다면 추상화의 범위를
축소하지 않고서는 전체적인 그림을 보기가 너무 힘들다는것이다.

..계속..
Trackback 0 : Comment 0

추상화와 구상화?

Trivia 2007.12.07 00:32
 몇일전 아는 지인과 대화중에 깨닭은 점인데,

추상화와 구상화의 범위에 대한 이야기였다.

...omitted...
최상의 아키텍쳐가 걍 그림만 그리는것이 아니다. 오히려 그런 사람들에게는 말단의 코딩 실력까지
상당한 수준이 되어야만 한다. 자신의 선 하나가 실제로 구현될 것 까지 예상을 하며 큰 그림을 머리속에
수행시키고 디버깅하고 검증할 수 있는 사람만이 전체 그림을 그릴 수 있다.
...omitted...


(*겐도사마의 재림:코드를 잘뽑아내고싶은가 그럼 컴퓨터를버려라 에서 6번째 단락)

 즉 어느 아키텍쳐는 추상화 수준을 자신이 구현하고자 하는 기능의 동작코드까지 단숨에 끌어 내릴수 있어야 한다.

는 이야기라 볼수있다.

 하지만 반대로 그 지인은 전체 프로젝트에서 아키텍트가 커버할수 있는 범위가 있다고 했다.
예를 들면 프로젝트란 현실세계의 비지니스 및 구현대상을 적절히 추상화시켜 구상화하는 작업이라
볼 수 있다.  하지만 프로젝트에서 한사람이 감당 할 수 있는 추상화 범위의 한계가 있기 때문에 추상화의
레이어를 나누어 담당하게한다.
 그 중에서 가장 윗부분의 추상화 레이어를 담당하는사람이 아키텍트가 되고, 그 가장 아랫부분을 담당하는
사람이 실제 코딩을 담당 한다는 말이다.

 내 생각에도 인간이 감당할 수 있는 추상화의 범위가 있어서 프로젝트가 일정 규모를  넘어선다면
실제 구현되는 코딩까지 생각하는것은  무리라고 생각된다 , 때문에 큰 프로젝트의 경우에는 데이타베이스
전문가, 분산시스템 전문가, 비지니스분석 전문가 등등의 역활에 맞는 전문 분야의 사람들이 모여 하나의
시스템을 설계한다. 이러한 레이아웃에 따라 대상을 구현하는 사람들이 있고 이 안에서(정해진 기능의 안에서)
적절한 추상화를 통해 패턴화된 코딩을 만들어내는 등의 범위가 정해지게된다.
 즉 한사람이 모든것을 그려가며 설계하는 것은 불가능에 가깝다.

p.s1 물론 이러한 추상화에서도 하위 레이어와 맞지않는 구멍이란게 존재할수있는데, 어느 올바른 추상화를
       이끌어 내느냐는 그사람의 능력이되고 또 그 능력은 하위 시스템에 대한 구현경험이 도움이 될 수 있겠다.

p.s2  연구 결과에 의하면 밀러의 매직 넘버라고 해서 인간이 평균적으로 한번에 기억할수 있는
        최대개수가 7개라고 한다.때문에 이에 맞추어 클래스의 메소드 수는 7개를 넘어서지 말아야한다라든지
        파라메터 ,변수의 개수를 7이하로  조절하는 구현 지침이 있다.
Trackback 1 : Comment 0