프로그래밍 언어 중 가장 쉬운 언어는 '파이썬(Python)'이다. 코딩을 잘 모르는 일반인도 이 언어를 처음 접하게 되면 쉬워서 놀랄 것이다. 파이썬이 얼마나 쉬운지 단적인 예를 보자. 다음은 대표적인 프로그래밍 언어인 'C', '자바' 그리고 파이썬으로 작성한 코드다.
위의 코드는 모두 똑같은 결과를 출력하는데, C와 자바는 몰라도 상관없다. 파이썬을 보는 순간 어떤 결과가 나타날지 짐작할 수 있으니까. 바로 "Hello MinSu!"를 출력하는 것이다. 파이썬은 문법이 간결하다. 다른 언어들처럼 복합한 기호나 함수의 사용이 많지 않아서 가독성도 뛰어나다. 마치 인간이 언어를 쓰는 방식과 유사하게 느껴진다. 그래서 직관적이다. 파이썬을 쓰면 코딩을 쉽게 배울 수 있기 때문에 중고등학교에서도 코딩 교육으로 파이썬을 가장 많이 선택한다. 심지어 공짜다. (무료 다운로드)
마치 학생용 코딩 같아서 교육에서만 활용할 것 같지만, 이 언어가 실제로 어떻게 쓰이는지 알게 되면 매우 놀랍다. 일반적인 웹 개발뿐만 아니라 빅데이터와 인공지능 개발에도 파이썬을 사용하고 있다. 우리가 흔히 쓰는 인스타그램이나 유튜브 개발에도 이 언어가 쓰였다. 구글에서는 3대 개발 언어 중에 하나가 파이썬이며, 나사(NASA)에서는 이미 파이썬을 사용한 지가 꾀 오래되었다고 한다.
따라서 파이썬이 무조건 쉽다는 건 새빨간 거짓말이다. 다른 언어에 비해 직관적이라 이해하기 쉽다는 건 맞지만 활용 분야가 좀 더 복잡한 수준으로 넘어가면 파이썬 역시 다른 프로그래밍 언어와 마찬가지로 어렵다. 물론 기죽을 이유는 없다. 활용 분야가 넓은데도 처음 입문하기가 쉽다는 것은 아주 큰 이점이 된다. 만약 당신이 파이썬을 어느 정도 익힌다면 요즘과 같은 디지털 전환 시대에 필요한 혜안을 얻을 수도 있고, 시스템이나 플랫폼 환경을 막연하게 두려워하지 않을 만큼 튼튼한 기본기를 습득할 수도 있다.
파이썬처럼, 프로그래밍 언어는 갈수록 인간의 언어를 닮아간다. 그것은 프로그래밍 언어의 존재 이유를 짐작해 봐도 알 수 있다. 얼핏 생각하면 프로그래밍 언어란 컴퓨터가 이해하는 언어로 착각할 수도 있겠지만 그렇지 않다. 컴퓨터가 아니라 인간을 이해시키기 위해 만든 언어다. 컴퓨터는 프로그래밍 언어를 모른다. 오로지 0과 1이라고 하는 기계어(이진수)만을 인식할 뿐이다.
컴퓨터가 프로그래밍 언어를 이해하려면 번역기가 필요한데 그 번역기를 가리켜 '컴파일러(compiler)'라고 한다. 이 컴파일러가 인간이 쓴 프로그래밍 언어를 0과 1이라고 하는 기계어로 번역해 주는 것이다. 지금은 상상하기 어렵겠지만, 아주 옛날에는 모든 개발자가 0과 1만으로 코딩을 하기도 했다. 심지어 키보드나 모니터 같은 입출력 장치도 없었던 시절이니까 코딩을 하기 위해선 다른 장치가 필요했는데 그것이 바로 '천공카드(punched card)'였다.
천공카드에 구멍을 뚫은 자리는 1을 의미하고 구멍이 없는 자리는 0을 의미한다. 이렇게 0과 1만으로 코딩을 해서 컴퓨터와 직접 소통을 했다. 이 얼마나 어마 무시한 일인가. 인간이 사용하는 모든 문자와 숫자를 0과 1이라고 하는 기계어(이진수)로 표현한다고 생각해 보자. 예를 들어, 숫자 1은 이진수로 0001이고, 숫자 2는 0010이며, 문자 A는 1000001이고, 문자 B는 1000010으로 정의하는 식이다. 이런 식으로 정의해서 앞서 보여줬던 "Hello MinSu!"를 출력하도록 컴퓨터에 입력한다고 했을 때 우리가 작성하는 코드는 아마도 이렇게 표현될 것이다.
'0010011110001111001111100011111100011000110110101010110......'
가독성은 고사하고 쳐다보고 있으면 눈이 고통스럽다. 코드의 양도 엄청나서 이것을 해석하는 일도 만만치 않았을 것이다. 이렇게 작성했던 언어를 코딩에서는 '1세대 언어'라고 부른다. 어찌 보면 1세대 언어란 인간이 컴퓨터의 시선에 맞춰준 언어였다. 이 언어가 발전해서 요즘처럼 C, 자바, 파이썬과 같이 좀 더 인간의 시선에 맞는 방식으로 발전했고 이 언어를 가리켜 '3세대 언어'라고 부른다.
프로그래밍 언어의 발전이 거듭될수록 이해의 대상은 컴퓨터에서 인간으로 옮겨져 왔다. 최근에는 코딩을 모르는 일반인들도 프로그램을 쉽게 만들 수 있게 도와주는 로코드(low-code : 코딩을 최소화시킨 개발 환경) 또는 노코드(no-code : 클릭 또는 음성만으로 완성되는 코딩) 도구들이 계속해서 생겨나고 있다. 가까운 미래에는 인간이 쓰는 언어가 자연스럽게 기계어로 번역되는 일도 가능하리라 믿는다. 생각해 보면 이미 우리는 스마트폰이나 AI 스피커와 간단한 대화를 주고받고 있다.
언어의 탄생이란 문명의 발전을 의미한다. 조금 딴생각을 해보면 언어가 아니라 그 언어로 대화의 상대를 넓혀 왔던 것이 진짜 문명의 발전은 아니었을까? 인간이 최초의 대화를 시도했을 때, 그게 2만 년 전이었는지 아니면 200만 년 전이었는지 우리는 알지 못한다. 초기 인류는 아이를 낳거나 먹고사는 일 이외엔 관심이 없었고 분명 그들은 대화가 아니라 짐승의 울음소리를 내었을 것이다
그러다 400만 년 전쯤, 네발로 걷던 인류는 직립 보행을 시작하면서 척추 질환을 앓기 시작했고, 3억 년 전쯤엔 음식을 먹다가 질식사하기도 했다. 이유는 발성을 담당하는 후두가 목구멍 깊숙이 들어가는 진화 과정을 겪었기 때문이다. 그래서 음식을 먹다가 질식해 죽을 수도 있었지만 덕분에 정교하게 발음할 수 있는 능력이 생겼다. 이때부터 인간은 짐승의 울음소리가 아니라 말을 하기 시작했다. 비로소 인간다운 대화가 가능해진 것이다. 그렇게 대화를 하기 시작하자 엄청나게 창의적인 동굴벽화도 그렸고 죽은 자를 모시기 위해 제사도 지냈으며 활과 낚시로 협동심을 발휘한 흔적들이 곳곳에서 나타나기 시작했다. 이것은 정교한 언어 체계와 대화가 없이는 불가능한 일이었다. 이렇게 인간은 누군가와 대화를 통해서 문명이라는 꽃을 만개하기 시작했던 것이다.
인간끼리의 대화는 시작에 불과했다. 그렇게 시간이 흘러 18세기, 독일의 철학자이자 수학자인 라이프니츠는 "세상의 모든 진리는 일종의 계산으로 귀착시킬 수 있다"라는 주장을 했다. 그리고 그 모든 개념이 0과 1로 수렴할 수 있다는 신념을 갖게 된다. 이에 대해 연구하던 중 자신의 친구이자 중국으로 파견된 프랑스 선교사 부베로부터 놀라운 사실을 접하게 된다. 부베는 라이프니츠에게 <주역>의 음양 이론을 알려주었다. 라이프니츠는 주역의 음괘(0)와 양괘(1)가 자신의 연구와 일치한다는 사실을 깨닫게 되고 이에 영감을 받아 기계어의 원리가 된 이진법을 완성하게 된다.
이것은 인간 대 인간의 대화가 아니라 동양 문화와 서양 문화가 대화를 시작한 역사적 사건이었다. 비로소 4,000년 전 우주 만물을 음양의 조화로 이해했던 동양 사상이 18세기 서양의 수학 이론과 만나 컴퓨터의 근간이 된 이진법으로 완성하게 된 것이다. 당시에 라이프니츠는 이진법을 정립하고 나서 중국 황제인 강희제(1654~1722)에게 보내는 감사의 편지에 자신의 논문과 컴퓨터의 전신인 기계식 계산기를 동봉해서 선물했다고 한다.
이후 이진법은 괴델, 앨런 튜링 같은 수학자들에 의해 계승 발전되었고 이후에는 모두가 알다시피 컴퓨터가 탄생하게 되었다. 그리고 인간은 인간끼리 대화가 아니라 자신이 창조한 기계(컴퓨터)와의 대화를 시도했다. 그것이 오늘날의 코딩, 즉 프로그래밍 언어로 발전하게 된 것이다.
인간의 대화에는 여러 가지 문제가 있다. 언어의 차이 때문이다. 인간이 사용하는 언어만 해도 약 7,000여 종이 넘는다. 이것을 국제적으로 통용되는 영어로 좁힌다고 해도 영어 능통자는 겨우 5억 명 수준이라고 한다. 문제는 영어로 소통하는 일도 여간 곤욕스러운 게 아니라는 사실인데, 우선 영국 영어와 미국 영어만 봐도 서로 달라서 일상적인 대화에 쓰이는 단어 중에 서로 다른 것만 4,000개가 넘는다고 한다. 당연히 소통에 문제가 생긴다. 문제는 이 영어가 다른 나라에서도 파생되어 독일식 영어, 한국식 영어 같은 여러 가지 변형을 만든다는 사실이다. 여기에 각 나라마다 쓰이는 관용 어구까지 섞이게 되면 인간끼리의 대화에서 혼란과 오해의 여지는 도대체 얼마나 많은 걸까?
공교롭게도 프로그래밍 언어 또한 영어를 기반으로 한다. 그런데 이 영어는 다르다. 각 나라별 문화적 특성이나 관용 어구를 절대 용납하지 않는다. 인간끼리의 대화와 다르게 컴퓨터와 대화를 할 땐 모든 표현이 정확하게 일치해야 한다. 단어 하나를 다르게 써도 안되고 점 하나를 잘못 찍어도 컴퓨터는 곧바로 에러 메시지를 보낸다. 그것은 C, 자바, 파이썬 또는 다른 프로그래밍 언어를 써도 마찬가지다.
인류 역사상 전 세계가 이토록 하나의 언어로 통합된 적은 없었다. 프로그래밍 언어는 다양하지만 그 표현과 쓰임은 똑같다는 의미에서 그렇다. 이것은 인류의 모든 지식이 프로그래밍 언어로 통합되어 간다는 것을 의미한다. 이것이 최근의 기술 발전 속도가 그 어떤 시대보다 빠른 이유다. 특정 기술을 구현하기 위해서 전 세계의 개발자들은 각자의 모국어가 아니라 약속된 프로그래밍 언어로 대화를 하고 있는 것이다.
한국이든 일본이든, 미국이든 중국이든, 러시아든 우크라이나든 갈등과 이념을 초월하고 오해와 혼란을 단절시킬 수 있는 언어는 단 하나뿐이다. 그것은 만국 공통어인 프로그래밍 언어, 바로 코딩이다.