Homo AI-kus 세대의 시작을 보며.
필자는 삼성전자에서 시스템 소프트웨어 엔지니어로 사회생활을 시작했다. 당시에는 주로 C, C++, Java를 활용해 개발 업무를 수행했다.
프로그래밍 언어의 발전 역사는 기계에게 작업을 시키기 위한 수단으로 시작되었다. 초기에는 기계가 이해할 수 있는 0과 1의 기계어(machine code)를 사람이 직접 작성했지만, 시간이 흐르며 점차 인간의 언어에 가까운 형태로 진화해왔다.
아래는 동일한 로직을 오래된 프로그래밍 언어부터 최신 언어까지 표현한 예시다. 순서대로 살펴보며, 여러분은 어느 단계에서 그 로직이 무엇인지 알아차리셨는지 생각해보시길 바란다.
첫 순서는 기계어(8비트 머신)이다.
• 00000001 00000001
• 00000010 00000001
• 00000011
이 코드만 보고 어떤 연산인지 짐작할 수 있으신가?
다음은 어셈블리어(x86 예시)이다.
• mov al, 1
• add al, 1
• mov [result], al
조금은 더 읽기 쉬워졌는가?
다음은 C 언어.
• #include <stdio.h>
• int main() {
• int result = 1 + 1;
• printf("1 + 1 = %d\n", result);
• ...
• }
명확하게 "1 + 1 = 2"라는 연산이 보이기 시작한다.
다음은 파이썬 코드다.
• result = 1 + 1
• print("1 + 1 =", result)
더 간결하고 직관적인 표현이다.
여러분은 어느 지점에서 "1 + 1 = 2"라는 로직을 명확히 알아차리셨는가?
사실 위 코드는 모두 ChatGPT에게 "1 더하기 1은 2"라는 문장을 각 언어별 코드로 작성해 달라고 요청해 생성한 것이다.
즉, 자연어로 요청한 결과가 실제 프로그래밍 코드로 번역된 사례이다.
(아래 이미지의 코드는 예시임)
프로그래밍 언어의 사용 시기와 "1 + 1 = 2" 연산 표현 방식을 정리하면 아래와 같다.
이는 곧 기계 친화적 언어 → 인간 친화적 언어로의 진화를 잘 보여준다.
필자는 중학교 시절, 호기심으로 기계어 코드를 직접 작성해 본 적이 있다.
하지만 그 후로 다시는 하지 않았다. 사람이 하기에는 너무나 비효율적이라는 사실을 깨달았기 때문이다.
삼성전자 신입 개발자로 일하던 시절 만난 20년차 연구원도 생각난다.
그분은 과거엔 뛰어난 코더였지만 실무에선 손을 놓은 상태였고, 대신 컴퓨터 BIOS 설계에 있어선 뛰어난 감각을 지니고 있었다. 그분은 종종 이렇게 말했다.
"내가 생각한 걸 말로 설명하면, 코딩해 주는 실무 엔지니어가 있으면 좋겠어"
시간이 흘러 그러한 시대가 도래했다. 자연어로 코딩을 해주는 AI agent가 등장한 것이다.
우리는 이제 AI와 공존하는 시대를 살아가고 있다.
이제는 "무엇을 할 수 있는가"보다 "무엇을 하고 싶은가"를 아는 것이 더 중요한 시기가 되었다.
다음 글인 말로 코딩하는 시대(2)에서는,
자연어로 요구사항을 ChatGPT에게 설명하여, 소프트웨어 요구사양서 작성부터 실제 배포 가능한 프로그램 제작까지 과정을, 주식 종목 선정 및 자동 매매 프로그램을 예제로 이어서 설명해 보겠다.