726회
블록체인
=============================
2008년 8월 4일.
8월의 첫 월요일이 시작하는 날, 어김없이 ID 그룹의 최대 축제인 IDDC가 시작되었다. 장소도 변함없이 실리콘 밸리 컨벤션 센터였다.
작년에는 티파니의 임신으로 유재원이 불참한 가운데 치러졌지만, 올해에는 첫날부터 유재원의 출연이 예정되어 있었다.
거기에 유튜브 라이브도 추가되었다는 게 전과 다른 IDDC의 변화였다.
과거에도 IDDC는 전용 홈페이지와 포털 사이트인 넥스트컴에서 스트리밍 방송을 했고, 무료로 볼 수 있었다. 여기에 유튜브 라이브를 추가한다고 크게 달라지는 건 없어 보였지만, 유튜브 라이브의 화질이 월등했고 채팅 기능도 더욱 강화되었다. 게다가 모바일 환경에서 간편하게 볼 수 있다는 점도 특별했다.
그래서일까?
올해 처음 등장한 유튜브 라이브였지만, 접속자는 기존의 스트리밍 사이트보다 훨씬 많았다. 또한, 전체 누적 온라인 접속자는 역대 IDDC 중에서도 최대 수치를 찍었다.
그만큼 수많은 사람들이 IDDC에 거는 기대가 컸다고도 볼 수 있었다. 유재원은 첫날 기조연설에 당당히 등장했다.
그런데 유재원의 두 손에는 아무것도 들려 있지 않았다.
전문가들은 유재원이 당당하게 최신 안드로이드 스마트폰인 S8을 들고 나올 거라고 예상했지만, 맨손이었으니 뭔가 특별한 이벤트로 제품을 보여주려나 하고 두 눈을 크게 떴다.
“음. 지금 여러분께 공개하는 건 컴퓨터 생태계를 바꿀 새로운 도구입니다.”
유재원은 무수한 사람들의 기대를 처음부터 박살내면서 기조연설을 시작했다. 일단 지금 발표될 신제품은 스마트폰이 아니라는 이야기였으니 말이다.
“컴퓨터라는 물건은 하드웨어만으로 작동되지 않습니다. 소프트웨어와 결합되어야만이 컴퓨터는 사용자의 목적을 수행할 수 있습니다.”
객석에 자리한 관객들의 얼굴에 물음표가 떴다.
대체 무얼 발표하겠다는 것인지 짐작할 수 없었던 탓이다.
“소프트웨어를 만들기 위해서는 프로그래밍이 필수적인 작업이지요. 그런데 많은 사람들이 프로그래밍은 어려운 일이라고 생각하는 개발자들이 많다는 겁니다. 치기어린 시절 이야기지만, 개발자 분들이 키보드에서 손을 떼고 멍하니 있는 모습이 이해되지 않기도 했습니다. 그러면서 완성된 소스코드를 보면 그렇게 많은 시간을 허비하면서 만든 소스코드가 왜 이런 수준인가 하는 의문이 들 때도 많았습니다.”
유재원은 아주 자연스럽게 본인이 천재라는 걸 말했다.
“나중에 알고 보니 이분들이 최선을 다하지 않은 게 아니었습니다. 보다 나은 성능을 위해 최적화도 열심히 했고, 퍼포먼스가 더 좋다는 컴파일러로 교체하는 건 물론이고, 아예 프로그래밍 언어를 바꾸는 대작업을 선택하기도 했답니다. 오직 더 나은 성능을 위해서 말이지요. 다만 그 작업들이 모두 성능향상에 유효한 게 아니었을 뿐입니다.”
재미있는 건 유재원이 소개하는 사례는 현실에선 아주 드문 일이었다는 점이다.
열심히 해도 성능향상이 미미한 건 사실이긴 한데, 대다수의 개발자나 소프트웨어 회사들은 일단 어떤 식이든 굴러가기만 하면 그걸로 만사 OK였으니 말이다. 예산과 시간을 넉넉히 챙겨주는 천사 같은 클라이언트는 존재하지 않기 때문이다.
“개발의 편의성은 자바, 성능이라면 C를 선택하는 게 요즘의 개발 트렌드라고 하더군요.”
유재원은 C언어를 언급하면서 본론으로 들어갈 준비를 마쳤다.
“네, 오랫동안 C 언어는 강력한 프로그래밍 언어로서 굳건한 지위를 자랑했습니다. 마스터하기까지 시간이 조금 걸리지만, 그만큼 퍼포먼스가 훌륭했기 때문이지요. 확장성도 뛰어나서 최신 시스템에 충분히 적용 가능한 언어이기도 하고요.”
-조금이라고?
-그건 절대 아니죠!
-천재들이란 다 저래요. 자기가 할 수 있다고 남들도 다 할 수 있다고 생각하죠.
-위의 분 말에 100% 동감. 우리 랩에도 천재라는 녀석 하나 있는데, 저런 식임.
유재원의 말이 끝나기 무섭게 유튜브 라이브 채팅창에는 아니라는 말이 수두룩하게 올라왔다.
그도 그럴 것이 제2, 제3의 유재원을 꿈꾸면서 학교에서 프로그래밍을 열심히 배웠던 이들은 밤하늘의 별처럼 많았다. IDDC의 첫날 기조연설을 보는 이들 중에도 상당수 있었다. 그러나 지금까지도 유재원의 뒤를 잇는 존재는 단 한 명도 등장하지 못했다.
유재원이 이룩한 성과를 따라가기 급급했다.
단적으로 PC용 안드로이드 운영체제에서 구동되는 프로그램을 만들 때, 제일 많이 쓰이는 건 유재원이 만든 라이브러리였다. 라이브러리에 담긴 함수들을 적당히 조합만 하면 뭐든 다 만들 수 있다.
프로그래머 본인만의 라이브러리를 따로 만들어 사용하는 경우는 극히 드물었다. 설사 몇 존재한다 해도 커스텀 라이브러리의 성능이 안드로이드 운영체제의 기본 라이브러리보다 더 좋은 경우는 거의 없었다.
유재원이 다른 개발자들이 만든 프로그램을 볼 때 느끼는 아쉬움도 여기에 있다.
최적화 문제다.
쓱 보면 이보다 훨씬 좋은 퍼포먼스를 낼 수 있는 요소들이 보였음에도, 그러지 못하는 경우가 수두룩했다.
게임이 특히 그랬다.
엑스박스용 게임들을 보면 순간적으로 프레임이 폭락한다거나, 이유 없이 버벅거리는 게임들이 종종 있었다. 난전 상황에서 프레임이 출렁거리면 살 수 있는데도 게임 오버가 되고 만다. 온라인 멀티 게임이었다면, 억울하게 킬을 헌납해야 했다.
인터넷 문제처럼 시스템 외부의 문제라면 변명의 여지는 있지만, 그런 문제보다 게임 자체의 문제인 경우도 상당수였다.
어디선가 병목 현상이 일어나는 것이다.
그런데 이를 발견하는 것도 어려웠고, 찾아냈다고 해도 해결하는 것도 어려웠다. 프로그래머의 최적화 실력이 갑자기 확 상승하는 일은 드물었기 때문이다. 백날을 고민해서 새롭게 업데이트한 코드도 기존의 성능과 크게 차이나지 않는 경우가 많았다.
유재원은 뻔히 보이는 걸 왜 못 찾을까 싶었지만, 새로운 프로그래밍 언어를 개발하면서 수집한 사례들을 학습하고 나서야 이해할 수 있게 되었다.
C라는 언어 자체가 사람보다는 컴퓨터에 가까운 언어인 탓에, C를 자유롭게 구사할 수 있는 고급 프로그래머 자체가 적었다. 반면 사람의 언어에 보다 가까운 베이직은 익히는 건 쉬운데, 퍼포먼스가 좋지 않았다.
“네! 이쯤 되면 다들 짐작하셨겠죠? 제가 무얼 발표하려는 것인지 말입니다.”
-설마! 그거!
-그럼그럼! 그거 말하는 거 아니냐?
-맞아요! 그거요!
유튜브 채팅창은 ‘그거’라고 지칭하면서 아는 척하기 바쁜 이들이 범람하기 시작했다.
“네, 차세대 프로그래밍 언어 Z+를 소개합니다.”
프로그래밍 언어의 네이밍은 보통 알파벳 대문자를 쓰는 경우가 많았다. B도 있고 C도 있고, R도 있다. 그렇기에 유재원은 과감하게 Z를 선택했다. 프로그래밍 언어의 끝판왕 되라는 의미였다.
유재원의 등장 후에도 전혀 미동이 없었던 메인 스크린에 Z+의 로고가 큼지막하게 떴다.
하얀 대지를 가로지르는 녹색의 레이저가 Z의 표시를 큼지막하게 했고, 하늘로부터 빛의 기둥이 떨어지면서 +라는 기호도 새겼다.
유재원이 무려 1년이 넘는 시간 동안 공을 들인 Z프로젝트가 드디어 결실을 맺은 것이다.
“Z+의 언어는 베이직보다 더 배우기 쉽고, C는 물론 어셈블리어보다 더 빠른 속도를 지향했습니다. 여기에 21세기 보편화될 인공지능을 추가해, 프로그래머의 고민을 덜어주도록 설계되었지요.”
유재원과 같은 S급 천재가 1년이 넘는 시간을 소모해야 했던 이유를 짧게 설명했다.
고급 언어가 기계어 수준의 어셈블리어와 같은 퍼포먼스를 낸다는 것 자체가 현재의 상식으로는 불가능한 일이었다.
그것이 가능한 것은 프로그래밍 문법과 컴파일러의 비동기적인 결합에 있다.
지금까지의 프로그래밍 언어는 문법에 크게 종속되어 있었다. 사람이 이해하기 편할수록, 이를 컴퓨터가 알아듣는 기계어로 처리하기 위해서 소모되는 리소스가 많았다. 반대로 컴퓨터의 논리 회로에 가까울수록, 문법적 난이도가 높아졌다.
유재원은 컴파일러를 대혁신하면서 두 마리 토끼를 동시에 잡았다.
비밀은 바로, 컴파일러와 연결된 인공지능이었다.
인공지능의 개입으로 인해서 Z+의 컴파일러는 프로그래머가 입력한 소스 코드를 곧이곧대로 바이너리 코드로 바꿔 주는 게 아니라, 프로그래머의 의도를 읽어낼 수 있었다. 그렇게 의도를 읽어서 인공지능 자체가 최적화를 수행한 다음, 컴파일에 들어간다.
더욱 심플하게 요약하자면, 유재원 본인의 프로그래밍 실력을 그대로 이어받은 인공지능이 초보 프로그래머들의 소스 코드를 이해하고서 그 의도에 맞춰 기계어 수준의 최적화를 하여 컴파일을 해 주는 것과 같았다.
이러한 작동 원리에 덕분에 소스코드의 재활용성도 기존의 프로그래밍 언어들과 차원이 다르다. PC용 응용프로그램의 소스코드를 약간의 수정만 거치면 아이폰에서도 실행할 수 있게 만들어준다.
물론 최대의 강점은 퍼포먼스다. 몇 줄 안 되는 프로그래밍이라면 별 차이는 없지만, 소스 코드의 길이가 수십만, 수백만 라인이 넘는 대형 프로그램이라면 퍼포먼스의 차이가 극명해진다.
“예를 보여드리지요. 여기 게임을 제작할 때, 범용적으로 쓰이는 ID 테크엔진이 있습니다.”
ID 테크엔진!
유재원도 존경해 마지않는 천재 개발자 존 카멕이 만든 완성형 게임 엔진이고, 게이머들 사이에서 ID 소프트웨어가 배가 불러 게임을 만들지 않게 했다는 원흉으로 지목된 저주받은 걸작이었다.
그도 그럴 것이 ID 소프트웨어가 자체적인 게임을 만들어 올리는 매출액보다 ID 테크엔진을 게임 개발사에 공급해 올리는 매출액의 크기가 더 커져 버렸다. 그로 인해서 더 퍼시픽 이후로 신작 개발 소식은 뜸해졌다.
ID 소프트웨어의 개발진 다수도 게임 개발보다는 ID 테크엔진의 유지 보수에 힘쓰고 있는 것이 사실이었다.
물론 ID 소프트웨어가 자체 게임 개발을 포기한 건 아니었다. 1년 전부터 게이머들을 깜짝 놀라게 해 줄 신작도 열심히 제작 중이었다. 당연하게도 ID 소프트웨어의 신작이 나오면 게임 엔진인 ID 테크엔진의 버전도 상승한다.
신작 게임에 최신의 기술이 아낌없이 투입되면서, 자연스럽게 ID 테크엔진의 수준도 높아지기 때문이다.
“ID 테크엔진을 Z+로 포팅하면 퍼포먼스의 향상이 얼마나 이뤄질까요? 지금 보여드리죠.”
시원한 유재원은 무의미하게 시간을 끌지 않고 바로 결과를 띄웠다.
메인 스크린 화면이 둘로 분리되었다.
왼쪽은 기존의 C언어로 컴파일된 ID 테크엔진, 오른쪽에는 Z+로 포팅되어 컴파일된 ID 테크엔진이 구동되었다.
로딩된 프로젝트는 그 유명한 더 퍼시픽의 아오지마 전투였고, 그중에서도 실시간 렌더링으로 펼쳐지는 이벤트 씬이었다.
ID 테크엔진이 실행되고, 프로젝트가 로딩되어 실행에 들어가는 모든 과정이 스킵 없이 실시간으로 비쳐졌다.
“당연한 이야기지만, 두 시스템 모두 동일한 스펙의 하드웨어로 실행된다는 걸 말씀드리죠.”
차이점은 딱 하나, 포팅된 프로그래밍 언어였다.
그럼에도 불구하고 각 스크린의 오른쪽 상단에 찍히는 FPS의 차이는 25%가 넘었다. 왼쪽은 50~60프레임 사이에 출렁임이 있었고, 오른쪽은 68~78프레임 사이에서 움직였다.
유의미하다를 넘어서 확실한 퍼포먼스의 향상이었다.
더욱이 별다른 고도화 작업 없이 프로그래밍 언어를 교체해서 포팅하는 것으로 이 정도 성능 향상이 생기는 것은 이전엔 없던 일이었다.
다만 Z+언어에 단점이 없는 건 아니다.
일단 무지막지한 설치 용량이 필요하다.
Z+용 컴파일러는 일반적인 형태가 아니라 인공지능이 담긴 컴파일러라서 전체 설치 용량이 30GB가 넘었다.
여기에 추가적인 단점이 있으니, 컴파일에 걸리는 시간이다.
ID 테크엔진을 예로 들자면 소스 코드를 가감 없이 바이너리 코드로 바꿔 주는 C의 경우, 2시간 정도면 끝이었다. 그런데 재해석이 필요한 Z+는 보통의 쿼드코어 컴퓨터에선 이틀이 넘게 걸린다.
-내가 잘못 들은 건가? 이틀? 이틀이라니!?
“현재 시점에서는 아무리 최적화를 해도 어쩔 수 없더군요.”
이틀이 넘게 걸린다는 말을 하며 머릴 긁적이는 유재원이다.
포팅을 통해 얻을 수 있는 이점이 크지만, 단점도 결코 묵과할 수 없을 정도다.
2020년 때처럼 개인용 CPU가 16코어, 32코어인 제품이 나왔다면 그 시간이 1/4이나 1/8로 크게 줄어들 테지만 이런 제품들이 시중에 나오려면 몇 년은 더 기다려야 한다.
“제가 누굽니까? 당연히 단점을 보완할 대책도 마련했습니다.”
대신 유재원은 차선책을 만들었다.
컴파일 중에 정전이 일어나서 재부팅을 했다고 해도, 중간부터 이어서 할 수 있다는 건 대책에 들어가지도 않았다.
“ID 그룹의 자랑 ID 클라우드 서버를 통해 Z+의 컴파일을 지원하겠습니다. 물론 추가 요금 없이 말이지요. 그러면 클라우드 서버에 업로드 후 컴파일했을 때의 퍼포먼스가 중요해지겠지요?”
모두가 궁금해할 결과는 바로 메인 스테이지의 대형 스크린에 띄워졌다.
-6분 45초.
개인용 컴퓨터로 이틀이나 걸릴 컴파일러 시간이 6분 45초로 줄어들었다. 클라우드 시스템이 뿜어내는 무지막지한 연산력이 발휘한 초강력 퍼포먼스였다.
“여기에 하나 더. 인공지능의 진가는 학습에 있다는 걸 다들 아시지요? Z+의 컴파일러 인공지능도 예외는 아닙니다.”
수많은 개발자들이 업로드한 소스 코드와 이러한 소스 코드를 바탕으로 최적화를 학습한 Z+의 컴파일러는 시간이 지날수록, 지능이나 성능이 무시무시하게 확장될 것이다.
“물론 애써 만든 소스 코드를 클라우드 서버에 공개하는 것에 불안감을 느끼실 분들도 있을 겁니다. 또한, 이러한 소스 코드로 Z+의 컴파일러 인공지능의 지능이 향상되는 것에 대해 불합리하게 느끼실 수도 있겠지요.”
인공지능의 지적 능력 향상에 기여한 이들에 대한 보상 문제는 21세기의 중대한 문제였다. 당시엔 구글, 아마존과 같은 소수의 매머드급 공룡 기업이 그 과실을 독차지했었지만, 지금은 많이 다르다.
인공지능 골드에 개인 정보를 제공하고, 지적 능력 향상에 이바지하면, 이를 수치화해서 매년, 연초에 N포인트로 정산을 해 주고 있었으니까.
“마찬가지로 우수한 소스 코드를 업로드해 주셔서 Z+의 컴파일러 인공지능의 지능 향상에 기여한 개발자들에겐 이에 상응하는 보상을 해 드리겠습니다. 다만 보상 체계는 인공지능 골드와는 조금 다릅니다. 처음엔 N포인트로 정산하려고 했는데, 얼마 전 생각이 바뀌었습니다. 아주 흥미로운 논문 하나를 보았거든요.”
곧이어 메인 스크린에 새로운 로고가 떴다.
네모난 블록들이 줄줄이 이어지며 무한대를 의미하는 인피니티(∞)를 형성했다. 암호화폐의 핵심 알고리즘인 블록체인을 형상화한 로고였다.
유재원은 회심의 미소를 지었다.
그것은 지금 이 장면을 보며 설레고 있을 비트코인의 개발자 사토시 나카모토를 향한 것이었다.
=============================
[작품후기]
추천과 리플, 선작 모두모두 고맙습니다!
원고료 쿠폰, 후원 쿠폰도 완전 감사합니다~!!
사토시 나카모토라는 미지인 만든 비트코인,
우리 재원이도 못 돌릴 이유가 없지요~!