내 머릿속에서 BIOS가 올라온 순간부터 뭔가 어긋난 느낌이었다.
버그를 잡으려 브레이크포인트를 찍고 스텝-인 하듯 나를 잠깐 멈춰 세웠다.
멈춘 공간엔 세그멘테이션 폴트가 있었다고 한다.
“저는 튜링처럼 완전한 컴퓨터 과학자가 될 거예요.”
그 선언을 메모리에 적재하던 기억, 그 사이에 필요했던 변수들.
가난해도, 대기업 취업 못 해도 괜찮다.
누가 내가 던진 사과를 집어 터뜨려도 상관없다.
죽기 전에 세상에 도움이 되는 자료와 구조를 남기고 싶었다.
하지만 내 메모리 공간은 한정돼 있었고,
fork된 나는 부모 프로세스의 페이지를 복사했지만 각자의 경계를 침범했다.
트리는 갈라지고, 가지는 댕글댕글 매달렸다.
죽어버린 프로세스들은 사이드 이펙트처럼 연쇄 에러를 만들고,
그 신호는 패킷화되어 라우팅 프로토콜로 흘러들어 갔다.
나는 이웃한 사람들과 어울리며 ‘논리적 라우터’를 건너뛰듯 산만해졌다.
전체 토폴로지는 보이지 않고, 다음 홉만 쫓다 보니 루프에 갇혀 에너지를 태웠다.
패리티 체크가 빠진 헤더, 꼬리가 잘린 페이로드 같은 반쪽짜리 얼굴.
태어나서 고등학교를 자퇴할 때까지,
나는 테스트가 잘 안 되는 함수였고,
과한 결합도로 가독성을 해치는 코드였다.
처음부터 테스트를 붙였더라면,
처음부터 구조를 분리했더라면.
친구는 말했다.
“정보은닉을 어기면 네 유저 모드가 커널 모드까지 뒤흔들어.
객체끼리 다 공개하면 읽기 쉬워질 것 같지? 오히려 반대야.”
그 말에 공감하면서도...
이미 유지보수가 힘들게 설계된 내 머릿속에 새 모듈을 꽂을 포트가 보이지 않았다.
문서화하려 하면 커플링이 발목을 잡는다.
주석 하나를 달아도 여기저기를 왕복해야 했다.
입력 디바이스처럼 쏟아지는 정보들의 우선순위를 고민한다.
“시스템 콜로 커널에만 접근해. 전부를 드러내진 마.”라는 조언을 안다.
그런데 내 유저 모드는 자꾸 내 메모리를 침범하고,
결국 블루 스크린과 함께 뻗는다.
0x00000001A: MEMORY_MANAGEMENT.
재부팅 버튼을 기다리며, 나는 거인들의 이름을 읊조린다.
리처드 스톨먼, 앨런 튜링, 다익스트라, 켄 톰슨, 데니스 리치
폰 노이만, 도널드 커누스, 클로드 섀넌,
스트롭스트룹, 제임스 고슬링, 귀도 반 로섬, 리누스 토발즈…
그 상(像)들은 내 은닉 노드를 헤매다 ‘알 수 없음’을 출력한다.
다른 노드에는 러스트, 코틀린, 타입스크립트, 고, 스위프트, C#, 클로저, 스칼라…
학교 밖 언어들의 간판이 쓰러져 있다.
첫 번째 부모 프로세스님,
콜드 부트를 하면 저는 살아날 수 있을까요?
지나가며 SIGKILL로 날려버린 수많은 프로세스들에게 미안해하며,
이 불안정한 프로세스 트리를 취약점 많은 Intel CPU에 매달아 둔다.
그리고 다시, 작은 단위의 테스트 코드부터 적어 내려간다—
경계를 세우고, 결합을 줄이며, 오늘의 한 줄을 통과시키기 위해.
댓글 0