거꾸로 보아야 맞는 이야기
사람들은 "DNA는 코드다"라는 말을 들으면 프로그래머가 자기 일을 더 깊어 보이게 하려고 생물학의 말을 빌린 비유라고 생각하곤 해. 하지만 사실은 그 반대에 가까워. 객체 지향 프로그래밍은 생물학이 38억 년 동안 써 온 구조적 규칙을 인간이 뒤늦게 발견한 작은 사례야. 클래스, 인스턴스, 상속, 다형성, 캡슐화라는 객체 지향 개념에는 1960~1970년대에 컴퓨터 과학자들이 이름을 붙였지만, 그 모습 자체는 인간보다 훨씬 먼저 존재했어.
따라서 생물학이 코드와 닮았다기보다 생물학과 코드가 같은 구조적 규칙을 사용한다고 보는 편이 정확해. 교체할 수 있는 부품으로 복잡한 체계를 만들 때 잘 작동하는 방식이기 때문이야. 우주는 분자 안에서 먼저 이 방법을 찾아냈고, 인간은 소프트웨어에서 다시 발견했어.
객체 지향의 말로 생물학 읽기
- 클래스. 종이 클래스에 해당해. 고양이(Felis catus)라는 클래스에는 다리 네 개, 발톱, 수염, 특정한 DNA와 본능이라는 구조가 정의돼 있어.
- 인스턴스. 개별 고양이가 인스턴스야. 옆집의 얼룩고양이도, 집에서 사는 고양이도 고양이 클래스의 인스턴스지. 둘은 같은 클래스 구조를 공유하지만 한 마리는 배고프고 다른 한 마리는 졸린 것처럼 각자 고유한 상태를 가져.
- 상속. 고양이는 고양이과(Felidae)에서, 고양이과는 식육목(Carnivora)에서, 식육목은 포유강(Mammalia)에서 특질을 물려받아. 단계가 올라갈 때마다 기존 특질을 유지하면서 새로운 특질을 더하지. 포유류는 모든 척추동물의 특질에 젖샘을 더하고, 식육목은 육식에 맞는 이빨을, 고양이는 집어넣을 수 있는 발톱을 더해.
- 캡슐화. 세포막은 캡슐화의 예야. 세포의 내부 상태는 바깥에 드러나지 않고 표면 수용체라는 공개 인터페이스를 통해서만 상호작용해. 장기, 생물, 생태계에서도 비슷한 모습을 볼 수 있어.
- 다형성. 서로 다른 종이 같은 인터페이스로 같은 문제를 푸는 방식이야. 새, 박쥐, 곤충은 모두 날지만 깃털 날개, 가죽 날개, 키틴 날개처럼 구현은 달라. 네 번째 레슨에서 더 자세히 볼 거야.
단순한 말장난이 아닌 이유
생물학을 객체 지향의 눈으로 보기 시작하면 여러 가지가 선명해져.
- 분류학은 왜 계층 구조일까? 상속이 계층을 만들기 때문이야. 계 → 문 → 강 → 목 → 과 → 속 → 종으로 이어지는 린네의 생명나무는 DNA의 상속 규칙에서 나온 클래스 계층이야.
- 세포, 장기, 생물, 생태계가 왜 비슷한 결합과 응집의 모습을 보일까? 단계마다 캡슐화된 객체와 공개 인터페이스라는 같은 기본 구조를 사용하기 때문이야.
- 특히 현대 신경망 같은 AI 구조는 왜 생물학을 닮아 보일까? 캡슐화된 층, 메시지 전달, 학습된 인터페이스라는 같은 기본 요소를 쓰기 때문이야. 객체 지향의 바탕이 같아.
이 트랙이 요구하는 것은 하나야. 생물학을 객체 지향의 눈으로 바라봐. 그렇게 보면 진화는 막연한 구호가 아니라 정밀한 구조 변화의 과정이 돼. 다음 네 레슨에서 그 부분들을 하나씩 날카롭게 살펴볼 거야.