글쓰기
글쓰기란 글을 쓰는 것이다.
글이란 글자들이 모여있는 것이다.
그래서, 글자를 나열하면 그것이 글이다.
그런데, 정말 글자들을 나열만 해 놓으면 그것이 글이 되는 것인가?
컴퓨터와 소통하기 위해서 인간의 모든 글자는 하나하나가 숫자로 약속되어 있다. 예를 들면, 대문자 ‘A’는 65라는 숫자로, 소문자 ‘a’는 97이라는 숫자로, 심지어 ‘0’이라는 아라비아 숫자도 인간의 글자이기에 컴퓨터에게는 48이라는 숫자로 약속되어져서 번역되어진다.
한글도 예외일 수 없다. 영어에서는 알파벳들이 모여서 글이 되기에 알파벳 하나하나가 글자가 되지만, 한글은 자,모음이 초성, 중성, 종성으로 모여서 하나의 글자가 되고, 그 글자들이 모여서 글이 된다. 그래서, 한글에서는 ‘가’, ‘나’, ‘감’, ‘눈’, 이러한 것들이 글자가 된다. 그리고, 이러한 글자들은 알파벳, 아라비아 숫자와 마찬가지로 컴퓨터 언어로 번역하기 위해서 각각의 글자들이 특정한 수로, 전세계적으로 동일하게 약속을 이미 해 둔 상태다. ‘가’라는 글자로 등록된 숫자는 44032 이고, 한글의 제일 마지막 글자로 등록된 글자인 ‘힣’은 55203 이다. 결국, 컴퓨터 언어로 번역하기 위해서 등록된 한글은 ‘가’ ~ ‘힣’ 까지 총 11,172개의 글자인 셈이다. 컴퓨터 입장에서는 11,172개의 글자들 중에서 몇가지의 글자들이 모여서 우리의 글이 되는 셈이다. 이렇게 설명해 놓고 보니, 글이라는 것이 참 무미건조해 보인다. 사람의 향기가 전혀 나지 않는다.
그래서, 결국 글쓰기란 글자들을 나열하는 것이 아니다. 11,172개의 글자들 중에서 몇가지를 선택하고 조합시켜서 단어를 만들고 이어붙이는 것이 글쓰기가 아니라, 그 단어에, 그 글자들의 조합에, 나의 생각과 나의 메시지와 나의 정성을 담아서 상대와 소통하고 공유하고 공감하기 위한 행위가 글쓰기다.
코딩
컴퓨터에게 글자는 숫자다. 그래서, 숫자들을 나열하면 컴퓨터에게는 그것이 글이 된다. 인간은 숫자를 나열해서 컴퓨터에게 글이 될 수 있도록 하기 위해서 그 수단으로써 도구를 만들었는데, 그것이 프로그래밍 언어인 C, Java, Python 같은 것들이다. 결국, 프로그래밍 언어는 인간을 위한 도구이고, 그 도구를 이용해서 컴퓨터에게는 계산을 시키는 명령에 해당되는 코드를 만드는 행위가 코딩이 된다.
그리고, 코딩이라는 행위를 통해서 만들어진 코드를 최종적으로 숫자로, 그 숫자를 차례차례 모아놓은 글을 만들어서 컴퓨터에게 전달해서 순차적으로 ‘계산’을 시키는 것이 프로그램이 되는 것이다. 계산을 통해서, 그리고 이동을 통해서 변화되는 숫자들은, 사방팔방 흘러다니게 놔두는 것이 아니라 숫자에 의미를 담아 구조화되고, 숫자의 흐름을 통제할 수 있어야 컴퓨터의 글은 완성될 수가 있기 때문에, 이러한 글을 완성시켜주는 코딩은 숫자들의 구조인 자료 구조와 숫자들의 흐름인 알고리즘이 중요해지는 것이다. 그래서, 코딩은 우리의 글쓰기와 다르지 않다. 물론, 일방적인 계산을 시키기 위한 ‘명령으로써의 글’이기 때문에 인간과의 공감까지는 필요치 않아 보이긴 한다.
단순히 글자만 모아놓았다고 글이 될 수 없듯이, 코드만 모아놓았다고 프로그램이 될 수는 없다. 단어와 글에 메시지를 담아서 공감하고 소통하는 것이 글쓰기의 목적이라면, 컴퓨터는 숫자를 계산하고 기록하는 것이 목적이기에 효율적인 계산의 처리를 위해서 임의의 구조를 가지는 숫자들이 잘 흘러다닐 수 있도록 계산의 순서를 구성하는 것이 컴퓨터의 글쓰기, 즉 코딩이라는 글쓰기의 목적이 되어야 하는 것이다.
인공지능의 글쓰기
블러그의 글을 인공지능이 대신 작성해 준다고 한다. 대학생들 레포트 과제를 인공지능이 대신 작성한다고 한다. 세상에 자신의 일상, 의견, 그리고 메시지를 전달하고 공감할 수 있는 무대를 만들어놓은 이 브런치의 공간에서도 인공지능의 글이 있을 수 있을지는 모르겠지만, 인공지능은 글자그대로 인공의 지능일 뿐이다. “인조 잔디”, 어떤 느낌이 드는가? 가짜라는 느낌이 들지 않는가? 영어로는 “Artificial Grass”라고 한다. 그런데, 인공지능이라는 단어를 영어로 표현하면 “AI”라고 하는데, “Artificial Intelligence”를 줄인 말이다.
“Artificial”. 인조, 인공, 즉 가짜(fake)라는 이야기다. LLM (Large Language Model, 거대언어모델) 기반의 대표적인 서비스인 GPT의 T는 Transformer 를 뜻한다. 마이클 베이 감독의 SF 액션 영화, 트랜스포머를 보면 '오토봇'이라는 기계 로봇들이 자신의 부품을 자유자재로 재조립하면서 형상이 변하게 된다. 그래서, 트랜스포머는 일종의 형상 변환기를 의미한다. GPT가 하는 일도 글자라는 부품을 사전에 훈련받은대로 재조립하는 것이라고 아주 간단하게는 설명할 수가 있다. 물론, 사전에 훈련된 방식(Pretrained)에 따라서 조합시킨 것이긴 한데, 그 훈련의 양이 무지무지하게 많은 양이기는 하기 때문에 가짜인데 진짜 지능이 있는 것처럼 느껴질 뿐인 것이다. 하지만, 인조이던 인공이던 가짜는 가짜일 뿐이다. 사람의 향이 느껴지지 않는 글자들의 조합을 만들어 낸 것이 인공지능의 글쓰기다.
200,000,000,000,000
1,000,000,000,000,000
위의 숫자는 200조 이다. GPT에 사용되는 컴퓨터 1대가 1초에 처리하는 명령의 개수라고 한다. 밑의 숫자는 요즘 컴퓨터의 하드 디스크 용량으로 어렵지 않게 만나볼 수 있는 테라 라는 단위의 천배, 즉 1,000 테라인 1,000조에 해당하는 1 페타이다. 인공지능에서는 어렵지 않게 만날 수 있는 단위이다. 여기에 덧붙여 양자 컴퓨터로까지 넘어가면 생각해 볼 수 있는 수는, 음.. 그냥 ‘0’이 엄청 많다로 표현해야 할지도 모르겠다. 참고로 ‘0’이 68개가 있으면 그 숫자가 가리키는 수를 셀 수가 없을 것이라고 해서 ‘무량대수’라 부른다. 그런데, 이 무량대수를 훨씬 뛰어넘는 수인 10의 100승을 ‘구골, googol’이라고 하는데, 우리가 알고 있는 ‘구글’이라는 회사의 이름이 여기서 나왔다고 한다.
그래서, 사실, 인공 지능을 가짜 지능이라고 말하긴 했지만, 사전 학습에 사용되는 지식의 양이 어마어마하기 때문에, 사전에 그냥 학습된 지식인 가짜 지능일 뿐이야 라고 치부하기에는 쉽지 않아 보인다.
집단 지성
집단 지성(Collective Intelligence)은 다수의 개체들이 서로 협력하거나 경쟁하는 과정을 통해 개별적인 능력의 합을 넘어서는 집단적인 지적 능력을 발휘하는 것을 말한다. 이는 단순히 여러 사람의 의견을 모아놓는 것을 넘어, 상호작용과 협업을 통해 새로운 아이디어나 해결책을 창출해내는 역동적인 과정인 것이다.
19세기초 독일의 철학자, 헤겔은 변증법적 논리학에서 세상은 정신의 자기 발전 과정이며, 이 과정은 “정반합”이라는 변증법적 운동을 통해 이루어진다고 보았다. 개별적인 지성이 모여 더 높은 차원의 지식으로 나아가는 집단 지성의 메커니즘은 헤겔의 이러한 사유와 깊은 연관성을 가진다.
LLM에 사용되는 데이터의 양은 실로 어마어마하다. 이러한 방대한 양의 사전 지식을 변증법적 효율성을 근간으로 처리하며, 보다 발전적인 지식을 생성하는 과정은 인간의 지능과 유사하게 보이는 핵심적인 이유가 될 수 있다. 그런데 이 '양적'인 축적이 특정 임계점을 넘어서면서 모델은 마치 질적인 도약을 이룬 것처럼 보이는 현상이 발생한다. 즉, 단순히 학습 데이터를 암기하는 것을 넘어, 언어의 미묘한 뉘앙스를 이해하고, 추론에 가까운 답변을 생성하며, 창의적인 글쓰기를 하는 등 이전에 기대하기 어려웠던 능력을 보여주기 시작하게 되는 것이다. 이는 헤겔의 "양적 변화가 질적 도약을 이끈다"는 변증법적 원리를 연상케 하며, LLM이 단순한 데이터 축적을 넘어 창의적이고 추론적인 결과를 만들어내는 현상을 이해하는 철학적 틀을 제공한다.
열역학 제 2법칙에 따르면, 세상의 모든 흐름은 엔트로피 증가의 법칙, 즉 무질서도가 증가하는 방향으로 진행되는 것처럼 보인다. 하지만, 동시에 발전적이고 질서 있는 방향성을 띠는 현상도 함께 보인다. 무질서 속의 질서, 또는 무질서에 기반한 발전이라는 역설적인 현상은 거대한 흐름에 ‘미세한 틀’을 제공함으로써 엔트로피 증가의 큰 흐름 속에서 특정 방향으로 에너지를 집중시키거나, 정보를 조직화하여 일시적이고 국소적인 질서를 창조하는 역할을 하게 된다.
코딩은 글쓰기다
A programmer is someone who solves a problem you didn’t know you had in a way you don’t understand.
프로그래머는 당신이 몰랐던 문제를 당신이 이해하지 못하는 방식으로 해결하는 사람이다.
이 문장은 프로그래머의 역할을 조금은 자조적이고 유머러스하게 묘사하는 표현이라고 하는데, 인공지능 시대에서는 다르게 해석하고 싶다.
프로그래머는, 인간이 인식하지 못하는 문제점을 데이터 속에서 발견하고, 언어와 논리로 엮어 이해를 넘어선 창의성으로 해결을 시도하는 사람이다. 그래서, 프로그래머는 코드를 통해서 소프트웨어를 개발하는 사람이 아니라 코드를 통해서 방대한 양의 데이터를 통제하고, 미세하고 구조적인 틀을 만들어서 새로운 흐름을 이끌어내는 사람이다.
코딩은 어마어마한 데이터를 통제하는 가장 강력한 수단이다. I am a boy, You are a girl 처럼 단어 몇가지 나열해서 글이 되는 것이 아닌 것처럼, 문법 몇가지로 소프트웨어를 만들어내는 것이 코딩이 아니다. 데이터를 통제하는 수단이기에 자료구조, 알고리즘, 객체지향, 코드 디자인 설계 등등. 이 모든 것들은 방대하고 무질서한 엄청난 양의 데이터들을 다루기 위한 미세한 틀이 되는 것이다.
요즘 바이브 코딩(Vibe Coding) 이야기가 많다. 바이브 코딩의 ‘바이브’는 진동이라는 의미의 vibration 에서 나왔다고 한다. 가수들에게도 비브라토(Vibrato)라는 바이브레이션 기술이 있다. 감정이 흘러가는대로 음악에 몸을 실어 음높이를 진동시킴으로써 노래를 더욱 풍성하고 아름답게 만드는 기법이다. 바이브 코딩은 코드라는 기술적인 작성은 인공지능에게 맡기고 감정이 흘러가는대로 몸을 맡긴다고 해서 붙은 이름이라고 한다.
완벽하게 악기를 다루는 연주자들이 다수 있다고 하자. 하지만, 이러한 연주자들을 지휘하는 오케스트라 지휘자가 엉망으로 지휘한다면 이 연주자들이 만들어내는 소리들은 그냥 소음일 뿐이다. 하나의 유닛들이 출중한 실력으로 만들어내는 소리도 무질서하게 어우러지면 시끄러운 소음이기 때문에 지휘자의 적절한 통제 속에서 아름다운 음악으로 청자들에게 감동을 선사하게 된다.
가만히 놔두면 어차피 무질서해질 데이터들. 코드의 효율성을 평가하기 위해 시간의 복잡성과 공간의 복잡성이라는 개념이 있다. 코딩의 궁극적인 목적은 엄청나게 복잡한 데이터들을 복잡하지 않게 만드는 것이 아니라 통제가 가능한 복잡성으로 떨어트리는 것이다. 그래서, 데이터와 자료의 구조를 만들고, 효과적인 흐름으로 로직을 만들어서 다루기가 불가능해 보이는 그 복잡성을 논리적 기반 위에서 미세한 틀이라도 만들어보고자 함이다.
코딩은 문법에 맞춰서 마구잡이로 코드를 작성하는 것을 의미하지 않는다. 코드 한 줄에서 데이터가 보여야 하고, 미세한 티끌이 일정한 틀 속에서 응집력를 발휘해서 태산이 되듯 탄탄한 논리적 전개를 통해서 효과적인 흐름이 만들어지는 것이 보이도록 구성되어야 한다.
코딩은 글쓰기다.
글을 쓴다는 행위는 "기, 승, 전"으로 독자의 마음을 끌고가서 '결'을 통해 독자의 마음에 작은 고개 끄덕임을 만들어 내듯이, 코딩은 심지어 추상적으로 보이기까지한 숫자 형태의 데이터들을 이렇게 나누고 저렇게 분류해서 미처 발견하지 못했던 진실을 도드라지게 만들어내고 정리해서 질서있게 재배치를 하여서 그 진실을 인지할 수 있게 만들어내는 도구이다. 인간은 오케스트라의 지휘자가 되고, 드라마나 영화에서의 스토리의 큰 틀을 만들어서 끌고 가는 메인 작가가 된다. 그리고, 아주 완벽하게 숙달되고 출중한 '인공지능'이라는 보조 작가 팀이 구성되어 있다. 훌륭한 연주자, 뛰어난 보조 작가들에 ‘미세한 틀’을 제공하는 이는 다름아닌 인간이다. 왜냐하면, 그들과 함께 만들어내게 되는 그 무언가는 결국 ‘인간’을 위한 '무언가'이기 때문이다.
그래서, 코딩은 인간의 데이터들에서 질서를 만들어내어 인간을 이롭게 할, 인간의 글자들을 모아놓은 글을 쓰는 행위인 것이다.