프로그래밍에 대해서 학원에서 8 개월 가량 수강한 것이 전부였던 필자는 소프트 웨어 제작사를 다니면서 프로그래밍에 대해서 많은 것을 배우게 되는데, 그 중에서 가장 중요한 것은 데이터 파일의 입.출력에 관한 것 이었다. 우수한 프로그래머는 데이터 파일의 입.출력 및 효율적인 파일 관리를 하게 함으로서 프로그램의 성능을 좌우 할 수 있어야 했다. 이는 컴퓨터의 성능및 업무 처리 능력과 직결되는 부분이기 때문에 많은 신경을 써야 했는데, 필자의 경우 단순한 파일 입.출력만을 이해한 채 프로그래머로서의 길을 접어야 했다. 왜냐하면, 그 시기 (90년대 초) 많은 대학에서 컴퓨터 전문 인력을 쏱아 내고 있었는데, 전문교육을 받지 못한 필자로써는 대학에서 전문교육을 받은 인재들과의 경합에서 밀리고 있음을 직감하고 있었기 때문이었다. 또한 소프트웨어의 개발이라는 것에 대한 매력에 어느 정도 식상하고 있었던 시기이기도 했다. 필자는 꿈에도 그리던 애니메이션에 대한 제작을 시도하려고 많은 그래픽 프로그램들을 설렵을 하고 있었는데, 여기에 대한 희망이 점점 시들어져 가고 있었기 때문이었다. 원하는 프로그램을 개발하는 것은 어렵지 않았지만, 진작 내가 하고자 했던 애니메이션에 대한 길은 영원히 보이지 않는 것 같았다.
사실 프로그래밍이라는 것은 집적 된 논리 회로와 같은 것이어서 프로그래밍 언어의 문법과 논리 회로에 대해서만 알고 있으면 누구나 가능한 것 이라고 생각한다. 문법을 모르고 프로그래밍 언어의 특징들을 모르기 때문에 전체적인 흐름을 파악하지 못해서 프로그래밍이 어렵게 느겨지는 것 일뿐, 진작 개발 되어지는 소프트웨어들의 대부분은 이러한 논리회로의 집적과 마찬가지인 것이다. 여기서 잠깐 논리회로가 무엇인지 알아보고 넘어가자.
논리회로는 디지탈 회로(전자기판)를 구성하는 최소단위로 흔히, 논리곱,논리합이나, AND, OR, NOT 등 대표적인 연산방식으로 기억하시는 분들이 많이 있는줄로 안다. 우리가 흔히 알고있는 IC 칩 역시 이러한 논리 회로의 집합으로 이루어진 것 인데, 이러한 논리들을 전자회로로 기호화 한 것이라고 생각하면 된다.
아래 그림은 논리 회로의 구성을 필자 나름대로 구성해 보았는데, 참고하면서 논리 연산에 대해서 살펴보도록 하자.
논리연산은 크게 3 가지로 나누어 진다. 논리곱(AND), 논리합(OR), 부정(NOT)이 그것인데, 논리연산은 이러한 것을 적절히 조합해 나가는 것 이라고 보시면 될 것 같다. 단자 A 에서 0 또는 1 이라는 값이 입력이 된다. 여기서 0 은 값이 없음(OFF)을 1 은 값이 있음(ON)을 나타내는데, 이 단순한 0, 1 의 조합이 논리라는것과 만나면 엄청나게 복잡해진다는 사실이다. 쉽게 얘기해서 이것이 100개가 적절하게 조합이 된다든지 10000개가 적절하게 조합되어 있다고 생각해보자. 그 결과치의 값들은 천차만별이 되는 것이다. 무엇이 이 단순한것을 그리도 복잡하게 만들어 내는지 살펴보자.
AND
논리곱 : 두개의 입력단 값이 모두 참(ON,1) 일 때, 출력값이 참(ON,1) 이 되는 것을 말한다.
입력단 A |
입력단 B |
출력단 결과값 X |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
OR
논리합 : 두 개의 입력단 값 중 어느 하나가 참(ON, 1) 이면, 출력값이 참(ON,1) 이 되는 것을 말한다.
입력단 A |
입력단 B |
출력단 결과값 X |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
NOT
부정 : 하나의 입력값에 대한 결과값을 도출해 내는 것으로 입력값의 반대값을 말하는데, 입력값이 거짓(OFF,0) 이면 출력값이 참(ON,1) 이 되고, 입력값이 참(ON,1)이면 출력값이 거짓(OFF,0)이 되는것을 말한다.
이 부정의 연산을 가지고 논리곱(AND) 과, 논리합(OR) 을 만들어 낼수있는데, 이것이 부정논리곱(NAND),부정논리합(NOR) 이다. 즉, 부정논리곱은 논리곱의 반대값이고, 부정 논리합은 논리합의 반대값인것이다.
NAND
부정 논리곱 : 두 개의 입력값이 모두 참(ON,1) 일 때, 출력값이 거짓(OFF,0) 이 된다.
입력단 A |
입력단 B |
출력단 결과값 X |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
NOR
부정논리합 : 두 개의 입력값중 어느 하나가 참(ON,1) 이라면, 출력값이 거짓(OFF,0)이 된다.
입력단 A |
입력단 B |
출력단 결과값 X |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
이러한 논리회로가 여러개 조합이 되면 아주 복잡한 연산도 가능해 지는데, 이것이 디지털회로(전자기판)를 만드는 기초가 되고 프로그래밍을 설계하는 알고리즘의 기초가 되는 것이다. 물론 우수한 프로그래밍을 만들기 위해서는 언어의 선택도 중요하다. 필자가 활동할 당시 국내에 소개 된 프로그래밍 언어래 봤자 어셈블러와 베이직, 코볼등이 있었으며, C 언어가 #include 라는 외부함수를 사용하게 함으로써 그 확장성에 대해 업계가 주목하고 있다는 내용으로 한참 도입되고 있었던 시기였다.
웹이 일상화 되어가는 요즘에는 도대체 언어의 영역이 어디까지인지 분별이 안가는 경우가 많다. 왜냐하면, 플래쉬 액션 스크립트만 해도 프로그래밍 언어의 체계를 갖추고 있지만 프로그래밍 언어의 영역에서는 제외 되는 것 같다. 이유가 플래쉬만의 독특한 심볼들을 컨트롤 하고 있는 것 이어서 일반 프로그래밍 언어들처럼 데이터의 처리가 쉽지 않다는 것이다. 예를 들어서 카운터를 제작하고 이를 웹 상에 올렸을 경우 플래쉬 액션 스크립트만으로는 카운트 되어진 숫자를 실시간으로 제공할 수 없다는 것이다. php, 혹은 자바스크립트와 같은 웹 전용 언어들로 데이터 부분을 별도로 관리 해주어야 하기 때문인데, 이처럼 프로그래밍 언어의 틀을 갖추고는 있지만 완전체가 아닌 것들이 난무하고 있는 요즘이다. 하나를 공부하기 위해서는 열을 아니, 천가지를 알아야 하는 시대, 이 복잡한 시대를 살아 갈 수 밖에 없는 이유는 필자의 영원한 동경의 대상인 만화와 컴퓨터가 공존하게 되기 때문이 아닐까 한다.
이런 보조 프로그래밍 언어들과는 달리 ON-OFF 라인을 자유 자재로 넘나들면서 확장성과 호환성을 갖춘 C 언어는 승승장구 하면서 화려한 미래를 예약하게 된다. 지금은 프로그래밍 언어로서 단연 최고의 자리를 확고 부동하게 굳혀가고 있는 것 같다. 필자 역시 이 시기 C 언어를 공부하면서 한 가지 큰 결심을 해야만 했었다. 계속 해서 이 길을 갈 것인가 아니면, 이 길이 나의 길이 아니라면 이 정도에서 끝을 낼 것 인가가 그 것 이었는데, 필자는 후자를 선택했다. 왜냐하면 당시 소프트웨어라는 시장은 너무나 척박했다. 컴퓨터가 무엇하는건지를 업게에 종사하는 사람들은 알고 이에 대한 효율을 인정하고 있었지만, 진작 이를 필요로 하는 기업이나, 학교, 대리점 등에서는 종전의 사무기기들에 대한 의존도가 더 높았기 때문인데, 이들 소비자들의 의식 변화가 전혀 감지 되고 있지 않는 상황에서 더 이상 프로그램의 개발은 무의미 하게만 보였던 것이다. 더군다나 컴퓨터를 잘할 수 있으면 내가 원하던 애니메이션의 제작도 가능하리라던 꿈도 점점 희박 하게만 느껴지고 있었고, 업친데 겹친겪으로 전문교육을 받은 인재들이 이 업계에 속속 영입되면서 그들과의 경쟁에 힘겨워 하고 있었던 시기이기도 했었다.
그렇게 소프트 웨어 시장의 한계성을 뛰어넘지 못하고 업계를 뛰쳐나온 필자에게 컴퓨터는 또 하나의 영원한 동경의 대상이 되고 만다. 배운것을 익히고 활용하지 못하면 아니 배운만 못하다는 생각을 늘하고 있었던 지라 언젠가는 컴퓨터를 다시 하겠다는 생각이 언젠가는 만화가가 되겠다는 생각처럼 필자의 마음 한구석에 동경의 대상으로 자리 잡으면서 세월은 바람처럼 흘러 가고 있었던 것이다.
몇 번의 좌절과 거듭되는 포기였지만, 내 동경의 대상인 만화와 컴퓨터만은 늘 관심의 대상이 되고 있었는데, 어느 날, 모뎀으로만 성행하던 컴퓨터 통신시장에 인터넷이라는 새로운 것이 소개 되면서 필자의 관심을 집중 시키고 있었는데, 1998 년 PC 방이라는 것이 이곳 대구에서도 대학교 부근에 하나 둘 씩 자리 잡음으로서 이 놀라운 통신 기술을 처음으로 접하게 되는데, 몇년 후 한 초등학생이 알려 준 졸라맨은 필자의 시선을 단번에 사로 잡았고 초등학생의 표현처럼 디따 재미있는 이 애니메이션이 어떻게 만들어 졌는지 궁금해 지기 시작했다.