나의 메인 루틴 (Main Routine)

- 코드, 함수와 함께하는 출근길

by 하늬바람


(물음표 쉼표 느낌표)


나의 메인 루틴 (Main Routine)

- 코드, 함수와 함께하는 출근길



컴퓨터가 만들어져서 인간이 기계와 대화하기 위해 프로그래밍 언어라는게 만들어졌습니다. 처음에는 코볼, 포트란 같은 언어들이었고 이후는 베이직, 비주얼 스튜디오, C언어, 자바 같은 것들이죠. 기계는 0과 1 이라는 이진법으로 이해하니 인간이 코딩해서 컴파일하거나 어셈블러라는 기계어로 바꿔서 전달하면 컴퓨터는 엄청난 일을 빠른 속도로 해결해 줍니다. 그래서 인간이 기계와 대화하려면 컴퓨터 언어를 배워야했습니다.


그런데 지금 AI 시대에는 거꾸로 기계가 인간의 언어를 딥러닝해서 우리와 대화하고 문제를 해결해 줍니다. 인간의 지능과 직감을 넘어선건 물론이고 어떤 방식으로 그리하는지는 인간의 이해영역을 넘어섰습니다. 사실 아직까지는 인간이 주도권을 쥐고 있습니다. 앞으로는 모르지만요. 우리가 코딩하고 AI에게 학습도 시키고 로봇도 만들고 있으니까요. 하지만 앞으로는 어찌될지는 그 누구도 장담할 수 없습니다.


책처럼 프로그래밍도 한번 빠지면 중독성이 굉장히 강합니다. 이건 내가 신이 되거나 프랑켄슈타인을 만든 그런 느낌마저 들게 합니다. 저도 밤새서 코딩하고 디버깅하고 그랬습니다. 업무 하다가 필요해서 프로그래밍을 하곤 했는데, 쓸만해서 인터넷에 공개했더니 이 쪽분야에서는 인기 프로그램이 돼서 이후로 프로그래머 비슷하게 돼버렸습니다. 괜찮은 프로그램을 몇 개 더 만들어서 나름 만족감도 있고 많은 사람들이 사용하다 보니 큰 상도 받고, 프로그래밍 책도 쓰게 되었습니다.


인간의 언어라는 건 프로그래밍 언어와 구조적으로는 비슷한데 문법은 상당히 다릅니다. 결정적으로 감정을 담아내는 게 없이 무미건조한 함수와 논리 연산의 집합입니다. 여기서 잠깐 루틴을 이야기해야겠습니다. 인간의 언어와 컴퓨터 언어에 루틴이라는 개념이 있는데 오늘 루틴한 출근길에 문득 떠올랐거든요.



자전거로 출퇴근하는 사람들을 자출족이라고 합니다. 처음엔 옷 갈아입고 씻어야 되고 추위와 더위 등등 불편함이 좀 있지만 어떻게든 해결책을 찾고 나면 좋은 점이 굉장히 많습니다.

출퇴근이라는 게 다람쥐 쳇바퀴 도는 거랑 비슷해서 루틴 합니다. 자가용이나 지하철, 버스 같은 대중교통도 마찬가지죠. 늘 같은 시간, 같은 장소에서 버스나 지하철을 기다리고 북적이는 사람들 속에서 남의 시선들을 피해 가며 각자 핸드폰을 만지작거립니다. 때론 그 복잡스러운 가운데 단순반복이 나의 일상을 버텨주는 것 같은 느낌이 들 때도 있습니다. 자가용으로 움직일 때는 출퇴근 시간에 듣는 라디오 소리나 음악이 익숙해져 갑니다. 지정체는 당연하고 이 복잡한 세계에 발 딛고 있다는 것이 그나마 고마워질 때 이미 나는 도시의 루틴함에 점령돼있으니까요.


자전거로 출퇴근하면 사유의 시간이 생깁니다. 인터넷, 핸드폰으로부터 자유로워집니다. 다른 교통수단과 같이 루틴 하지만 스쳐가는 풍경은 좀 다릅니다. 눈으로 볼 수 있는 속도보다 빠르게 지나가는 풍경들은 생각할 기회를 주지 않습니다. 하지만 자전거는 눈이 뇌에 전달해 주는 속도와 비슷합니다. 시선이 주변의 흘러가는 속도에 맞춰 꽃을 보고 강을 보고 도시를 봅니다. 그리고 생각을 하게 됩니다.



컴퓨터 프로그램 언어에도 루틴(Routine)이라는 게 있습니다. 일상생활에서 사용되는 루틴이란 단어와는 비슷하면서도 조금은 다릅니다.


프로그래밍 언어에서 루틴은 어떤 작업을 수행하기 위해 반복적으로 호출되는 명령어들의 집합, 즉 함수가 모여서 실행되는 것을 말합니다. 시작부터 끝까지 장악하고 있는 건 메인 루틴(main routine)입니다. 그리고 서브루틴(Subroutine)과 코루틴(Coroutine)은 그 아래단위에 있는 것이라 생각하면 됩니다.


저의 출근길을 코딩해 보겠습니다. 전체길은 메인 루틴입니다. 그 안에는 세 가지 서브루틴, 음, 섹터라 하는 게 낫겠군요. 즉. 세 가지의 영역이 있습니다.


도시길, 숲 속길, 강변길이 그 세 가지입니다. 그 세 가지 길을 거쳐 출근합니다.


(1번 서브루틴) 도시길

도시길은 if 함수의 길입니다. else if 까지하면 코딩에서 가장 많이 사용되는 함수입니다. 인간의 언어에서는 가정법이라 불리지만 컴퓨터 언어에서는 조건문이라 불립니다. 도시에서는 조건을 봅니다. 집을 구하는 것도 사람을 만나는 것도 조건을 필요로 합니다. 자전거 길은 차길과 인도 사이에 어중간한 조건이 붙어있습니다. 인도 위에 붙여놓거나 차도 옆에 색깔로만 조건을 부여합니다. 이 도시 자전거길은 가로수의 간격 같은 조건, 신호등을 건너야 하는 교차로 같은 if가 늘 붙어있습니다.


(2번 서브루틴) 숲속길

숲 길은 논리연산자의 길입니다. 논리 연산자(Logical Operator)는 참(True)과 거짓(False)을 다룹니다. +,-,=, and, or, not 같은 것들이 언어로 사용되는데 숲 속 자전거길은 나에게 더할 것을 더해주고 빼줄 것은 빼줍니다. 신선한 공기를 마시며 달리는 길은 내 마음속 참과 거짓을 분명하게 해 줍니다. 숲 속 자전거길은 빽빽한 나무들 사이로 빛보다는 어둠이 지배하는 세상입니다. 밝은 곳 에서는 보지 못했던 사람의 마음과 욕망과 진실이 어둠 속에서 드러납니다.


(3번 서브루틴) 강변길

강변길은 루프(loop)의 길입니다. 강물처럼 끊임없이 순환되는 구조의 길입니다. 강에서 바다로 다시 수증기가 되고 비가 돼서 내리는 강물은 루프함수와 같습니다. 루프 함수로는 while 문과 for 문이 있는데 답을 찾을 때까지 또는 내가 설정한 값까지 계속 반복합니다. 코딩에서는 일부러 무한 루프를 만들기도 하지만 논리오류로 그리 되기도 합니다. 인생길이 그러하기도 하죠. 무한 루프는 니체를 떠올리게 합니다. 니체는 영원회귀의 사상을 말하며 영원히 반복될 삶을 받아들여 현재의 삶을 긍정하고 주체적으로 살아가야 된다는 그런 이야기를 합니다. .


프로그래밍하다 보면 자기가 좋아하는 코드가 있습니다. 그건 습성 같은 건데 오류가 생겼을 때가 문제입니다. 그걸 해결하는 것을 버그를 잡는다는 뜻으로 디버깅이라고 합니다. 순차적으로 버그를 잡아갑니다. 오타로 인한 오류는 금방 찾습니다. 코드 실수도 시행착오를 해보면 찾아낼 수 있습니다. 하지만 나의 논리적 모순을 못 찾는다면 심각해집니다. 머리를 쥐어짜게 되죠. 그리고 해결되었을 때 그 기쁨이란 창조의 기쁨 같은 것이라 다른 어떤 것보다 많은 도파민이 나옵니다.


예전에는 이렇듯 내가 기계와 대화하려 노력했는데 지금은 기계가 코딩도 해주고 내 감정도 매만져주는 시대가 되었습니다. 하지만 나의 자전거 출근길 메인루틴과 서브루틴을 코딩하며 즐거운 글쓰기였네요.


main()

. . . .


ps.

도로길은 신호등앞에서 쉬어가야되니 쉼표의 길로 하겠습니다. 숲속길은 느낌표의 길로 하고. 강변길은 니체가.던져준 화두가 늘 어려우니 물음표의 길이네요