본문 바로가기

떠들기

프로그래밍은 예술인가에 대한 짧은 고찰

최근 소셜 네트워크에서 소프트웨어의 제작은 예술과 유사하다는 글을 본 기억이 난다. 좀 지난 일이라 빠르게 흘러가는 SNS 특성상 그다지 원본글의 주소를 찾아 게시하고 싶은 마음은 없으나 잠깐 생각나는 바가 있어 적어두려고 한다.

예전부터 나는 소프트웨어나 코딩, 프로그래밍 같은 것들을 예술로 보지 않았다. 그 이유는 당연하게도 소프트웨어는 필요에 의해 만들어지는, 공학의 산물이기 때문이다. 그 목표가 아름다움이 아닌 실용성에 있기에 그렇게 생각한다는 것이다.

허나, 이제 어느정도 코딩을 좀 할 줄 알게 되고보니 약간 시야가 달라졌다. 결론부터 말하자면, 프로그래밍을 예술이라 한다면 산업디자인 같은 예술이라고 해야하지 않을까 싶다. 물론 이는 예술이 아니라고 부정하는 것은 아니다. 그렇다고 반드시 이것이 확고한 예술의 한 장르다! 라고 말하려는 것도 마찬가지로 아니다.

성격 급한 나로서는 위의 한 문단으로 말하려는 바를 모두 이해해줬으면 하는 마음이 있지만 현실은 내 머릿속에서 공허히 울리고 있을 뿐이다. 자세히 설명하자면 이렇다.

예술이란 기본적으로 아름답다고 느끼는 무언가이고, 그것을 만들어내는 행위이다. 거기에 실용성이 더해진다면? 그러한 부류를 산업디자인이라고 할 수 있을 것이다. 나는 산업 다자인에 대해서는 잘 모르긴 하지만 적어도 이러한 정의가 유사할 것이다. 그보다도 산업 디자인이란 예술 목적 보다도 실용성이 더 중요할 것이다, 그렇다고 해도 거기서 아름다움이 빠지면, 매력적인 상품이 아니게 된다.

소프트웨어 쪽 관점에서의 이야기는 조금 다르다. 적어도 산업디자인은 외형은 있어서, 아름다움을 비교적 쉽게 알 수 있다. 그러나 소프트웨어는 디자인 전문가들이 보통 맡는 UI, 즉 사용자 인터페이스 등을 제외하고는 일반 사용자 입장에서 쉽사리 아름답다 라고 느낄 수 있는 영역이 없을 것이다. 대부분은 사용자가 알 필요 없는 부분에서 돌아갈테니.

그러나, 소프트웨어 프로그래머가 코드를 보는 관점이라면 이야기가 달라진다. 꼭 눈에 보이는 것이 아니라도 예술적일 수는 있을 것이다. 코드는 하나의 언어를 사용하고, 효율적인 방법으로 구성하려고 하게 된다. 그러다보니 효율적인 개념들이 나오고, 언어도 새로 나오고 하는 것이다. 이는 산업적인 목적의 소설이라고 비유할 수 있지 않을까. 소설은 예술적일 수 있다. 눈에 보이지 않음에도 말이다. 마찬가지로 프로그래밍과 코드라는 부분에서, 그것을 구성하는 모습이 아름답고 섬세할 수 있을 것이다. 심지어 프로그래밍 영역에서는 언어도 그 아름다움을 차지할 수 있는 영역 중 하나다. 소설은 정해진 언어 하나에서 최대한 아름다움을 뽐내야 하겠지만, 소프트웨어는 보다 효율적이고 심신이 안정되도록 아름다운 언어를 만들 수 있으니 말이다. (소설도 물론 언어를 만들어서 할 수는 있겠지만 말이다.)

이대로 소프트웨어는 산업 예술이다 라고 정의할 수 있을것이다. 물론 일반 사용자는 전혀 느낄 수 없겠지만. 이게 (내가 내리는) 일반적인 결론이지만, 예외를 하나 두는 것으로 마무리하려고 한다. 

아무리 이렇게 정의한다 한들, 프로그래밍 전체를 하나로 싸잡아서 산업 예술이다 라고 확 가르는 것은 옳지 못할 것이다. 어떤 분야가 되었든 스펙트럼이라는 것은 존재하니까. 그 중 하나의 예를 들어보려고 하는데, 이는 난해한 프로그래밍 언어 라는 분류의 프로그래밍 언어와 그로 만들어진 프로그램들이다. 이들은 실용적인 목적 보다는 재미, 어떻게 보자면 변태적인 언어를 만들어보고 싶다는 욕망에서 탄생한 언어들이다. 이러한 언어와 프로그램들은 일부러 언어의 표현 폭을 제한해서 무언가를 만드려는 시도를 한다. 아름다움의 정의가 무엇인지는 정확히는 모르겠으나, 적어도 이것은 도전정신을 불러일으키고 결과적으로 잘 구성된 퍼즐 산맥 같은 것을 만들어낸다. 퍼즐 산맥, 아름답지 않은가? 적어도 이러한 분야는 프로그래밍 중에도 순수 예술이라고 볼 수 있지 않을까.