소프트웨어(software), 이 단어는 다소 기술적이고 어렵게 느껴집니다. 하지만 우리는 매일 소프트웨어와 함께하고 있습니다. 다만 그것을 여러 이름으로 부를 뿐입니다. 휴대폰에 깔린 것은 ‘앱’이라 하고, 인터넷에서 여는 것은 ‘사이트’나 ‘홈페이지’라 합니다. 그뿐이 아닙니다. 버튼을 누르면 알아서 작동하는 리모컨, 비밀번호를 기억하는 도어록, 혼자 집안을 돌아다니는 청소기, 예약을 걸어두면 시간 맞춰 돌아가는 세탁기, 층을 누르면 알아서 멈추는 엘리베이터. 겉모습도 이름도 제각각이지만, 이 안에는 모두 한 가지 같은 것이 들어 있습니다. 전자식으로, 말하자면 ‘똑똑하게’ 움직이는 거의 모든 물건의 속에서 일하고 있는 그것. 우리는 그것을 통틀어 소프트웨어라 부릅니다.
이렇듯 우리는 하루의 많은 시간을 그것과 함께 보냅니다. 그런데 막상 “그게 무엇이냐”고 물으면, 선뜻 대답하기가 어렵습니다. 분명히 매일 쓰고 있는데, 손에 잡히지도 눈에 보이지도 않습니다. 무게도 부피도 없는데, 분명히 거기 있어서 세상을 움직입니다. 이 만질 수 없는 것의 정체를, 잠시 들여다보려 합니다.
‘무르다’는 이름
소프트웨어라는 말의 뜻은, 사실 그 이름 안에 들어 있습니다. ‘소프트(soft)’, 곧 무르다는 것입니다.
이 말이 처음 활자에 등장한 것은 1958년의 일입니다. 통계학자였던 존 튜키라는 사람이 한 수학 논문에서, 잘 짜인 프로그램들을 가리켜 ‘소프트웨어’라 불렀습니다. 그는 이것을 ‘하드웨어’에 빗대어 말했습니다. 진공관과 트랜지스터, 전선과 테이프처럼 손으로 만질 수 있는 단단한 부품들이 ‘하드(hard, 단단한)‘한 것이라면, 그 단단한 기계 위에서 돌아가는 무형의 프로그램들은 그에 견주어 ‘소프트(soft, 무른)‘한 것이라는 발상이었습니다. 단단한 몸체와, 그 위에서 흐르는 무른 무엇. 그렇게 소프트웨어라는 말이 태어났습니다.
왜 하필 ‘무르다’였을까요. 단단한 것과 무른 것의 가장 큰 차이는, 고쳐 쓸 수 있느냐에 있습니다. 단단한 물건은 한번 만들면 바꾸기 어렵습니다. 의자의 다리를 줄이거나 망치의 머리를 바꾸려면 큰일이 납니다. 그러나 소프트웨어는 다릅니다. 마음만 먹으면 오늘 만든 것을 내일 고치고, 어제의 모습을 오늘 전혀 다른 것으로 바꿀 수 있습니다. 우리 손안의 앱이 끊임없이 ‘업데이트’되며 모습을 바꿔가는 것이, 바로 이 무름 덕분입니다.
이렇게 무를 수 있는 까닭은, 소프트웨어가 ‘코드(code)‘로 되어 있기 때문입니다. 코드란 사람이 한 줄 한 줄 적어 내려간 명령의 글입니다.1 다만 같은 글이라도, 그것이 어디에 담겨 있느냐에 따라 운명이 달라집니다. 종이에 인쇄된 글은 잉크가 종이에 박혀 물질로 굳어버립니다. 그래서 한번 찍어내면 고치기 어렵습니다. 그러나 코드는 종이가 아니라, 언제든 다시 쓸 수 있는 전자적인 상태로만 존재합니다. 물질에 새겨진 것이 아니라 고쳐 쓸 수 있는 형태로 떠 있는 셈이지요. 그래서 코드는 백 번이고 천 번이고 지우고 다시 써도 닳지도 굳지도 않습니다. 소프트웨어가 무른 것은, 그것이 굳지 않는 글로 이루어져 있기 때문입니다.
완성되지 않는 것
이 무름은, 소프트웨어를 다른 만들어진 것들과 전혀 다른 운명에 놓이게 합니다.
대부분의 만들어진 것에는 완성되는 순간이 있습니다. 건물은 준공되면 완성되고, 사람이 입주하면 그것으로 끝입니다. 책은 인쇄되어 서점에 깔리면 더 손댈 수 없습니다. 같은 글이라도 종이에 박히는 순간 굳어버리는 것입니다. 그림은 화가가 붓을 내려놓는 순간 완성됩니다. 이들에게는 ‘다 만들었다’는 분명한 시점이 있습니다.
그러나 소프트웨어에는 그런 순간이 좀처럼 오지 않습니다. 세상에 처음 나온 뒤에도 그것은 끝없이 고쳐지고 자라납니다. 우리가 쓰는 앱이 ‘완성판’을 내놓고 영영 멈추는 일은 없습니다. 버전 1 다음에 버전 2가, 그다음 버전 3이 끝없이 이어집니다. 만든 사람들조차 좀처럼 “이제 다 만들었다”고 말하지 않습니다. 오히려 사람들이 많이 쓰는 소프트웨어일수록 더 자주, 더 부지런히 손질됩니다. 반대로 어느 날부터 더 이상 고쳐지지 않고 그대로 멈춰버린 소프트웨어는, 사실상 수명을 다한 것에 가깝습니다. 소프트웨어에게 살아 있다는 것은 곧, 계속 고쳐지고 있다는 뜻입니다.
생각해보면 살아 있는 것은 다 그렇습니다. 생명체는 한순간도 완성된 채 멈춰 있지 않습니다. 끊임없이 낡은 세포를 버리고 새 세포를 만들며, 어제와 조금씩 다른 몸으로 매일을 살아갑니다. 변하기를 멈추는 순간, 그러니까 더 이상 고쳐지지 않고 완결되는 순간은, 곧 죽음입니다. 완성된 생명은 살아 있는 생명이 아닙니다. 무르기에 끝없이 고쳐지는 소프트웨어가 그렇듯, 살아 있는 모든 것은 본래 미완인 채로 살아갑니다.
그런데 가만 보면 이상한 일입니다. 우리는 보통 ‘완성’을 좋은 것으로 여깁니다. 무언가를 끝마치고 완결 짓는 것을 성취라 부르고, 끝내지 못한 것은 미완(未完)이라 하여 어딘가 모자란 것으로 칩니다. 그런데 소프트웨어는 정반대입니다. 그것은 애초에 완성을 목표로 하지 않습니다. 완성되지 않는 것이 흠이 아니라, 오히려 잘 살아 있다는 증거입니다. 끝없이 고쳐질 수 있다는 무름, 영영 완결되지 않는다는 그 미완의 성질이야말로, 소프트웨어를 소프트웨어이게 하는 본질입니다.
미완이라는 존재 방식
우리는 ‘완성’이라는 말에 너무 많은 무게를 싣고 사는지도 모르겠습니다.
우리는 흔히 삶을 하나의 작품처럼, 언젠가 완성해야 할 무엇으로 여깁니다. 어떤 모습에 도달하면 비로소 ‘다 된’ 사람이 되고, 거기에 이르지 못한 지금은 아직 미완의 상태라고요. 그래서 완성을 향해 조바심을 내고, 끝내 완결되지 않는 자신을 모자라다 여기기도 합니다. 그런데 이상한 일입니다. 우리 역시 살아 있는 한, 결코 완성될 수 없는 존재이기 때문입니다. 어제와 조금씩 다른 사람이 되어가며, 끝없이 고쳐지는 동안에만 우리는 살아 있습니다. 완성된다는 것은 더 이상 변하지 않는다는 것이고, 더 이상 변하지 않는다는 것은 곧 멈추는 것입니다. 그러니 우리가 그토록 바라는 ‘완성된 나’란, 어쩌면 살아 있는 내가 아니라 멈춰버린 나에 더 가까운지도 모릅니다.
소프트웨어가 무르기에 끝없이 고쳐지듯, 생명이 멈추지 않기에 살아 있듯, 우리도 미완이기에 살아 있습니다. 미완은 우리가 아직 다다르지 못한 모자란 상태가 아니라, 살아 있는 모든 것이 놓인 자리입니다. 그런데도 우리는 자꾸만 완성을 향해 자신을 몰아세웁니다. 무르다는 것이 약함이 아니라 끝없이 다시 고쳐 쓸 수 있다는 뜻이었듯, 완성되지 않았다는 것도 어쩌면 모자람이 아니라, 아직 살아서 고쳐지고 있다는 뜻일 것입니다.
Footnotes
-
코드(code)는 본래 암호나 규약을 뜻하는 말이지만, 컴퓨터에서는 사람이 기계에게 일을 시키기 위해 정해진 규칙에 따라 적어 내려간 명령문을 가리킵니다. 사람이 쓰고 읽을 수 있는 글이되, 컴퓨터도 그대로 따라 실행할 수 있을 만큼 명확하게 쓰인 글인 셈입니다. ↩
댓글 (0)
아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요.