본문 바로가기

불꽃쇼에도 2진수 마법, 버튼만 누르면 ‘각본’대로 발사

중앙선데이 2018.10.20 00:20 606호 28면 지면보기
알고보면 쉬운 과학 원리
가을은 불꽃놀이의 계절이 아닌가 생각된다. 곳곳에서 축제가 열리고, 축제가 열리면 불꽃놀이가 마지막을 장식한다. 불꽃놀이를 보면 신기하다는 생각이 든다. 어떻게 하면 이렇게 하늘에서 아름다운 모습을 만든단 말인가? 아마 불꽃을 발사하는 발사대는 컴퓨터가 조종할 것이다. 불꽃놀이 작동 원리를 예로 들며 컴퓨터 프로그램의 원리를 알아보자.

불꽃놀이 진행순서 정하는 게 코딩
기계가 프로그램 기억, On·Off 작동

1830년 영국의 발명가 배비지
계산기에 자기가 할 일 기억시켜

 
[그래픽=박춘환 기자 park.choonhwan@joongang.co.kr]

[그래픽=박춘환 기자 park.choonhwan@joongang.co.kr]

불꽃 발사대는 전기가 통하면 발사하고, 전기가 끊어지면 발사하지 않을 것이다. <그림 1>은 스위치에 불꽃 발사대를 연결한 모습을 보여 주고 있다. 스위치가 Off 상태이면 2진수 0을 나타내고 전기가 통하지 않기 때문에 불꽃 발사가 없다. 스위치가 On이 되면 1을 나타내고 전기가 흘러서 불꽃이 발사된다. 이 그림은 스위치 하나로 발사대 하나를 조종하는 모습을 보이고 있다. 스위치 하나는 불꽃의 두 가지 상태(0, 1)를 나타낸다. 2진수 0은 불꽃이 없는 상태, 2진수 1은 불꽃이 터지는 상태를 보여 준다.
 
 
컴퓨터가 스스로 할 일 기억하게 만들어
 
<그림 2>는 두 개의 스위치로 두 개의 발사대를 조종하는 모습을 보이고 있다. 스위치 하나가 2가지 상태를 표현하기 때문에, 두 개가 결합하면 4=2X2개 상태를 표현한다. <그림 3>은 스위치 두 개를 이용하여 불꽃놀이를 조종하는 모습을 보이고 있다. 4개의 상태를 나타낼 수 있기 때문에 4가지 불꽃을 연출할 수 있다.
 
자 그러면 이제 조금 멋있는 불꽃놀이를 연출해 보자. 좌우에 두 개의 불꽃 발사대가 있다. 이것을 조종하는 스위치가 두 개 있고 이 스위치 이름을 L과 R이라 부르자. 그리고 이 스위치를 끄면 0, 켜면 1이라 표시한다. 왼쪽 스위치를 Off 상태로 만드는 것을 L0, On 상태로 하는 일을 L1이라 약속하자. 마찬가지로 오른쪽 스위치 작동도 R0, R1으로 약속하자. 스위치가 해야 할 일을 단순한 기호로 약속한 것이다. 그러면 내가 L1이라 명령하면 왼쪽 불꽃이 터지고, R1이라 하면 오른쪽 불꽃이 발사된다. 이 약속된 ‘코드’를 기계에게 명령을 한다는 뜻에서 명령어라 부른다.
 
불꽃은 연속적으로 피어올라야 멋있기 때문에, 명령어를 연속적으로 주어야 한다. 예를 들어서 아래와 같이 주어 보자. 그런데 이 발사대들은 1초에 한 번씩 발사한다. 다시 말해서 명령어를 한 번 실행하면, 그 다음 명령어는 1초 후에 한다는 말이다.
 
L1, R1 / L0, R1 / L1, R0 / L0, R1
 
그러면 이 명령어에 따라서 스위치가 순서대로 작동하여, <그림 4>와 같이 연속적인 불꽃을 만들어 낼 것이다. 이제 불꽃놀이의 전체 진행 순서가 결정되었다. 우리는 이러한 진행 순서를 프로그램이라 부른다. 음악회에서도 프로그램에 따라서 연주가 된다. 컴퓨터에서도 이러한 명령어들을 모아 놓은 것을 ‘프로그램’이라 부르고, 이처럼 프로그램을 작성하는 일을 ‘프로그래밍’이라 부른다.
 
실제로 발사대를 작동시키는 것은 스위치다. 이 스위치의 상태(Off, On)를 표시하는 것은 2진수(0, 1)다. 따라서 스위치에 명령할 수 있는 말도 2진수이다. 예를 들어서 01, 00, 11, 10 으로 말해야 한다. 그런데 인간은 이 2진수를 기억하기가 어렵다. 그래서 앞의 예처럼 L0, L1, R0, R1이라는 코드를 사용하기로 약속했다. 인간이 L0, R0 등으로 명령을 주면 컴퓨터는 이를 번역하여 2진수로 이해한다. 이와 같이 약속된 기호를 이용하여 프로그램을 작성하는 일을 ‘코딩’이라 부른다.
 
자 이제 발사대가 정해진 순서대로 불꽃을 발사시킬 수 있게 되었다. 각 발사대 옆에 사람이 붙어 있을 필요가 없게 되었다. 이제 중앙 본부에서 각 발사대에 연결된 스위치에 전기를 Off, On 하는 순서만 넣어주면 자동으로 터진다.
 
 
아날로그 프로그래밍, 디지털로 진화
 
그런데 여기에도 한 가지 문제가 남아 있다. 중앙본부에서 누군가 일일이 스위치를 작동시키는 명령어들을 넣어주어야 한다. 그러니까 불꽃놀이 한 번 하려면 그때마다 프로그램을 짜서 스위치들에게 넣어 주어야 한다. 프로그램은 인간이 보는 종이 위에 써진 것이지 기계가 기억하고 있지 않기 때문이다. 혹시 프로그램을 기계가 기억하고 있다가 시작 버튼만 눌러주면 기계가 자동으로 실행할 수는 없을까?
 
이러한 생각을 한 사람이 약 200년 전에 있었다. 프랑스의 조셉 마리 자카르다. 1801년 자카르는 나무틀 위에 구멍들을 뚫고 속으로 실이 지나가면서 문양을 놓게 했다. 나무 구멍이 색실이 들어갈 위치와 양을 결정해 준 것이다. 이것이 기계가 기억을 하게 만드는 최초의 사건이었다.
 
그 후 1830년 영국의 발명가 찰스 배비지는 자신이 만든 계산기에 자카르의 구멍 뚫는 아이디어를 접목시켰다. 계산기에 자기가 할 일을 기억시킬 수 있게 되었다. 그의 친구 로벨라체 에이다는 이 기계가 연속적인 계산을 스스로 하도록 연속된 명령어를 주는 프로그램을 짰다. 이제 계산기가 스스로 자기가 할 일을 기억하고 있다가 필요시 일을 하는 존재가 되었다.
 
이제 알았다. 불꽃놀이에서도 프로그램을 저장하는 기억장치가 있을 것이다. 이 기억장치는 시작 버튼이 들어오면, 정해진 순서에 따라서 스위치를 작동시킨다. 아마 이번 주말 불꽃놀이도, 사람이 하는 일은 시작 버튼을 누르는 일뿐일 것이다.
 
자카르의 발명이 실크 방직 산업에 끼친 영향은 어마어마했다. 생산수준과 임금이 높이 상승했으며, 간단한 장치로 프로그래밍을 하는 장치를 고안함으로써 컴퓨터의 시초가 되었다. 그의 아이디어는 런던으로도 날아갔다. 발명가 배비지는 자카르로부터 영감을 얻어 현대적인 프로그램식 컴퓨터의 조상이라 할 수 있는 다목적 문제 해결기, 해석기관을 발전시키게 된다.  
 
다만 이 같은 아날로그 프로그래밍이 디지털 프로그래밍이 되는 데는 상당한 시간이 필요했다. 한 가지 분명한 것은 오늘날 우리가 사용하는 ‘스마트폰’은 퍼스널 컴퓨터에 기반을 두고 있으며 디지털 컴퓨터도 어느 한 순간 ‘뚝딱’ 나온 게 아니다. 이처럼 오랜 세월 아날로그식 프로그램 기법이 연구되어 오면서 숙성을 거쳐 세상에 나오게 되었다는 것을 기억해 둘 필요가 있다.
 
이광형 KAIST 바이오뇌공학과 겸 문술미래전략대학원 교수
인공지능과 퍼지이론, 바이오정보, 미래예측 전문가다. 사단법인미래학회장과 국회미래연구원이사를 맡고 있다. 

선데이 배너

공유하기

중앙일보 뉴스레터를 신청하세요!