개발자 관점에서 본 전체 흐름
서양 미술사는 인간이 세상을 이해하고 표현하려는 시도로 가득 찬 이야기다. 각각의 시대는 새로운 철학과 기술을 통해 창조적 사고를 확장했고, 그 결과 우리는 르네상스의 원근법부터 인상주의의 순간적 기록에 이르기까지 다양한 미술적 성취를 경험할 수 있었다. 이 과정은 프로그래밍의 기초가 형성된 흐름과 닮아 있다. 데이터를 추상화하고, 알고리즘을 설계하며, 현실의 문제를 논리적으로 해결하려는 프로그래밍의 진화와 닮아 있다.
이러한 유사성은 1415년, 이탈리아의 건축가 브루넬리스키는 한 가지 실험을 한다. 그는 피렌체의 대성당 앞에 서서 작은 구멍이 난 거울을 사용해 대성당의 모습을 정확히 재현하려 했다. 구멍을 통해 대성당을 보고, 캔버스에 투영된 모습을 관찰하며, 그는 원근법이라는 혁신적인 기법을 고안한다. 이 기술은 단순히 예술 기법의 발전을 넘어, 3차원 세계를 2차원 평면에 담아내는 새로운 사고방식을 열었다.
르네상스 : 인간 중심 사고와 데이터 부활
르네상스는 신 중심적 세계관에서 인간 중심의 사고로 전환된 시대였다. 예술가들은 원근법, 해부학, 빛의 작용 등을 연구하며, 인간의 눈으로 세상을 관찰하고 이를 캔버스에 재현하려 했다.
브루넬리스키의 원근법은 마치 프로그래밍에서 데이터와 변수를 다루는 방식과 유사하다. 원근법은 복잡한 현실을 단순한 선과 점으로 표현하여 하나의 체계적 구조로 만들었다. 변수 역시 현실의 정보를 코드라는 언어로 추상화하여, 데이터를 저장하고 조작할 수 있는 형태로 변환한다.
바로크 : 동적 도구와 절차적 사고
1600년대 초, 로마의 한 교회에는 새롭게 제작된 조각이 설치되었다. 잔 로렌초 베르니니의 [성 테레사의 황홀경]은 천사가 테레사의 심장을 창으로 찌르는 극적인 순간을 포착한 작품이다. 대리석 조각은 정적인 재료 임에도 불구하고, 테레사의 흐르는 옷자락과 천사의 날개는 역동성을 느끼게 했다.
베르니니는 관람자가 작품을 따라 시선을 이동하도록 정교한 대각선 구도를 설계했다. 이 구도는 프로그래밍의 절차적 사고와 같다. 절차적 사고는 데이터를 입력받아 처리한 뒤 결과를 반환하는 일련의 흐름을 설계한다. 조건문과 반복문은 바로크의 구도가 시선을 유도하듯, 데이터의 논리적 흐름을 제어하며 작업을 이어간다.
로코코 : 장식성과 반복의 미학
18세기 초, 로코코 예술은 바로크의 극적인 표현에서 벗어나 화려하고 우아한 장식성을 강조했다. 베르사유 궁전의 방들은 정교한 패턴과 반복적인 장식으로 가득 차 있었고, 이러한 요소들은 공간 전체를 조화롭게 만들었다.
이러한 반복의 미학은 프로그래밍에서 ‘반복문(loop)’와 유사하다. 반복문은 데이터나 작업을 효율적으로 처리하기 위해 동일한 작업을 여러 번 수행하는 도구이다. 로코코의 장식처럼, 반복문은 코드의 효율성과 간결성을 높이며, 프로그램이 복잡한 작업을 체계적으로 처리할 수 있도록 한다.
신고전주의 : 규칙과 구조
18세기 후반, 유럽은 산업혁명과 함께 질서와 구조를 중시하는 신고전주의의 시대를 맞이한다. 이 시기의 예술은 고대 그리스와 로마의 대칭성과 비례를 재현하며, 복잡한 감정보다는 단순하고 명확한 구성을 추가했다.
이 시점에서 프로그래밍의 데이터 구조를 떠올릴 수 있다. 배열(Array), 트리(Tree)와 같은 데이터 구조는 정보를 체계적으로 저장하고, 효율적으로 처리할 수 있도록 설계되었다. 네오클래시즘이 고전적 질서로 작품의 아름다움을 구현했듯, 데이터 구조는 체계와 논리를 통해 복잡한 데이터를 단순화한다.
낭만주의 : 개인감정과 함수의 선언
프랑스의 작가 빅토르 위고는 이렇게 말했다. ‘감정이 없는 예술은 아무것도 아니다.’ 낭만주의는 개인의 감정, 상상력, 그리고 주관적 경험을 예술의 중심에 두었다. 낭만주의 화가들은 현실의 재현을 넘어, 인간의 내면을 탐구하고 그 감정을 작품에 담아냈다.
이는 프로그래밍에서 ‘함수(funciton)’의 선언과 유사하다. 함수는 특정 작업을 독립적으로 처리하는 코드 블록으로, 문제 해결을 위해 작성자의 의도를 명확히 드러낸다. 함수는 각기 다른 작업을 수행하지만, 전체 시스템에서 하나의 중요한 역할을 담당한다. 마치 낭만주의 예술가들이 각자의 감정을 작품으로 표현했듯, 함수는 고유한 작업을 수행하며 전체 프로그램의 일부가 된다.
사실주의 : 현실의 관찰과 객체 지향 프로그래밍
19세기 중반, 귀스타브 쿠르베는 이렇게 선언했다. ‘나는 천사를 그릴 수 없다. 나는 본 것을 그릴 뿐이다.’ 사실주의는 이상화된 표현을 거부하고, 현실 세계를 있는 그대로 묘사하려는 시도였다.
객체 지향 프로그래밍(OOP)은 사실주의와 닮아 있다. 객체 지향 프로그래밍에서는 현실 세계의 객체를 디지털로 모델링하여 속성과 동작을 정의한다. 객체는 실제 사물을 표현하며, 서로 상호작용하는 방식으로 프로그램을 구성한다. 예술에서 노동자의 삶을 사실적으로 묘사한 쿠르베처럼, 객체 지향 프로그래밍은 현실 구조를 반영하여 복잡한 문제를 단순화한다.
인상주의 : 순간의 기록과 비동기 프로그래밍
1874년, 클로드 모네는 자신의 작품 [인상, 해돋이]로 예술사에 새로운 바람을 불러일으켰다. 인상주의는 순간적인 빛의 변화와 색채의 조화를 포착하며, 고정된 형태보다 찰나의 분위기를 강조했다.
비동기 프로그래밍은 이와 같은 순간적인 변화를 처리하는 프로그래밍 방식이다. 여러 작업이 독립적으로 실행되면서, 각 작업이 완료되기를 기다리지 않고 병렬로 처리된다. 인상주의가 빛과 색의 변화를 기록한 것처럼, 비동기 프로그래밍은 실시간으로 변화하는 데이터를 관리하여 유연한 시스템을 설계한다.
미술사의 흐름과 프로그래밍의 기초를 탐구하면서, 두 분야가 창의성과 논리를 결합하여 어떻게 인간의 사고를 확장했는지 발견할 수 있다. 르네상스에서 시작된 창조적 혁신은 바로크, 낭만주의, 사실주의를 거쳐 점차 복잡하고 정교한 시스템으로 발전한다. 프로그래밍 역시 데이터를 다루고 문제를 해결하는 기초 개념에서 출발하여 점점 더 고도화된 기술로 발전한다.
다소 억지스러운 연결일 수도 있지만, [그림 15]와 같이 르네상스의 원근법에서 시작하여 바로크의 시선 유도, 로코코의 반복적 장식, 신고전주의의 체계화, 낭만주의의 주관적 경험, 사실주의의 현실 묘사, 그리고 인상주의의 순간 포착으로 이어지는 미술사의 흐름은, 프로그래밍에서 변수의 개념에서 출발하여 절차적 사고, 반복문의 도입, 데이터 타입의 정형화, 독립적 함수의 등장, 객체 지향 프로그래밍, 그리고 비동기 프로그래밍으로 발전한 과정과, 개념이 비슷한 면이 있다.
전체적인 이해를 돕기 위해 흐름을 기준으로 작성한 것이기에, 작품과 프로그래밍 개념에 대해서는 생략했다. 각 장을 연재하면서 작품과 프로그래밍의 개념을 더 상세히 써 내려갈 생각이다.