추상화란 무엇일까?

반응형
반응형

*주의 : 이 글은 CODE라는 책을 읽고 영감을 받아 작성한 글입니다.

일반적인 프로그래밍 추상화에 대해서는 설명하지는 않습니다. 저는 프로그래밍 추상화와 다른 추상화에 대한 미묘한 차이를 이해하고자 이 글을 작성하였습니다.

이 글을 읽으면 추상화에 대한 대략적인 감을 익힐 수 있을지는 모르겠지만, 프로그래밍 추상화에 대한 이해는 어려울지도 모릅니다.

 

프로그래밍을 공부하다 보면 추상화라는 단어가 눈에 많이 들어옵니다.

하지만 이 단어가 쉽게 와닿지가 않습니다.

우리가 흔히 알고 있는 추상화는 다음 과 같은 그림들일 것 입니다.

 

 

 

 그렇다면 프로그래밍에서는 어떻게 사용될까요?

흔히 우리가 프로그래밍상에서 알고있는 추상화는 구현체가 없는 메소드입니다.

그런데 위 그림과 프로그래밍에서 말하는 추상화는 전혀 다른 의미를 가지는 것 같습니다.

왜냐하면 그림은 그 자체가 구현체인데 프로그래밍상에서는 구현체를 만들어 줘야 하기 때문이죠.

하지만 애석하게도 두 개의 뜻과 의미는 정확하게 일치 합니다.

 

이제 추상화의 뜻을 검색해봅시다.

 

 

 그래서 어쩌라는걸까요? 추상화의 뜻이 추상적인 것으로 만들거나 하는 것이라고 하는데...

그래서 추상이라는건 도대체 뭘까요?

 

어째서 위의 그림들은 왜 추상화라고 하는 것일까요? 

 

제가 생각할때 추상의 가장 큰 특징은 사람마다 다른 해석이 가능하다는점입니다.

예륻들어 위의 그림중 하나를 선택했다고 칩시다.

물론 그림이라는건 제목이 있습니다. 그러면 그 제목에 따라 해석하겠지만... 제목이라는건 화가가 직접 만들긴 하겠지만... 만약, 제목이 없다고 생각해보세요.

 

 

자 지금부터 세상에서 제일 추상적인 것을 소개하겠습니다.

바로 숫자입니다. 숫자는 단언컨데 가장 추상적입니다. 왜 숫자가 추상적일까요?

 

 

이걸 읽어 보세요.  숫자: 7

 

뭐라고 읽히신가요? 누구는 칠이라고 읽지만 또 누군 가는 일곱이라고 읽을 것이며

또 누군가는 세븐이라고 읽을 겁니다. 

 

네? 이건 언어라구여? 네 맞아요. 언어입니다. 언어도 어떻게 보면 추상적이죠.

근데 언어는 너무 광범위하죠... 그래서 숫자로 한정지어서 설명한것 입니다.

 

그래서 결국, 추상화라는 건 사람마다 어떻게 보이느냐에 따라 결과?가 달라진다고 할 수 있습니다.

이걸 프로그래밍 상으로 오게 되면

대표적으로 자바에서 추상화에 많이 사용되는건 interface가 있죠.

 

여기서 구현체는 생각(사람)입니다. 인터페이스로 뭔가를 만들었습니다.

 

그러면 구현체는 무수히 많이 만들 수 있습니다. 왜냐하면 인터페이스를 어떻게 보냐에 따라 구현체도 달라 질 수 있기 때문이죠. 그래서 구현체는 사람이라고 표현한겁니다.

 

그렇다고 진짜 구현체가 사람이라고 생각하시면 안됩니다. 이건 그냥 비유일 뿐입니다. 죄송합니다 ㅎㅎ

 

 

아무튼 정리 해보자면 추상화라는건 여러가지로 해석이 가능해야 한다. 프로그래밍 상에서는 구현체 같은걸로 현실에서는 언어로....  

 한 문장으로 정리하면 추상화는 관점이다!

반응형

댓글

Designed by JB FACTORY