본문 바로가기

Project

추상화와 실용주의

 얼마전 써니님의 글에서 논란이 된 추상화란 단어에 대해 제 생각을 이야기 해야할것같아서 글을 적습니다.
 
먼저 많은 사람들이 오해하고 있는 점이 추상화는 뜬구름 잡는 이야기가 아닙니다.
전 오히려 추상화는 실용주의에 가깝다는 생각입니다.

 알다시피 컴퓨터의 역사는 좀더 적은 명령어로 많은 일을 하기 위한 역사로 볼수 있습니다.
깊게는 cpu레벨의 수십개의 명령어(instruction)를 하나의 명령어(command)로 표현하거나
(MMX/SSE/SSE2), language레벨의 foreach , [1..10] 등이 있습니다.
 
 추상화는 이처럼 좀더 편하게 , 좀더 효율적으로 원하는 일을 하기위한 실용적인 방법입니다.
그렇다면 어떻게 하면 좀더 편하고 효율적으로 일을 처리할수 있을까요?

 이 질문은 소프트웨어 공학의 관심사의 다른 질문으로 치환될수 있습니다.
즉 "어떻게 하면 가장 효율적인 방법으로 원하는 제품을 만들수 있을까?" 라는 질문입니다.
이 질문에 대한 답으로 구조적 프로그래밍, 객체지향이라는 패러다임이 나타났습니다.
(좀더 이야기하자면 소프트웨어 위기와 복잡성의 제어라는 이야기를 꺼내야 하지만 이 글에서는
언급하지 않겠습니다)

 제 결론은 이렇습니다.
 java.io , java.lang를 분석해가며 객체지향 ,디자인패턴,프레임워크 등에 대해 알수는 있겠지만
앞서 말한 고민이 없이는 그것을 제대로 이해하기는 힘들것입니다.