[망가진 알고리즘(the confused algorithm) - 제헌절 새벽에]
제헌절의 아침에 법에 대하여 문외한(門外漢)인 사람이 이런 얘기를 해서 미안하기는 하지만 우리를 스스로 돌아보자는 의미에서 다음 글을 쓴다. 소프트웨어 프로그래밍(software programming)을 하는 사람이라면 어느 특정한 기능을 구현(具現)하기 위하여 “알고리즘(algorithm)"이란 것을 떠올릴 것이다. 알고리즘이란 사전적(辭典的)으로 보면 ‘일정한 계산 기준을 정하기 위한 일련의 규칙’ 또는 ‘일련의 산법(算法)’이라고 되어 있다. 이 알고리즘을 알아보기 쉽도록 표현하는 기법에는 몇 가지가 있지만 우리는 흐름도(flowchart)가 그의 일종이라는 것을 잘 알고 있다. 흐름도란 상호 간에 약속된 기호에 의하여 알고리즘을 도표화한 것이라고 보면 맞을 것이다. 물론 흐름도가 반드시 소프트웨어 프로그래밍에만 쓰이는 도구(道具, tool)는 아니다. 제반 업무의 흐름을 알기 쉽게 표현을 하고자 할 경우에 어느 분야에서나 쓰이는 기법이므로 사회생활의 전반에 골고루 다 쓰인다고 보면 맞을 것이다.
수학공부를 열심히 하면 사람의 사고방식이 논리적으로 훈련이 된다고 강조한 적이 있다. 수학이 수식에 의하여 전개되는 일련의 철학적 이야기이므로 알고리즘이나 흐름도와 같은 맥락(脈絡)을 이루고 있다고 할 것이다. 결국은 이러한 일련이 사고과정이 논리적이고 합리적인 사고방식을 훈련시키는 도구라고 볼 것이다. 따라서 사물을 분자에서 원자로, 원자에서 핵으로 분해해서 들어가는 작업을 시도한다면 서정적이거나 상징적인 특징으로, 비유(比喩)와 은유(隱喩)의 기법으로 구성하는 문학에도 적용 가능하지 않을까? 어디 그뿐이랴~ 이는 정책에는 이미 쓰이고 있고 행정과 정치에 알게 모르게 이미 적용되어 우리의 실생활 속에 들어와 있다는 것이다. 아니 이미 그에 의하여 인간사가 지배를 받고 있다는 것이 오히려 맞을 것이다.
지금으로부터 약 35년 전에 나는 전전자교환기(全電子交換機, EPX/electronic public exchange)의 기능수행을 위한 프로그램 코딩하는 일을 했다. 이 시스템에도 사람의 뇌에 해당되는 기능을 수행하는 OS(運營體制, operating system) 프로그램이 있고, 이 프로그램은 전 가입자가 작동시키는 전화기의 움직임을 세세하게 분석하여 가입자가 원하는 것이 무엇인지를 상부로 보고하면 이 가입자가 원하는 상대 가입자에게 통화가 될 수 있도록 말의 전달통로를 열어주고 전화를 끊게 되면 가입자의 상태를 아무 일도 하지 않는 상태(idle status)로 되돌려놓는 작업을 끝없이 끊임없이(endless and ceaseless) 감시하고 관리하는 일을 한다. 나는 이 전체적인 프로그램 중의 한 부분인 호처리(呼處理, call processing)를 담당했고 이 파트는 프로그램 양으로 보아 전체의 75% 정도를 차지하였다.
각설하고, 내가 왜 뜬금없이 이 귀중한 시간에 프로그래밍 이야기를 하는가 하면, 연구실이라는 변수가 한정된 조건(condition) 속에서 전체가 워낙 방대하다보니 몇 부분으로 나누어서 수행했던 기능들 간의 상호 프로토콜(protocol) 등이 원활하게 맞아 떨어지지 않으면 말로 형용할 수 없는 시행착오(試行錯誤)와 오류(誤謬)가 발생한다는 것을 말하기 위함이다. 다시 말해서 연구실이라는 안정되고 한정된 환경에서 인간의 머리로서 상상할 수 있는 온갖 경우의 수를 생각하여 프로그래밍을 하였고 각 파트 간에 발생 가능한 사건에 대하여 처리를 위한 서로의 약속이 이루어졌지만 이 시스템이 운용 현장에 설치되어 동작을 하면서 실질적으로 수백 명에서 수천 명의 가입자들 중 특정다수의 가입자가 실시간으로 전화기의 송수화기를 들고 하는 행위로 인한 문제점은 예측을 불허한다는 것이다.
[송수화기를 누구는 내려놓고, 누구는 내팽개치고, 어떤 이는 다이얼링을 하려다가 말고 다이얼링을 하다가 말고 그것도 번호 하나만 돌리다 말고 누구는 두 개를 돌리다 말고 이러고저러고 하면서 누구는 다이얼링을 모두 다 하고, 누구는 내선 번호만 돌리고 누구는 서울 시내 번호만 돌리고 누구는 장거리 번호를 돌리고 누구는 국제전화를 돌리고 누구는 되지도 않는 아무 번호나 마구잡이로 돌리고, 외부로부터는 해외에서 호출이 도착하고 지방에서 오고 시내에서 오고 구내에서 오고, 외부로부터 들어오는 오는 것도 어느 것은 전화국 선이고 어느 것은 같은 회사에서 만든 교환기에서 들어오는 것이 있고 다른 회사에서 만든 교환기에서 오는 것이 있고, 교환기도 전자식 교환기에서 들어오는 것도 있고 기계식 교환기에서 들어오는 것도 있고, 전화기도 전자식이 있고 기계식이 있고 자석식이 있고, 어느 날은 번개가 쳐가지고 생각지도 못한 형태의 신호가 들어와서 신호분석(signal scanning)의 범위를 벗어나기도 하고, 어떤 때는 정전이 되어 시스템이 들락날락하는가 하면, 전원의 변동(power fluctuation)으로 인하여 백색잡음(white noise)를 비롯한 온갖 잡음이 들어오면, 等等 여기에 프로그래밍 오류(bug)까지 혼합되어 프로그래머의 상상의 한계를 벗어나면 그 때는 누구든 정말 속수무책(束手無策)이 된다. 이뿐이랴!!! 전화를 필요한 시점에 사용하지 못하는 고객들로부터 날아오는 항의(抗議)와 욕설(辱說)은 앉아 있는 프로그래머의 손을 떨게 만들고 서있는 자들의 무릎을 주저앉게 만든다.]
어디 그뿐이랴!!! 선배와 상사로부터 떨어지는 불호령과 “그것도 해결 못하냐?” 하는 경멸과 비난의 눈초리는 사람을 주눅 들게 만들기에 충분하고 아무리 밤을 새워 원인을 파악하려해도 도저히 알 수 없는 미궁(迷宮)에 빠지거나 알고리즘 상의 데드록(deadlock)에 걸려들면 차라리 기계를 안고 고층빌딩 아래로 아니면 한강물로 뛰어내릴까를 생각하게 만든다고 하면 과언일까? 사실 이쯤 되면 온갖 상상도 못할 경우의 수를 처리하기 위하여 서비스가 추가되거나 문제가 발생할 때, 기본 프로그램에 여기 찔끔 저기 찔끔 손을 대왔으므로 이 프로그램은 애초에 짜서 그린 알고리즘과 흐름도와도 거리가 먼 망가진 누더기(the confused rags)가 되어 있을 것이다. 솔직히 어디를 먼저 고쳐야 할지도 불분명하고 한 곳을 고치면 그것이 어딘지 알 수 없는 곳에 영향을 주어 지극히 웃기는 오작동(誤作動, malfunction)을 하게 만든다. 이때 가장 필요한 방안이 무엇일까? 내 경험으로 보아 모든 것을 지워버리고 처음부터 신선한 알고리즘과 삼빡한 흐름도로 새로운 마음으로 다시 코딩(coding)을 하는 것이다.
오늘이 제헌절(制憲節, constitution day)이다. 헌(憲)이라는 뜻은 영어로 보나 한자로 보나 그것은 ‘틀(骨格, frame)’의 의미를 갖는다. 법에 대해서는 문외한(門外漢)인 내가 제헌절을 맞이하여 위와 같이 장황하게 시스템 프로그래밍을 언급했느냐 하면 오늘 날 우리나라의 헌법이 바로 누더기 같다는 생각이 들기 때문이다. 진정 전자공학도(電子工學徒)로서 법을 전공한 사람들에게 미안한 이야기이지만 헌법뿐만 아니라 여타의 법안도 전체적인 대의를 위하지 않고 권력을 잡은 자 자신들의 편의에 의하여 이것저것 고치고 손보고 끼워 넣고 건너뛰고 하다 보니 긴 시간이 지난 다음에 보면 애당초의 취지와는 전혀 다르거나 왜곡된 법안이 되어 버린다는 것이다. 참으로 외람(猥濫)되지만 그리고 입법을 담당하는 모든 이에게 미안한 이야기이지만 작금의 대한민국 헌법과 법률이 그런 느낌을 준다.
물론 헌법도 사람이 만든 것이기 때문에 고칠 필요가 있을 때는 고쳐야 한다. 하지만 분명한 것은 “국가와 사회 그리고 국민”이라는 대의(大義)를 위하여 개헌을 하고 법을 개정해야지 권력을 취득한 자들의 편의와 자신들만의 철학과 이념에 의하여 국가 시스템의 근간이 되는 것들을 개정이라는 명분을 내세워 고쳐서는 안 된다는 것이다. 앞에서도 언급했지만 망가진 누더기는 백지상태(白紙狀態)로 밀어버리고 처음부터 다시 알고리즘을 구상하여 프로그래밍을 새롭게 하는 것이 오히려 시간이 빠르며 모두에게 이익이 되는 방법이다.
그런데 그것을 누가 언제 어떻게 할 것인가?
2017.07.17/달이 떠있는 제헌절 새벽에...
¤
'33-영등포의 삶' 카테고리의 다른 글
[스크랩] [부끄러운 자화상] (0) | 2017.07.22 |
---|---|
[스크랩] [최저임금(最低賃金) 인상(引上)의 수혜(受惠)] (0) | 2017.07.18 |
[스크랩] [닭대가리 싸움] (0) | 2017.07.12 |
[스크랩] [어머니의 부러진 이빨(the broken teeth) 그리고 오른손 가운데 손허리뼈(my mother`s metacarpal bone of the middle finger in the right hand)] (0) | 2017.07.11 |
[스크랩] [욕하면서 배웠다!!!?] (0) | 2017.07.10 |