brunch

추상주의 : 형식의 순수화와 구조적 추상화

형식의 순수화와 구조적 추상화

by jeromeNa
추상주의는 큐비즘과 다다이즘 중간에 생긴 예술주의입니다. 뭔가 빠진 듯한 느낌이었는데, 이번화는 좀 늦었지만 추상주의를 추가하여 연재합니다.


‘추상화’라는 말이 있다. ‘추상화’는 ‘많은 세부를 버리고 핵심만 남기는 것.’이라는 의미와 ‘복잡하고 구체적인 현상에서 공통된 구조, 성질, 본질만을 뽑아내는 것.’이라는 의미를 가지고 있다.


법, 제도, 조직 등은 복잡한 인간 행위를 일정한 규칙으로 단순화하여 다룰 수 있도록 만든 추상 시스템이다. ‘학교’는 수많은 개인, 공간, 규칙이 모인 구체적 집합이지만 사회적으로는 교육이라는 역할을 수행하는 '개념화된 제도'로 기능한다.




프로그래밍에서의 추상화(abstraction)는 복잡한 시스템을 단순한 구조나 개념으로 표현함으로써,

이해하기 쉽고 유지보수하기 쉬운 코드를 만드는 핵심 개념이다. 다시 말해, 불필요한 세부사항을 감추고, 중요한 특징(기능, 동작)만을 노출하는 것이다.


abstract class Animal {
String name;

Animal(String name) {
this.name = name;
}

// 추상 메서드: 하위 클래스가 구현해야 함
abstract void speak();
}


위의 코드는 추상화한 코드이다. Animal(동물)이라는 추상화된 클래스를 통해 동물은 speak() ‘짖는다’라는 공통 동작을 수행한다.


class Dog extends Animal {
Dog(String name) {
super(name);
}

@Override
void speak() {
System.out.println(name + " says: 멍멍!");
}
}

class Cat extends Animal {
Cat(String name) {
super(name);
}

@Override
void speak() {
System.out.println(name + " says: 야옹!");
}
}


추상화를 사용하여 개와 고양이를 구체화한 코드이다. 이처럼 Animal이라는 추상화를 통해 다양한 동물을 구현할 수 있다.

다른 예로 리모트컨트롤은 기기를 켜고 끄는 기능을 수행하는 추상화로 정의할 수 있다.

interface RemoteControl {
void turnOn();
void turnOff();
}


추상화된 리모트컨트롤로 다양한 기기 제어가 가능한 코드를 작성한다.


class TV implements RemoteControl {
public void turnOn() {
System.out.println("TV 켜짐");
}

public void turnOff() {
System.out.println("TV 꺼짐");
}
}

class AirConditioner implements RemoteControl {
public void turnOn() {
System.out.println("에어컨 켜짐");
}

public void turnOff() {
System.out.println("에어컨 꺼짐");
}
}


이처럼 추상화는 공통된 기능과 동작만 정의해 단순화한다.




20세기 초, 유럽의 예술가들은 더 이상 보이는 세계를 재현하는 것만으로는 충분하지 않다고 느꼈다. 그들은 물체의 외형, 공간의 깊이, 감정의 묘사까지도 지워가며, 오히려 남겨진 점, 선, 면, 색으로‘ 시각 언어의 본질’을 말하려 시도한다.


AD_4nXfF4bU17wkfyxnFlSlUuyfVhHOM_VYCvjD85MTMN8poV5t11X4uXY7L_590CUYZwb5scMCdM3Kw1ImFJucNJqA_2HhrunnZUFPcpJo8twCsseE353SLRaluZEY_cDqFfqMHITEe?key=GdOjhPNd0mJvh694QQNh9_nX 바실리 칸딘스키, , 1913, Oil on canvas, 모스크바 트레티야코프 미술관


바실리 칸딘스키(Wassily Kandinsky)는 “보이지 않는 것을 그리기 위해” 색과 선을 음악처럼 조율했다. 음악의 리듬과 감정을 회화로 번역한 구성으로 종교적, 내면적 주제를 선과 색의 운동으로 표현하였다.

AD_4nXcqcNTZl1ciGCl3LKyPOB7mWAXBQgCAG3Cwb3vO9UYMwNg_5Xt-i93EX_CSV4KtEPHrB7vGwkydVHAvw2jckq0BaYpDXhxxRRjdTyWGofFBzNrZLtySl3ql4XdHk4zGnEItfAO1kw?key=GdOjhPNd0mJvh694QQNh9_nX 피드 몬드리안, <Composition with Red, Blue and Yellow> , 1930, Gemeentemuseum (네덜란드)


피트 몬드리안(Piet Mondrian)은 자연의 복잡함을 가로, 세로 선과 삼원색만으로 환원하여 시각적 질서를 설계하였다. 수직과 수평의 직선, 기본 색(빨강, 파랑, 노랑)만을 사용하였고, 완전한 질서와 균형, 조화의 추구와 자연의 복잡성을 제거한 형식적 순수성의 시각화를 표현하였다.




추상화는 "무엇을 한다"에 집중하게 하고, "어떻게"는 숨기는 것이 핵심이다. 추상화가들은 현실의 단순한 묘사가 아닌, 감정의 구조, 질서의 설계, 본질로의 환원을 추구하였다. 프로그래밍도 복잡한 문제를 해결하기 위해 구체적인 것들을 추상화(abstraction)하여 구조적으로 다시 설계하는 작업이다. 이는 불필요한 세부사항을 감추고 중요한 구조만 드러내는 일이다.


인상주의 이후, 예술은 보이는 것에서 느끼는 감정으로의 전달로 발전했다. 불필요한 것은 제거하고 본질에 집중하는 추상화는 독일의 바우하우스를 중심으로 디자인이라는 개념으로 확장되었다. 칸딘스키는 바우하우스의 교육담당으로서 중요한 역할을 했다.


단순할수록 명확하고 아름다움이 있다. 그러나 이는 아무런 의미가 없는 단순함이 아닌, 모든 것이 함축된 단순함이어야 한다. 모든 것을 그대로 담아내고 표현하는 것은 복잡하고, 핵심과 본질이 보이지 않으며, 아름답지도 않고 오히려 지저분해 보인다.


칸딘스키는 '사물을 그리는 것이 아니라, 그 사물이 주는 감정과 구조를 표현한다'라고 말했다. 그는 있는 그대로가 아닌, 느끼는 감정의 본질에 가까워지는 예술을 지향했다. 프로그래밍에서도 마찬가지로, 핵심적인 기능만을 명확하게 구성하는 코드일수록 더 아름답고 강력하다.




keyword