본문 바로가기
C.W.K.
Stream
Lesson 03 of 05 · published

진화는 상속과 재정의야 — 역사상 가장 무서운 리팩터링

~30 min · evolution, inheritance, selection

Level 0호기심 입문
0 XP0/43 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

기술적으로 바라본 진화

많은 사람은 진화를 적자생존이라는 말로 배워. 막연히 다윈주의나 경쟁을 떠올리지. 하지만 객체 지향의 관점은 과정을 더 정확히 보여 줘. 진화는 상속과 재정의가 선택 압력에 따라 걸러지는 과정이야.

실제로는 다음과 같이 작동해.

  1. 상속. 자식 생물은 부모에게서 클래스 정의에 해당하는 게놈을 물려받아. 부모와 거의 같은 모습이지.
  2. 변이(재정의). 복사하는 동안 점 변이, 삽입, 삭제, 중복 같은 무작위 변화가 일어나. 각각은 물려받은 코드를 조금씩 재정의해. 대부분은 중립적이고 일부는 해로우며 아주 적은 수만 이로워.
  3. 선택. 어떤 생물은 번식할 만큼 오래 살아남고 어떤 생물은 그러지 못해. 재정의된 특질이 생존과 번식을 도우면 다음 세대로 전달되고, 해롭다면 전달되지 않아.
  4. 반복. 수백만 세대에 걸쳐 이로운 재정의가 쌓이고 클래스 정의가 조금씩 달라져. 마침내 후손은 새로운 종이라고 부를 만큼 조상과 달라져.

객체 지향 프로그래밍의 상속과 재정의가 정확히 같은 모습이야. 다만 재정의된 코드의 생존 여부를 단위 시험이 아니라 현실이 판정해. 선택 압력은 우주에서 가장 가혹한 품질 검사야.

공유하는 기반 클래스는 여전히 남아 있어

우리는 척추동물 → 포유류 → 영장류 → 호미닌 → 호모 사피엔스로 이어지는 긴 기반 클래스의 사슬에서 특질을 물려받았어. 조상들이 남긴 재정의 대부분은 지금도 코드 바탕에 남아 있지. 원래 하던 일을 더는 하지 않는 기반 클래스의 흔적도 몸에 지니고 있어.

  • 소름. 털이 있던 조상이 몸을 더 크게 보이게 할 때 유용했어. 지우지 않은 채 물려받은 재정의야.
  • 사랑니. 이제는 먹지 않는 옛 식단에 맞았던 어금니야.
  • 맹장. 초식을 하던 조상에게서 물려받았어.
  • 꼬리뼈. 꼬리가 있던 시절에 그것을 붙잡아 주던 자리야.

이런 흔적은 종이라는 클래스에서 주석 처리된 메서드와 같아. 원본에는 아직 남아 있지만 더는 호출되지 않는 거지.

어떤 종은 왜 빨리 변하고 어떤 종은 천천히 변할까

선택 압력이 리팩터링의 속도를 정해. 박테리아는 빠르게 변이하고 개체 수도 엄청나게 많아서 빨리 리팩터링돼. 그래서 항생제 내성도 몇 달 안에 진화할 수 있어. 고래는 개체 수가 적고 번식도 느려서 클래스 정의가 천천히 달라지지. 같은 시간 동안 더 많이 번식하고 더 강한 선택 압력을 받을수록 리팩터링도 빨라진다는 모습은 어디에서나 같아.

진화는 정해진 목적지를 향한 진보가 아니야. 수십억 년 동안 상속하고, 변이하고, 선택하는 순환이 이어졌을 뿐이야. 그 순환에서 살아남은 모습이 오늘 남아 있는 모습이지. 인간을 포함한 모든 현생 종은 첫 세포까지 이어지는 끊어지지 않은 상속의 사슬에서 지금도 작동하는 재정의야.

External links

Exercise

추울 때 돋는 소름, 꼬리뼈가 있는 자리, 사랑니처럼 몸에서 흔적 특질 하나를 찾아봐. 쓸모 있던 환경이 오래전에 사라진 조상의 재정의를 여전히 지니고 있다는 사실을 느껴 봐. 변경 이력이 지금 몸 안에 있어.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.