박준석의 <세상을 만드는 글자 코딩>은 시중에 나와 있는 대부분의 코딩 책들처럼 어떤 언어(e.g. 파이썬)를 가지고 “어떻게” 코딩을 할 것인가에 대한 방법론을 다루는 것이 아니라, 코딩이 도대체 “무엇”이며 “왜” 프로그래머가 아닌 사람들도 코딩에 대해 배우고 이해해야 하는지에 대해서 이야기한다. 코딩이 “무엇”인지를 설명하기 위해서 코딩을 둘러싼 요소들 - 코딩을 하고 알고리즘을 짜는 저자(=프로그래머), 저자가 코딩을 할 때 사용하는 언어(=프로그래밍 언어)와 글쓰기를 통해 만든 책(=소스코드), 저자가 책을 통해서 컴퓨터와 함께 구현해낸 작품세계(=가상세계)에 대해서 차례대로 설명하고, 이렇게 만들어진 가상세계, 즉 디지털 세계와 컴퓨터의 특징에 대해서 간단하게 설명을 덧붙인다. 그리고 이렇게 다양한 기반 기술에 대한 이해를 바탕으로, “왜” 우리가 코딩에 대해서 알아야 하는지에 대해서 대답한다.
코딩이란 무엇인가? 저자가 설명한 바에 따르면 코딩은 본질적으로 글쓰기이다. 즉 대부분의 작가들이 글을 통해 자신의 생각을 구현해내듯이, 프로그래머 또한 코딩을 통해 자신이 가지고 있는 아이디어를 (컴퓨터라는 매개체를 통해) 형태가 있는 무언가로 구현해내는 것이다. 프로그래머가 코딩에 사용하는 언어, ‘프로그래밍 언어’는 인간이 컴퓨터에게 일을 시키기 위해 발명된 인공 언어로 인류 역사상 가장 위대한 발명 중 하나로 손꼽힌다. 코딩에 있어서 가장 큰 장애물은 사람이 쓰는 ‘자연어’와 컴퓨터가 이해할 수 있는 ‘기계어’가 본질적으로 너무 다르다는 점에 있다. 컴퓨터는 오로지 0과 1, 2가지 숫자로 이루어진 ‘기계어’밖에 이해할 수 없으므로 프로그래밍 언어는 이처럼 자연어와 기계어 사이의 간극을 줄이는 방향으로 발전해왔다. 0과 1만을 이용해서 직접 코딩하는 방식에서 기계어와 자연어를 일대일로 매칭해주는 2세대 언어 ‘어셈블리어’, 번역기의 개발을 통해 모든 기계(CPU)에서 동일하게 작용하는 3세대 언어 ‘고급/고수준언어’에 이르기까지 프로그래밍 언어는 인간의 언어에 조금 더 가까운 방향으로 변해왔고 이 과정에서 코딩 또한 함께 발전해왔다. 사실상 코딩의 역사는 프로그래밍 언어 발전의 역사인 셈이다.
4차산업혁명에 대한 관심과 함께 급부상한 ‘인공지능’은 프로그래밍 언어의 발전이라는 측면에서 매우 중요한 함의를 갖는다. 인공지능의 주요 기능은 인간의 언어, 자연어를 기계가 알아들을 수 있도록 맥락에 맞게 바로 해석해주는 것이다. 이렇게 해석되는 언어, 일명 ‘n세대 언어’는 3세대 고급언어보다 더 높은 수준의 언어로 현재 개발 중이며, 향후 인간의 자연어가 해석 소프트웨어를 거쳐 자동으로 기계어로 번역되는 수준에 이르면 컴퓨터와 인간 간 자유로운 소통이 가능해질 것이다. 또한 인공지능은 코딩의 기초적인 방법론에도 큰 변화를 가져왔다. 기존의 코딩이 입력이 주어지면 출력이 나오도록 하는 프로그램을, 글쓰기를 잘해서 만드는 방식이었다면(입력→프로그램→출력), 인공지능에 있어서 코딩은 입력과 출력이 정해진 상태에서 학습을 통해 프로그램을 컴퓨터가 스스로 만들 수 있도록 학습에 필요한 ‘인공 신경망’을 만들어 주는 방식으로 이루어진다(입력과 출력→학습→프로그램). 논리적인 명령의 나열이 아니라 인간의 뇌 신경망을 모방하여 인공 신경망을 만드는 코딩의 근본적인 변화도 놀랍지만, 인공지능의 부상이 빅데이터와 결코 뗄 수 없는 관계에 있다는 사실을 다시 한번 확인할 수 있는 대목이었다.
그렇다면 우리는 왜 코딩에 대해서 알아야 할까? 코딩을 둘러싼 디지털, 컴퓨터, 통신 등에 대한 기초지식이 필요한 이유는 현대사회에서 컴퓨터 및 스마트폰과 무관하게 살 수 있는 사람이 아무도 없기 때문이다. 코딩을 알면 컴퓨터가 어떻게 작동하는지를 조금 더 확실하게 알게 되고, 인간이 창조해가는 비트세계의 본질을 이해함으로써 코딩이라는 렌즈를 통해 현대사회를 더 깊이 이해할 수 있다. 특히 코딩을 통해 창조되는 비트세계는 점점 현실세계와의 간극을 메워가면서 현실세계를 닮아가고 있다. 이런 상황에서 코딩을 모른다는 것은 지금 누군가에 의해 끊임없이 만들어지고 있는 새로운 세상에 대한 과학 지식이 없는 것과 마찬가지다. 우리가 살아가고 있는 이 시대와 문명이 어떻게 작용하고 있으며 어떤 방향으로 나아가고 있는지를 이해하는데 있어서 코딩에 대한 이해는 필수불가결하다.
또 한편으로는 사회적인 함의도 있다. 코딩을 통해서 만들어진 결과물이 현대를 살아가고 있는 사람들의 일상에 얼마나 많은 영향을 끼치고 있는지를 생각해본다면, 코딩으로 인해 구현되는 현상들에 대한 사회적 책임을 고민하지 않을 수 없다. 특히 에너지발전, 군용프로그램, 통신을 비롯한 주요 인프라 등 현대사회를 구성하고 있는 중요한 요소들이 누군가가 짜놓은 코드를 기반으로 운영되고 있어, 코드의 오류는 때때로 치명적인 재난으로 이어질 수도 있다. 많은 사람들이 코드로 운영되는 프로그램과 어플리케이션에 둘러싸여 살고 있음에도 불구하고 실제로 코딩을 할 줄 아는 사람들은 극소수인 점을 고려해보면, 코딩을 비롯한 디지털 문해력이 얼마나 중요한지 다시금 깨닫게 된다. 어쨌든 우리가 일상생활에서 사용하고 누리는 거의 모든 곳에 코딩이 있으니까 말이다.