brunch

사실주의: 현실의 관찰과 객체 지향 프로그래밍

현실의 관찰과 객체 지향 프로그래밍

by jeromeNa

지금까지 개념위주의 사조와 프로그래밍을 봤다. 근세의 르네상스의 비례와 프로그램의 변수. 바로크의 역동성과 빛 그리고 프로그램의 조건문. 로코코의 향락과 사치, 프로그램의 반복문. 신고전주의의 엄격한 규칙, 형식과 프로그램의 데이터 구조. 낭만주의의 개인의 감정과 프로그램의 함수.


대부분 개념위주이고, 현실 세계를 그대로 반영한 것은 없었다. 이쯤에서 현실의 구조를 그대로 투영해서 반영하는 것을 생각해 볼 수 있다. 프로그램에서는 객체 지향 프로그래밍(Object-Oriented Programming, OOP)이고, 예술에서는 사실주의(Realism)이다.


객체(Object)는 현실 세계의 사물이나 개념을 프로그램 안에 담은 것이다. 각각의 객체는 자신만의 속성(attribute)과 동작(method)을 가지고 있다. 객체는 아무것도 없는 상태에서 만들어지지 않는다. 박스라는 객체를 만들기 위해서는 종이 또는 나무라는 재질이 필요하고, 박스를 만들기 위한 설계서라는 개념이 있어야 한다. 프로그램에서는 클래스(Class)라는 개념을 사용한다.


클래스는 객체를 만들기 위한 설계도이며, 개념적 범주이다. ‘사람’, ‘자동차’, ‘계약서’ 같은 개념을 정의하고, 이 개념을 실제로 만들어서 사용하는 것을 객체라고 한다.


// Worker라는 개념 (클래스)를 정의한다.
public class Worker {
private String name;
private String job;

public Worker(String name, String job) {
this.name = name;
this.job = job;
}

public String work() {
return this.name + " is working as a " + this.job + ".";
}

}

// Worker 클래스의 개념을 객체로 만든다.
Worker pierre = new Worker("Pierre", "stone breaker");
System.out.println(pierre.work());


Worker라는 클래스(class) 개념을 보면, 워커에는 이름과 직업이라는 변수가 있고, work()라는 실행할 수 있는 함수가 있다. work()를 실행(호출)했을 때는 ‘이름 is working as a 직업’이라고 전달(return)한다. Worker pierre = new Worker("Pierre", "stone breaker"); 이 부분을 여러 개 만들면, worker라는 객체가 여러 개 만들어진다.


이처럼 객체는 속성(변수)과 실행(메서드)이 있다. 현실세계의 속성과 행위가 있는 객체의 개념을 프로그램으로 가져와 현실세계를 그대로 구현한다. 객체지향 프로그래밍은 어느 언어에서건 사용되는 개념이며, 프로그래밍에서 가장 중요한 개념 중 하나에 해당한다.


19세기 중반, 낭만주의의 격정과 상상력이 무대에서 물러날 때쯤, 예술은 좀 더 냉철하게 세상을 바라보기 시작했다. 이상화된 세계가 아닌, 있는 그대로의 현실, 사람들의 노동과 고통, 일상의 평범함을 그리는 사실주의(Realism)가 나타난다. 지금까지의 왕, 교회, 귀족, 권력을 위한 예술이 아닌 평범한 현실 그대로를 그려야 한다는 사조이다.


실재를 탐구하는 사실주의


1848년 프랑스에서는 2월 혁명이 일어나 왕정이 무너지고 제2공화국이 탄생했다. 정치적 혼란, 계급 갈등, 도시 빈민과 노동자들의 삶의 고통이 극에 달한 시기였다. 사실주의는 이처럼 혼란한 사회 현실에 대한 예술가들의 직접적인 반응으로 나타났다. 예술의 역할은 더 이상 '도피적 낭만'이 아니라, 현실의 문제를 직시하고 기록하는 도구로 재정의되기 시작했다.


사실주의 화가들은 "더 이상 공주와 기사, 비극적 영웅 이야기만 그리지 않겠다.", "내 주변에서 일어나는 현실을 말하겠다."라고 말하면서 점점 현실 회피적이고 감상적인 방향으로 흐르는 낭만주의에 대해 반발했다.


18세기말부터 이어진 산업혁명은 도시화, 공장 노동, 빈민층 확대, 계급 갈등을 야기했다. 예술은 이러한 노동자와 농민의 삶, 인간 소외의 현실을 직접적으로 반영하기 시작한다. 대량 생산과 기계화로 인해 개인의 가치와 존엄이 무시되는 시대에 사실주의는 이름 없는 평범한 사람들의 목소리를 예술에 담으려 노력한다.


이러한 사실주의라는 용어 자체를 처음 주장한 화가는 귀스타브 쿠르베(Gustave Courbet)이다. 그는 "나는 천사를 본 적이 없기에 그릴 수 없다. 나는 내가 보고 아는 것만 그린다."라고 말하며 사실주의의 시작을 알렸다.


AD_4nXdq6AC_WqyjgwtkQQVGuQ9W9bAubOMG5ENIeTZXFQ9kqzeGFvETMrpAjB8RGCzvVMXilySeTVnPmun7vPZ_zN6ftt9sXgYRA2BT5BDj1Y1US7FzmRv3q_sLjP_0C8--3bIVK-Iohw?key=GdOjhPNd0mJvh694QQNh9_nX 귀스타브 쿠르베, <안녕하세요 쿠르베 씨!(Bonjour Monsieur Courbet)>, 1854, Oil on Canvas, 파브르 미술관


작품은 길을 걷다 만난 장면처럼, 자연스러운 포즈지만 중심에 위치 그림자까지 뚜렷이 표현되어 존재감이 강조된 사람이 쿠르베 자신이다. 왼편에는 쿠르베를 마중 나온 후원자 앨프레드 브뤼야스(Alfred Bruyas) 그의 하인은 모자를 벗고 인사하고 있다. 쿠르베는 이 그림을 통해 예술가가 귀족이나 후원자의 하인이 아니라, 동등한 존재임을 주장한다.


AD_4nXckKXWVo93vwc22M89SoIQoYAmlMbMR6qyI-Ts0Wxro_UZQeaQ69cfTwDsOgZiRaQg-ORKtkCW7MSdAnUNCJCxQ0_HuOIZeOFjtGpSqPTMfFvTCqB4Qj10nfXgyD2lGVXZV3agf?key=GdOjhPNd0mJvh694QQNh9_nX 장 프랑수아 밀레, <이삭 줍는 사람들(The Gleaners)>, 1857, Oil on canvas, 오르세 미술관


이후 언급할 인상주의의 고흐에게도 많은 영향을 준 밀레는 바르비종파의 대표적인 인물이다. 농촌과 농민의 노동, 종교적 경건함, 일상의 고단함을 서정적이고 사실적으로 묘사한 것으로 유명하다.


바르비종파는 프랑스 파리 남쪽의 바르비종(Barbizon) 마을 근처에 모여 살며 창작 활동을 한 화가들을 말한다. 이들은 도시와 살롱 중심의 이상화된 회화에 반대하며, 프랑스 퐁텐블로 숲(Fontainebleau Forest)과 농촌 풍경을 직접 관찰하고, 자연과 인간의 조화를 진지하게 표현하려 노력했다.


사실주의가 그림 속에 현실을 새겨 넣듯, 객체 지향 프로그래밍은 코드 안에 살아 있는 세계를 설계한다. 사실주의 화가는 왕이나 신화의 주인공이 아닌, 돌을 깨는 사람, 밭을 가는 농부도 동등한 인간으로서 그림의 주인공이 될 수 있다고 말한다. 프로그램 또한 추상적인 로직으로만 보는 것이 아니라, ‘사람’, ‘차’, ‘계좌’, ‘버튼’ 같은 현실의 단위를 객체(object)로 만들고, 그 안에 속성(attribute)과 행동(method)을 부여한다.


사실주의 화가들은 실제 경험과 관찰에 기반한 진짜 인간과 삶을 그리려고 했다. 객체지향에서도 마찬가지로, 소프트웨어는 먼저 현실을 관찰하고 분석하는 일로부터 시작된다. 예를 들어, ‘은행 앱’을 만들려면 먼저 현실의 ‘계좌’, ‘입출금’, ‘고객’이라는 객체를 관찰하고 정의해야 한다. "관찰은 해석의 시작이며, 설계는 현실의 반영이다."


이처럼 사실주의 화가는 관찰과 구조로 현실의 삶을 해석했고, 객체지향 프로그래머는 현실을 코드로 추상화하여 시스템으로 재구성한다.


keyword