추상화

 

1. 抽象畫
2. 抽象化
2.1. 컴퓨터공학에서의 추상화


1. 抽象畫


미술에서 사물을 눈에 보이는 것처럼 자연적, 사실적으로 재현하는 것이 아니라, 점, 선, 면, 색채 등의 표현을 목표로 하는 그림, 혹은 그 기법.(반대 개념은 구상화) 보통 부드러운 선으로 이루어진 것은 뜨거운 추상, 직선으로 간단명료하게 구성된 것은 차가운 추상이라고 부른다. 앞의 예로는 칸딘스키가 있고, 뒤의 예로는 몬드리안이 있다.
원래 목적은 현실의 정치, 이념, 경제논리 등에서 벗어나 순수하게 미적인 것만을 표현하자는 열망에서 시작되었다. 그 결과 선전의 수단이 될 수 있는 인물 묘사를 배제하게 되었다. 나아가 클레멘트 그린버그 같은 이론가는 회화는 회화다워야 한다고 주장하면서, 회화 이외의 요소는 전부 배제해야 한다고 주장하였다. 이것이 무슨 의미냐면, 서사는 문학에서 온 것이니 회화에서 스토리도 배제해야 하고[1], 입체감은 조각에서 온 것이니 음영같은 것도 넣지 말아야 하며, 공간감은 건축에서 온 것이니 원근법도 도입하지 말아야 한다는 주장이다. 이렇게 되자 점, 선, 면, 색채 같은 조형요소 그 자체의 아름다움만을 드러내야 한다는 생각에 사물 묘사마저 거부하는 단계로 나아가게 되었다.
이는 당시 모더니즘을 추종하던 다른 분야의 예술가, 건축가, 이론가들 역시 마찬가지였다. 미스 반 데어 로에, 르 코르뷔지에 같은 건축가(애초에 주류 건축은 추상에 근거한다. 구상에 근거한 건축은 대게 유치해지는 경우가 많다.)나 디자이너 모홀리 나기가 대표적. 이들은 사물에는 핵심구조가 있으며, 이 구조를 추려내는 것이 예술가가 해야 할 일이라고 생각했다. 그리고 이렇게 추상화한 결과물은 누구나 좋아하고 만족할 수 있는 작품이 될 것이라 생각했다. 이 때문인지 모더니즘은 회화, 디자인, 건축 할 것 없이 굉장히 단순한 구조를 강조하게 되었다.
하지만 이렇게 모든 대상을 미분화 시키고 단순화시켜 버리는 방식에는 치명적인 부작용이 있었는데, 오래 보면 지루하다는 것이었다. 이런 방식은 미술의 가능성과 다양성을 억누르는 결과를 낳았고, 결국 후대 예술가들은 이에 반발하는 작업을 펼치기 시작했다. 소위 포스트모더니즘이라 불리는 경향이 바로 그것이다.
다만 추상이 탐구하고 개발한 각종 이론과 기법들은 오늘날 디자인 분야에서 유용하게 써먹고 있다. 당장 미스 반 데어 로에칸딘스키 등이 참여했던 디자인 학교가 바로 전설은 아니고 레전드바우하우스다. 애플사에서 강조하는 단순한 미니멀리즘 디자인도 어찌보면 이 영향권 하에 있는 셈.
조선시대에는 민화(그림)가 그 역할을 자처했다. 19~20세기 조선에 침략했던 일본, 프랑스에선 "조선의 추상미"라며 싼값에 대량으로 민화를 방출해갔다. 일본에는 야나기 무네요시란 사람이 그 가치를 보고 잔뜩 사갔으며 민화라는 이름까지 붙였다. 이후 교토일본문예관을 세워서 전시중.

2. 抽象化


abstraction, 抽象化
추상적인 것으로 만들거나 되거나 한다는 뜻이다. 수학에서는 일반화라고도 한다.

2.1. 컴퓨터공학에서의 추상화


컴퓨터공학에서 추상화는 어떤 종류의 대상들에 대해 그것이 가져야 할 핵심적인 특징들을 가지는 '''모델'''을 만드는 것이다. 예컨대, '메모리 공간'이라는 모델은 '어떤 시점에 값을 가지며, 그곳에 다른 값을 기록하지 않는 한 다음에도 계속 그 값을 유지한다.'는 핵심적인 특징을 가지고 있다.
그렇다면 컴퓨터공학에서 추상화된 모델을 세운다는 것은 어떤 이점이 있는가? 우선 추상화 계층(abstraction layer)의 아래쪽-구현 측면부터 살펴보면, 모델은 ''그에 해당하는 것을 구현할 때 그것이 어떤 특징들을 가지도록 만들어야 하는지에 대한 명세(specification)''가 된다. 플립플롭을 이용하건 축전기를 이용하건, 메모리 공간은 '어떤 시점에 값을 가지며, 그곳에 다른 값을 기록하지 않는 한 다음에도 계속 그 값을 유지하'도록 만들면 된다. 다음으로, 추상화 계층의 위쪽-활용 측면에서 살펴보면, 우리는 이 모델에 해당하는 것의 특징들이 어떠한지 알고 있으므로, 모델은 ''대상이 내부에서 어떻게 동작하는지의 세부사항을 모르더라도 다른 것을 만들 때 활용할 수 있게끔 하는 인터페이스(interface)''의 역할을 한다. 우리가 메모리 공간을 가지고 간단한 프로그램을 만들 때, 그 메모리 공간이 플립플롭으로 만들어진 레지스터에 있는지 축전기로 만들어진 DRAM에 있는지에 상관없이 우리는 그 메모리 공간이 '어떤 시점에 값을 가지며, 그곳에 다른 값을 기록하지 않는 한 다음에도 계속 그 값을 유지하'는 특징을 가진다는 것을 알고 있으므로 이를 활용하여 프로그램을 만들 수 있다. 심지어 그것이 일반적으로 생각하는 메인 메모리가 아니라 디스크 같은 곳에 있거나 아예 네트워크상의 어딘가에 있더라도 신경쓸 필요가 없다.
마찬가지로, 명령어 집합 등 인터페이스 역할을 할 머신의 모델만 잘 정의되어 있으면, 그것이 실제 기계에서 돌아가는지, 아니면 소프트웨어적으로 시뮬레이트되는지에 상관없이 우리는 운영체제를 그 위에서 돌릴 수 있다. 이런 식으로 우리가 생각하는 실제 물리적 대상이 없어도 그 모델이 명세한 특징들을 가지도록 인터페이스만 만들어 놓으면 그것을 실제 대상인 것처럼 활용 가능한 가상화(virtualization)는 그 구현에 상관없이 그것을 활용할 수 있다는 추상화된 모델의 특징을 매우 잘 보여 주는 사례라 할 수 있겠다. 우리는 앞에서 설명한 추상화의 두 가지 측면을 이용하여 복잡한 구조의 어떤 부분을 만들 때 만약 그 부분이 가져야 할 특성들을 명세한 모델을 세워 놓았다면 그 세부사항의 구현과 그 부분을 활용하는 구현을 분리해 구현할 수 있다.
음악이 나오는 웹 사이트를 만드는 것을 예로 든다면 웹 사이트의 개발자는 브라우저에서 제공하는 소리가 나오게 만드는 HTML테그에 MP3 음악파일을 연결해주기만 하면 된다. 웹 개발자가 사용자의 컴퓨터의 환경이 Windows인지 macOS인지 안드로이드인지를 알아내어 각 운영체제별로 알맞는 오디오 API를 호출하고 할 필요가 없다는 것이다. API를 호출하는 것은 브라우저에서 내부적으로 구현되어 있고 소리가 나게 만드는 HTML테그가 실행되면 그것이 실행되도록 브라우저 엔진이 만들어졌기 때문이다. 그리고 브라우저의 개발자도 오디오 장치가 Realtek인지 Creative인지 Nvidia인지 아니면 아예 컴퓨터 주인이 원격 데스크톱을 사용하고 있거나 트위치에 방송을 하고 있는지도 신경쓸 필요 없이 운영체제의 오디오 API만 호출하면 소리가 나게 만들수 있다. 운영체제 내부적으로 장치 드라이버를 통해 오디오를 출력하는 것이 구현되어 있기 때문. 심지어는 운영체제 개발자도 추상화된 드라이버 규격만 지정해두면 그 규격에 맞추어 하드웨어 제조사에서 하드웨어를 직접 제어하는 드라이버를 만들기 때문에 운영체제 개발자도 오디오 장치를 직접 제어하는 것에 신경쓸 필요가 없다. 그리고 여기에서 알 수 있는것은 추상화가 세부적인 것을 신경쓸 필요가 없게 만들어 주기도 하지만 하위 계층을 직접 사용할수 없게 만들기도 한다. 예를 들면 웹 사이트의 개발자는 운영체제의 API를 호출할수 없고 브라우저의 개발자는 하드웨어를 제어하는 코드를 사용할수 없다. 만약 추상화가 각 계층에서 전혀 이루어지지 않았다면 웹 사이트가 하드웨어를 제어하는 민감한 코드에 무제한으로 접근할수 있게 해야함으로 시스템 안정성이 떨어지고 보안상 위험해진다. 이렇게 추상화를 통해 샌드박스 환경을 만들수 있다.[2]


[1] 스토리가 살아있는 만화와 비교해보자.[2] 단 추상화 계층을 통할 경우 실행속도는 대체로 느려진다. 또 다른 샌드박스인 NaCl의 경우는 애플리케이션이 샌드박스와 동등한 계층(CPU)에서 실행되지만 샌드박스가 앱의 네이티브 코드를 분석해서 부적절한 행동을 제약하는 방법에 가깝게 샌드박스를 구현해서 별도의 추상화 계층을 통하지 않고도 바로 네이티브 코드와 API가 실행됨으로 속도가 상당히 빠르다.