
솔직히 요즘 주니어 개발자들 이력서 보면 한숨부터 나옵니다. 파이썬으로 import numpy, import pytorch 몇 줄 친 걸 가지고 'AI 개발 경험'이라고 적어놓거든요.
하드웨어가 어떻게 도는지, 메모리가 어떻게 할당되는지 모른 채 그저 무거운 라이브러리만 갖다 붙이는 '블록 조립형' 개발이 판을 치고 있습니다. Latency가 왜 튀는지 물어보면 꿀 먹은 벙어리가 되기 일쑤죠.
그런데 간만에 새벽 3시쯤 깃허브를 뒤지다가 눈이 번쩍 뜨이는 레포지토리를 하나 발견했습니다.

바로 Beebo라는 파동 시뮬레이터입니다.
이 프로젝트가 흥미로운 건, 요즘 세상에 드물게도 Pure C와 SDL2만으로 밑바닥부터 짰다는 점입니다.
화려한 게임 엔진이나 물리 라이브러리 따위는 없습니다. 오직 이산화된 라플라스 연산자(Discrete Laplace Operator) 하나로 연못의 물결을 구현해냈습니다.
이게 무슨 뜻인지 감이 오시나요?
GPU 메모리를 수 기가바이트씩 잡아먹는 무거운 프레임워크 없이, CPU 사이클 하나하나를 쥐어짜는 최적화의 끝을 보여준다는 겁니다.
개발자 'willowf'가 구현한 방식을 뜯어보면 흥미롭습니다.
기본적으로 파동 방정식을 수치해석적으로 풀어내는데, 이걸 실시간 렌더링으로 돌립니다.
점수도, 목표도 없습니다. 그냥 물결이 퍼져나가는 걸 멍하니 보고 있으면 됩니다.
하지만 그 이면에는 '물', '기상 레이더', '레이저' 같은 8가지 셰이더를 직접 구현해 넣었습니다.
심지어 경계 조건도 사각형뿐만 아니라 원형, 육각형으로 바꿔가며 반사되는 파동의 패턴을 관찰할 수 있게 해뒀더군요.
엔지니어링 관점에서 보면 이건 '효율성'의 교과서입니다.
요즘 앱 하나 띄우는 데 500MB씩 쓰는 일렉트론(Electron) 기반 앱들을 보다가, 킬로바이트(KB) 단위에서 노는 C 코드를 보니 체증이 내려가는 기분입니다.
이 개발자가 README에 적어놓은 설치 방법도 아주 '클래식'합니다.
"우분투라면 libsdl2-dev 깔고, make 돌려라."
윈도우 버전? "관심이 모이면 고려해보겠다"는 배짱.
이게 진짜 엔지니어의 자세죠. OS 호환성 맞춘다고 덕지덕지 래퍼(Wrapper) 씌우는 대신, 코어 로직의 퍼포먼스에 집중하겠다는 태도니까요.
물론, 지금 당장 여러분더러 C언어로 돌아가라는 소리는 아닙니다.
하지만 적어도 내가 쓰는 라이브러리 밑단에서 어떤 연산이 일어나는지, 메모리 포인터가 어디를 가리키고 있는지 정도는 알아야 합니다.
pip install로 해결되지 않는 문제는 결국 로우 레벨을 아는 사람만이 해결할 수 있습니다.
서버가 터지고 트래픽이 몰릴 때, 문제를 해결하는 건 화려한 프레임워크가 아니라 기본기 튼튼한 코드 한 줄입니다.
오늘 밤엔 화려한 신기술 문서 대신, 이 프로젝트의 main.c를 한번 열어보시는 건 어떨까요?
진짜 최적화가 무엇인지, 코드로 뼈 맞을 준비 하시고 말입니다.
참, 빌드하다가 링킹 에러 난다고 저한테 DM 보내진 마세요.
그 정도는 man 페이지 보고 스스로 해결해야 엔지니어 아닙니까. 정 안 되면 스택오버플로우 말고 로그부터 찍어보시고요.


