brunch

You can make anything
by writing

C.S.Lewis

by 허클베리 Jul 14. 2022

2. 소프트웨어적 사고 - 2

컴퓨팅, 소프트웨어와 하드웨어

 구글에 쳐봐도 마땅히 혼재되어 쓰이는 듯 보이는 '컴퓨팅적 사고'와 '소프트웨어적 사고'. 이 둘을 구분할 이유가 있는 걸까? 의문이 생겼다면 성공이다. 이 글의 독자들을 생각하며 소프트웨어에 대한 이야기를 어디서부터 풀어가는 게 좋을지 고민을 했다. 블록체인이나 머신러닝, AI, IoT처럼 최근 유행하는 분야? 아님.. 프로그래밍 언어? 그것도 아니면 소프트웨어 개발 분야? 이런저런 구상 아닌 구상을 하다가 결국 고르고 보니 또 직구다. 



 얼핏 말장난 같아 보일지 모르는 화두로 소프트웨어 이야길 꺼내 들었지만 그래도 '여기부터 시작이지' 하는 마음이다. 주변이 어두울수록 촛불이 더욱 빛나 보이듯 '소프트웨어 (software)'에 대한 이해가 보다 명확해지려면, 아니 앞으로 이야기할 '소프트웨어'와 관련된 이야기를 보다 잘 이해하기 위해서는 하드웨어와 소프트웨어의 밀접한 상관관계를 기본적으로 염두하고 있어야 하기에 별생각 없이 '소프트웨어'가 있어야 할 자리를 대신 꿰차곤 하는 '컴퓨팅 (computing)' 이란 용어를 제물로 삼아보려 한다. 



 컴퓨팅 환경, 컴퓨터 공학, 컴퓨팅적 사고 등 '컴퓨팅(computing)'이란 용어는 아주 흔히 쓰인다. 그만큼 대부분의 일상에 크건 작건 성능이 뛰어난 최신형 서버급이든 제한된 기능을 수행하는 저렴한 기종이든 컴퓨터가 없는 곳을 찾아보기 힘든 세상이다. 



 어릴 적 내게 컴퓨터는 함부로 건들면 혼나는.. 쉬 열어보기 힘든 아버지 방 책상 위에 마치 고려청자처럼 존재하는 무언가였다. 그러나 이젠 굳이 '나 혼자 산다' 같은 TV 프로그램에 나올법한 환경을 의도하지 않는다면 주변 어디서든 현재의 내 삶을 가능하게 만들어주는 공기 같은 존재가 되어가고 있다. 아니 흔히 쓰이는 걸 넘어 용어 자체로만으로는 '소프트웨어' 같은 말이랑 비교하기에 뭔가 올드한 느낌마저 든다고 해야 할까?



 마치 예전부터 있어왔고 지금도 존재하는 '컴퓨터공학과'가 요즘의 '소프트웨어학과'나 '데이터과학과'같은 이름이랑 비교하면 좀 올드한 느낌이 드는 것처럼 말이다. 물론 훨씬 이전 세대인 '전산학과'나 '전자계산기학과' 같은 이름이랑 비교하면 '컴퓨터공학과'는 아직도 세련된 느낌이긴 하다.



 이미 감잡은 사람도 있겠지만 '컴퓨팅'과 '소프트웨어'는 그 용어가 내포하고 있는 범주가 다르다. 컴퓨팅이 더 큰 범주일까 아니면 소프트웨어가 더 큰 범주일까? 



 아마도 컴퓨팅이란 용어가 산업에서 처음 사용되기 시작했을 땐 그저 '계산하는 일'을 의미하는 아주 좁은 의미를 갖는 용어였을 것이다. 그러다가 누군가는 알고리즘이란 걸 포함하는 의미로도 사용하고. 슈퍼컴퓨터, 양자컴퓨터가 만들어지고 있는 근래에 와선 반도체와 네트워크 기술이 비약적으로 발전함에 따라 하드웨어 소프트웨어 불문 IT기술을 두리뭉실 뭉뚱그려 지칭할 때 사용할 수 있는 만능 용어가 되었다. 



 그에 비해 '소프트웨어'는 지칭하는 개념이 상대적으로 명확하다. 그 명확성에 대해서는 다른 관점에서도 설명이 가능하겠지만 이 글에서는 소프트웨어와는 서로 떼려야 뗄 수 없는 관계인 '하드웨어 (hardware)'라는 용어의 도움을 빌려보려 한다. 뭐 일단 3,4차 산업혁명을 이끌어가는 산업분야인 IT산업 자체가 하드웨어의 발전과 소프트웨어의 발전이 한데 어우러진 콜라보이기도 하고.





 너무나 당연하게 쓰이는 용어지만 혹시라도 개념이 모호한 사람들을 위해 그리고 소프트웨어를 보다 명확하게 설명하기 위해 앞으로 자주 등장할 '하드웨어'에 대해 짧게라도 설명하자면, 하드웨어란 건 다들 알다시피 물리적 실체가 존재하는 그 무언가다. 그중에서도 소프트웨어를 이용하거나 탑재할 수 있는 것을 말한다. 



 우리의 몸도 물리적인 실체 그 자체로서는 하드웨어다. 사랑, 생각, 습관, 식욕, 탐욕, 관념, 비전, 자신감, 기쁨, 만족, 슬픔, 아픔 등 온갖 실체를 규정하기 힘든 추상적인 것들이 다차원 함수로 연계되어 동작하는 '나(self)'라는 소프트웨어를 탑재한.



 그럼 반대로 '나'라는 소프트웨어가 없다면 우리 몸은 어떻게 될까? 그저 생기 없는 고깃덩어리나 마찬가지 아닐까? 



 우린 자신이나 누군가의 몸을 두고 '뭐 워낙 하드웨어가 좋아서..' 이런 말을 농담처럼 던지기도 한다. 하지만 쇼윈도로 보이는 마네킹을 두고 '워낙 하드웨어가 좋아서'라는 말을 하던가? 뭐 굳이 할 수도 있겠지만 보통은 그렇게 잘못된 표현을 할 일이 없다. 그건 마네킹이 소프트웨어가 올라갈 수 없는 딱딱한 목재 혹은 강화 플라스틱 덩어리에 지나지 않는다는 것을 잘 알기 때문이다. 앞으로 소프트웨어가 탑재되어 움직이는 마네킹에 옷을 입혀 전시하는 것이 일상처럼 된다면 바뀌겠지만 말이다.



 기왕 하드웨어와 소프트웨어를 설명하는데 마네킹까지 끌어들였으니 좀 더 재밌는 얘길 해보자. 우리가 너무나 잘 아는 성경책(Bible) 맨 첫 부분에 보면 창세기(Genesis)라는 장이 있다. 그중에서도 제일 첫 부분 하나님이 세상을 만드시고 나서 인간을 창조할 때 흙으로 빚으셨다 뭐 이런 내용이 쓰여 있다. 그리고 생기를 불어넣어 '아담' 이란 첫 번째 사람을 만드는 과정이 나온다. 이 글의 맥락에서 비유하자면 흙으로 만든 몸뚱이가 하드웨어고 불어넣은 생기가 바로 소프트웨어다. 



 마치 영화 매트릭스에 나오는 가상현실 같은 공간이 영원히 계속되고 우리의 영혼이 가상현실에만 존재한다면 딱히 물리적 실체인 우리의 신체 역시 있든 없든 상관없는 것처럼 생각해 볼 수도 있겠지만 우리가 사는 현실은 '몸(body)'도 '나(self)'도 중요하다. 왜냐하면 '몸' 이란 하드웨어가 없이는 '나'라는 소프트웨어가 존재할 수 없고 반대로 '나'라는 소프트웨어가 없이는 내 몸뚱이 자체가 의미를 갖기 힘들기 때문이다. 죽어서 천국 가고 지옥 가고 구천을 떠도는 귀신같은 영적 세계 말고 부모로서 내 아이가 잘 성장하도록 힘써 살아내야 하는 현실에서는 말이다.  



 기술의 진보로 인간의 수명이 늘고 있다고 한다. 뭐 그 기술 때문에 단명하는 사람도 많지만 전체적으로 볼 때 그렇다는 말로 받아들이면 될 듯하다. 여기서 말하는 인간의 수명과 관련된 기술이란 건 아마도 전통적으로는 의학이나 생명공학, 유전공학, 스포츠과학 등 물리적 신체의 기능 즉 하드웨어의 발달 및 유지보수와 관련된 기술이었을 것이다. 



 그러나 근래의 연구들은 '스트레스'가 현대인의 건강을 해치고 수명을 단축시키는 수많은 질병들의 원인이라고 하지 않는가? 물론 스트레스엔 물리적 스트레스로 존재한다. 하지만 여기서 말하는 스트레스는 정신적 스트레스를 의미하는 것일 것이다. 정신적 스트레스 즉 소프트웨어에 발생한 심각한 버그는 결국 하드웨어에 오동작을 일으키거나 망가뜨려 제 기능을 수행하지 못하게 한다. 이것이 시사하는 바는 '나'와 내 '몸'처럼 소프트웨어와 하드웨어가 서로 밀접하게 상호작용 한다는 아주 간단한 원리다. 


 

 이 당연한 이치가 왜 100년 전엔 그닥 중요하게 여겨지지 않았을까 싶지만 한 인간이 아닌 사회적 현상을 놓고 봐도 그건 마찬가지였다. 우리나라에서도 기계공학과 전자공학이 인기를 구가하던 70~80년대는, 아니 90년대 초까지만 하더라도 물건을 대량으로 만들어내고 또 그런 공장을 돌리기 위한 기계장치와 전기전자장치들을 만들어내는 게 돈벌이가 되고 기술분야에선 중요하게 여겨지던 시기가 아니었던가. 비꼬아 말하자면 레오나르도 다빈치의 설계를 좀 더 구체화시켜 전기와 기름으로 만든 에너지를 이용해 '자동'으로 움직이게 만든 걸로 만족하던, 소프트웨어는 그야말로 손가락 빨던  시기.
                    


 그리고 이젠 4차까지 와버린 산업혁명. 우리가 아는 각 혁명의 앞에 붙는 숫자가 바뀌어온 밑바탕엔 사회를 이끄는 기술(leading technology)을 바라보는 패러다임의 변화가 있기 마련이고 이젠 하드웨어가 아닌 소프트웨어가 이끄는 기술이 되었다. 하지만 소프트웨어는 만들어지는 순간부터 하드웨어가 없인 존재할 수 없고 앞에서 말했듯 하드웨어와 소프트웨어는 서로 밀접하게 엮여있다. 



 IT산업 전반을 거시적으로 봐도 그건 마찬가지다. 물론 소프트웨어는 이런 하드웨어 기술의 변화에 최대한 영향받지 않으면서 장수하는 방법을 만들어가고는 있지만 하늘 아래 영원한 것은 없다. '빅데이타'니 '클라우드'니 '딥러닝'이니 '블록체인', 'IoT'니 하는 것들은 모두 하드웨어와 소프트웨어가 맞물린 기술변화로부터 튀어나온 먹거리들이다. 





 우리가 아이들에게 길러주고자 하는 게 컴퓨팅적 사고능력인가? 아님 소프트웨어적 사고능력? 그걸 지칭하는 용어가 뭐가 중요한가. 제목은 그림을 다 그리고 나서 붙여도 되지 않을까? 다만 그림을 그릴 것이냐 말것이냐, 그린다면 연필, 목탄, 수채화물감, 유화물감 뭘로 그릴 것이냐, 그리고 뭘 그려낼 것이냐가 훨씬 중요한게 아닐까? 



 우리 아이들은 그런 면에서 백지와도 같다. 그리고 이제 막 선물 받은 전원도 꼽지 않은 맥북 프로 같은, 비록 우리가 잘 몰라 쓸데없는 앱을 몇 개 깔았다 지웠다 했을망정 기본적으론 아주 훌륭한 하드웨어다. 그리고 시간이 지남에 따라 발전해 간다.



 우린 이런 좋은 하드웨어에 잠재되어 있는 능력을 잘 활용하고 이끌어 내는데 필요한 좋은 소프트웨어를 장착할 수 있도록 도와주는 역할을 하게 될 것이고 그러려면 내 아이라는 하드웨어에 대해서도 알아야 하고 그 하드웨어가 갖는 물리적 특성, 소프트웨어를 올리는 방법은 물론 소프트웨어를 구동시키는 방법 그리고 예상과 달리 오류가 났을 때 바로잡을 수 있는 방법 또한 알아야 하지 않을까? 가능하면 무리가 가지 않는 선에서 하드웨어의 성능을 극대화할 수 있는 좋은 소프트웨어가 뭔지도.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari