이제는 소프트웨어 상식을 갖출 때

날짜2015.02.27
조회수7014
글자크기
    • 이수현 창원대학교 교수, 소프트웨어정책연구소 방문연구원
    • 수학책이나 퀴즈에서 자주 등장하는 문제 하나. 어느 연못에 매우 빨리 자라는 풀이 있다. 이 풀은 하루가 지나면 그전날보다 정확히 두 배의 면적을 차지하도록 자란다. 풀 한 포기에서 시작하여 연못을 가득 채우는데 까지 40일이 걸렸다고 하자. 풀 한포기가 연못의 반을 채우는 데는 며칠이 걸릴까?
    • 가수 싸이를 전 세계에 알리는 데 크게 공헌을 한 유튜브. 이 유튜브가 싸이에 의해서 최대 조회 수를 기록하지 못하는 문제점을 드러내게 되었다. 즉, ‘강남스타일’의 조회 수가 유튜브가 허용하는 최대 조회 수를 넘어섰다는 것이다. 유투브는 21억 4,748만 3,647까지의 조회 수만 저장할 수 있다고 한다. 강남스타일은 이미 지난 5월에 조회 수 20억을 넘어 섰다. 무엇 때문에 이런 일이 벌어졌을까? 문제는 조회 수를 기록하는 메모리 공간에 있었다. 일반인들이야 강남스타일의 조회 수가 유튜브가 허용하는 최대치를 넘어섰다는 것이 단순한 이야기 거리 정도로만 될 수도 있지만 또 다른 사람들은 왜 그럴까 또는 이러한 현상이 다른 분야에서도 나타나지 않을까 걱정한다. 실제로 15년 전에 발생했던 ‘밀레니엄 버그’ 문제도 이와 유사한 경우였다. Y2K로도 알려진 밀레니엄 버그는 컴퓨터에 연도를 기록할 때 뒷 쪽의 두 자리만을 기록하는 데서 기인한 문제이다. 예를 들어, 1998년은 98과 같이 저장하는 방식이다. 1999년 까지는 아무 문제가 없었지만, 2000년이 되면서 00만 표기하게 되었는데 이것이 1900년과 2000년을 구분하지 못하는 결과가 된 것이다. 1999년의 이듬해가 1900년이 된 것이다. 지금도 우리나라의 주민등록번호에는 태어난 해를 표시 하는데 두 자리의 수만을 표기한다. 강남스타일의 조회 수와 관련된 신문기사를 보면서 이상한 점이 발견되었다. 왜 21억 4,748만 3,647인가 하는 것이다. 기사에서는 유튜브의 조회 수 저장에 32비트가 사용되기 때문에 2의 32제곱인 21억 4,748만 3,648부터는 표시될 수 없다고 하였다. 이는 사실과 다르다. 2의 32제곱은 42억 9,496만 7,296이기 때문이다. 그렇다면, 32비트를 사용하는 유튜브 조회 수 저장 시스템에서 왜 최대 조회 수가 21억가량이 되었을까? 컴퓨터에서 수를 저장할 때 1비트는 부호로서 사용하게 할 수 있다. 이런 경우에 조회 수 저장공간은 32비트이지만 1비트를 +/-를 나타내는 부호로서 사용하여서 실제로는 2의 31제곱까지의 조회 수만 기록하게 된 것이 원인이다. (조회 수가 음수가 될 수 없는데, 부호를 사용한 것은 유튜브 개발자의 실수인 듯하다. 개발자도 조회 수가 21억을 넘을 것이라고 예측하지 못한 모양이다.)
    • 1996년, 유럽에서 야심차게 추진되고 있던 우주 프로그램으로 위성을 운반하던 아리안 5호 로켓이 이륙 후 궤도를 벗어나 폭발하였다. 싣고 가던 과학 위성 4대를 포함하여 5억 달러가 날라 가는 순간이었다. 원인을 분석한 기술자들은 64비트 부동소수점(소수점이 옮겨 다닌다는 뜻으로 실수의 저장방식을 이야기 함)으로 저장된 수를 16비트 정수로 변환하는 과정에서 오류가 발생하여 궤도 계산을 잘 못한 것으로 밝혀내었다. 일상생활에서는 정수나 실수나 구분 없이 사용하여도 아무런 문제가 없지만, 컴퓨터에서는 정수와 실수는 매우 달라서 ‘변환’이 필요한 경우가 많다. 이 변환과정을 소홀히 하여 엄청난 손실을 입었던 것이다. 소프트웨어가 우리 생활에 깊숙이 들어오면서 일상생활에서도 소프트웨어에 대한 지식이 요구되고 있다. 비트나 메가바이트 등의 용어가 익숙하게 되었으며, 광고에서도 기가(2의 30제곱을 의미)라는 단어를 사용하고 있다. 또한 신문에서도 심심찮게 2의 몇 제곱이니 하는 기사를 볼 수 있다. 일부 소프트웨어 전문가들만 사용하던 부동소수점 같은 용어도 이제 낯설지 않다. 우리 주변의 많은 것들이 소프트웨어에 의해서 작동한다. 과히 소프트웨어 중심사회로 접어든 것이다. 이런 상황에서 우리 모두는 소프트웨어 전문가가 될 필요는 없지만 기본적인 소프트웨어의 지식을 필요로 한다. 마치 우리가 모두 의사는 아니지만 기본적인 의학지식은 필요로 하는 것과 같은 이치이다. 항생제가 무엇인지를 안다면 그에 대한 오용이나 남용은 줄일 수 있을 것이다. 통계나 데이터에 대한 이해가 있다면 어떤 상황에서 치료를 받는 것이 좋은지 아닌지를 판단하는데 도움이 될 것이다. 마찬가지로 소프트웨어에 대한 지식은 우리 생활에 도움을 줄 것이다. 스마트폰을 살 때, 화면의 해상도가 어떤 의미가 있는지? 메모리의 용량은 얼마가 적당한지?
    • 이런 모든 것이 소프트웨어의 특성에 기인한다. 인터넷 쇼핑몰에서 사용하는 암호화 체계에서 256비트가 128비트보다 얼마나 더 안전한지? 패스워드를 설정할 때 영어, 숫자, 특수문자를 섞어서 사용하는 것이 숫자로만 된 패스워드보다 얼마나 더 안전한지? iloveyou와 같은 패스워드가 왜 위험한지? 등도 소프트웨어 지식이 활용되는 사례이다. 이제 전 국민이 소프트웨어에 대한 이해와 지식을 높일 때이다. 국가와 교육기관 등에서는 소프트웨어에 대한 기초 교육프로그램을 확대해야 할 시점이다. 서두의 문제의 정답은 39일이다. 이 문제는 2의 제곱과 관련된 전형적인 문제이다.
    • [ 본 칼럼은 서울경제 12월 12일(금) [시론]에 게재된 글입니다. ]