brunch

낭만주의 : 개인감정과 함수의 선언

개인감정과 함수의 선언

by jeromeNa

하나의 프로그램은 많은 기능을 가지고 있다. 일례로, 가장 많이 쓰는 카카오톡을 보자. 카카오톡의 기본 적인 기능은 대화하는 것이다. 상대방의 대화, 내가 쓴 대화가 양 옆으로 노출만 되면 되고, 실시간으로 전송되면 된다. 내가 쓴 글을 상대방에게 전송하고, 상대방이 쓴 글을 내가 받는다. 기본적인 기능이다.


내가 쓴 글을 카카오톡을 실행 사람 모두에게 전송된다면 어떻게 될까? 사생활을 공개하는 것과 마찬가지일 것이다. 내가 쓴 글은 나와 같은 방에 있는 사람에게만 전송되어야 한다. 방의 기능이 추가되었다. 카카오톡을 실행하면 다른 사람은 볼 수 없고, 오로지 나와 대화하는 사람만 있는 방만 있으면 안 된다. 대화방 리스트가 나와야 한다. 방 여러 개를 만들 수 있는 기능이 추가된다. 방이 많으면 찾을 수 있어야 한다. 검색 기능이 추가된다. 이제 더 이상 사용하지 않는 방은 정리해야 한다. 방 삭제 기능이 추가되었다. 이런 식으로 기능들이 추가되면 위에서 말한 변수, 조건, 반복, 체계적 데이터만으로 가능할까? 쉽지 않을 것이다.


독립적으로 작동할 수 있는 기능들을 만들고, 서로 필요할 때 연결해서 사용할 수 있는 것을 모듈(Module)이라고 한다.


프로그램 초창기에는 모듈이라는 개념보다는 코딩 하나가 프로그램 전체에 해당했다. 코딩만 10,000줄 이상 넘어가는 것을 자랑처럼 생각했다. 하나를 고치려고 해도 쉽지 않은 시도이다. 기능별로 나누어진 것이 아닌 코드의 줄로 나누어 goTo라는 명령어로 줄 번호를 옮겨 다녔다. 엄청나게 체계적이고, 정리가 되어 있지 않으면 찾기도 힘들고, 수정도 불가하다.


모듈화는 독립적인 기능을 수행한다. 방 제작 모듈, 대화 모듈은 각기 독립적으로 수행이 가능한 프로그램이다. 여기에 모듈들을 불러와 사용하는 공통 프로그램이 존재한다. 공통 프로그램도 모듈이 될 수 있다. 공통 프로그램은 방 모듈을 사용해서 방을 만들고, 대화 모듈을 사용해서 만든 방에서 대화할 수 있도록 사용할 수 있다. 방을 만들 때 버그가 발생한다면 방 모듈만 수정하면 된다.


// 개별적인 기능을 하는 모듈화 된 함수
function expressEmotion(feeling) {
if (feeling === "joy") {
return "하늘이 황금빛이야!";
} else if (feeling === "melancholy") {
return "내 영혼이 너무 우울해.";
} else {
return "내 마음은 아무 감정도 없어.";
}
}

// 함수를 호출하여 개인적 표현을 구현
console.log(expressEmotion("joy"));
console.log(expressEmotion("melancholy"));


코드에서 expressEmotion은 간단하게 감정을 표현하는 함수이다. feeling이라는 변수를 받아서 해당하는 기분에 따라 표현된 문장을 return (반환)하게 된다. joy라는 값을 넣고 함수를 실행(호출) 했을 때 결과는 ‘하늘이 황금빛이야!’라는 표현을 반환하고 console.log가 화면에 노출한다.


// 낭만적인 시구를 생성하는 함수 (재사용 가능)
function romanticPoem(natureElement, emotion) {
return `${natureElement}의 속삭임은 ${emotion}적이다.`;
}

// 같은 함수지만 다른 감정을 넣어 다양한 표현 가능
console.log(romanticPoem("바다", "갈망"));
console.log(romanticPoem("숲", "평온"));
console.log(romanticPoem("산", "두려움"));


romaticPoem 함수는 2개의 변수를 받는다. (여기에 변수는 매개변수, 파라미터라고 한다.) 2개의 매개변수를 받아서 조합하여 시적 문장을 반환한다. ‘바다’, ‘갈망’을 넣어서 함수를 실행하면 ‘바다의 속삭임은 갈망적이다.’라고 노출한다.


이처럼 함수는 재사용이 가능하며, 매개변수를 이용하여 독립적으로 실행할 수 있다. 매개변수가 없어도 함수를 호출하면 함수 자체적으로 실행된다. 함수에서 다른 함수를 호출할 수도 있고, 자기 자신을 다시 호출하여 반복할 수도 있다. 이를 재귀호출이라고 한다. (같은 로직이 반복 실행이 필요할 때 유용하다.)


18세기 후반, 계몽주의(Enlightenment)의 논리적·이성적인 사고방식과 신고전주의에 반발하여,

예술가들은 ‘개인의 감정’과 ‘자연에 대한 감성적인 반응’을 중시하는 낭만주의를 발전시켰다. 엄격한 규칙이 아닌 개개인의 감정 표현과 자연에 대한 개인의 감성적인 반응을 중시하게 된다. 개개인을 함수라고 지칭했을 경우 자연과 감정에 대한 표현이 개개인이라는 함수에 따라 다르게 표현되는 것이다.


이성과 논리에 대한 거부와 인간 감정의 해방

계몽주의와 신고전주의는 이성과 규칙을 중시하면서, 개인의 감정과 상상력은 배제했다. 그러나 인간의 삶은 순수한 논리와 질서만으로 설명될 수 없는 감정, 상상력, 자연과의 관계가 중요하다는 인식이 퍼지기 시작했다. 낭만주의는 이러한 계몽주의적 합리성과 신고전주의적 규율을 거부하고, 감정과 개성을 해방하는 운동으로 등장했다.


또한, 18세기 후반부터 산업혁명(Industrial Revolution)이 영국을 중심으로 본격적으로 진행되면서,

기계화, 도시화, 노동자의 비인간화가 가속화되었다. 도시로 인구가 집중되면서, 인간의 자연과의 조화로운 삶이 파괴되었고, 공장 노동, 기계적인 일상, 빈부 격차의 심화 등이 사회 문제로 떠올랐다. 낭만주의는 자연을 이상적인 공간으로 상정하고, 인간과 자연의 조화를 강조했다.


AD_4nXfHZFELOOw2nN5Gs4eyN1DbgpHLrRrqeBEGX2uFzp53LripKrTbZ_nyj4_9oM2F1qDLeVzgXMd9ao-WyURyTyx0Kz-AOnop0boR7lvPtEqfC5ywQ4TxqRi20Cye-xsOXQj1yKNxDg?key=GdOjhPNd0mJvh694QQNh9_nX 테오도르 제리코, <메두사의 뗏목 (The Raft of the Medusa)> 1818-1819, Oil on canvas, 루브르 박물관


제리코의 메두사의 뗏목이라는 작품이다. 실제 역사적 사건(1816년 메두사 호 침몰 사건)을 바탕으로 제작하였고, 구조되지 못한 난파선 생존자들의 절망과 희망이 교차하는 순간을 극적으로 묘사한 것과, 혼돈과 감정의 극한을 담은 강렬한 구도와 명암대비가 돋보인다. - 메두사 호 침몰 사건은 1816년에 범주 전함 메두사호는 식민지로 향해 가는 관원과 함께 약 4백 명을 태우고 출발했으나 암초에 걸렸다. 배를 버리고 승원은 구명정에 탑승하였으나 노예였던 나머지 149명 때문에 커다란 뗏목을 만들었다. 그러나 대양에 나와 밧줄이 끊어져 뗏목 위에서는 물과 음식 때문에 피로 물든 싸움이 벌어졌다. 구조선이 나타났을 때 생존자는 15명이고 모두 빈사 상태였다. 이 보도는 세론을 들끓게 했는데, 제리코는 구조선이 나타났을 때 흥분한 순간을 표현하였다. -


AD_4nXfR-JJ2ORUkXxuctz9NefdBKLl-R0nz0ABi1NHpvUCi1BRZOeYOQqlO-pX-JE9w5OPBMOYDQqEhtRT1a0a8SlNRggXnT8TzhU2S08ZQffYwJz5iGApQZMBbCLGjEsjrwRCOGt2xNQ?key=GdOjhPNd0mJvh694QQNh9_nX 외젠 들라크루아, <민중을 이끄는 자유의 여신(Liberty Leading the People)>, 1830, Oil on canvas, 루브르 박물관


너무나도 유명한 작품이다. 프랑스 7월 혁명(1830)에 동참한 것으로 알려진 들라크루아가 혁명의 정신을 담은 작품으로 자유의 여신이 민중을 선도하며, 혁명의 열정을 상징한다.


AD_4nXf98M5YS_c6xnzic3QoVepCouAMX93ZdzWZHtFy2-By0ILarZxTT36X86lwGgI2KCASwWzFHf7iu_nEsx-kX4tRyp4zLb_6I9KtxDXt1hOCfg0cNsdaQCs5XIG9qwecOgzwY4LiBw?key=GdOjhPNd0mJvh694QQNh9_nX 카스파르 다비드 프리드리히, <안개 바다 위의 방랑자(Wanderer above the Sea of Fog>, 1818, Oil on canvas, 독일 쿤스트할레 미술관


이 작품 또한 어디선가 많이 봤던 유명한 작품이다. 인간이 자연 앞에서 느끼는 경외감과 철학적 사색을 표현하였고, 낭만주의의 대표적인 ‘고독한 인간과 자연의 관계’를 잘 표현하였다.


AD_4nXfuaNANOVPlfhCuKzTdy-kxBnkCMPGlCpU3BRuF77b5tSzAqG9lq9wRCBYwWk6dUXoNJWYqKpWgoAW5p3FtqVC2UPeAfFr80h3Bdativa4laDNZKGmvNRUvoqmW17S2vYXKnlw7_Q?key=GdOjhPNd0mJvh694QQNh9_nX 존 컨스터블, <건초 마차(The Hay Wain)>, 1821, Oil on canvas, 영국 내셔널 갤러리


영국 시골의 평화로운 풍경을 이상화한 작품으로 빛과 자연의 세부적인 묘사가 돋보인다.


낭만주의 미술은 신고전주의의 차가운 질서에서 벗어나, 감정과 자유로운 표현을 강조한다. 앞서 봤던 신고전주의의 그림과 사뭇 다른 느낌이다. 신고전주의는 개인의 감정보다는 논리와 엄격한 규칙 때문에 다소 딱딱한 분위기를 연출하지만, 낭만주의는 개인의 감성을 적극적으로 표현한다. 같은 풍경, 사건이라도 개인이 느끼는 감정에 따라 역동적이거나, 차분하거나, 평화롭게 캔버스에 담았다.


이러한 낭만주의의 특성은 프로그래밍에서의 함수와 유사점을 갖는다. 프로그래밍의 함수는 마치 낭만주의 화가와 같이, 동일한 기본 구조(캔버스)를 가지고 있지만 어떤 매개변수(감정, 시각)를 적용하느냐에 따라 전혀 다른 결과물을 만들어낸다. 함수 안의 로직은 변하지 않지만, 전달하는 변수에 따라 다양한 값을 반환하여 개인마다 다양하게 응용할 수 있는 것이다.


낭만주의가 개인의 감정을 폭넓게 다루었다는 점에 의의가 있듯이, 함수의 가치도 유연성과 재사용성에 있다. 낭만주의가 이전의 그리스, 로마 시대의 신화나 종교적 색채, 원근법이나 인체, 구도 등의 엄격한 규칙에서 벗어나 개인의 감정 표현으로 나아갔듯이, 프로그래밍에서도 함수는 엄격한 절차적 코드에서 벗어나 유연하고 창의적인 표현을 가능하게 한다.


낭만주의가 인상주의, 후기 인상주의, 추상화 등으로 이어져 개인의 감정 표현이 미술의 주류가 되는 계기가 되었듯이, 함수는 프로그래밍의 핵심 개념으로 발전하여 객체지향, 함수형 프로그래밍 등 다양한 패러다임을 가능하게 한다. 함수는 규칙 안에서 다양성을 표현할 수 있게 해주는 수단이다.




keyword