C.W.K.
Stream
Lesson 03 of 05 · published

진화는 상속 + 오버라이드 — 역사상 가장 무서운 refactor

~30 min · evolution, inheritance, selection

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

진화, 기술적으로

대부분 사람들이 진화를 적자생존 으로 배워 — 막연히 다윈주의, 막연히 경쟁적. OO 시각이 더 정확해. 진화는 상속 + 오버라이드, 선택 압력으로 정렬 이야.

실제 작동 방식 —

  1. 상속. 자식 생물이 부모로부터 게놈 (class 정의) 을 상속해. 거의 부모와 동일하게.
  2. 변이 (오버라이드). 복사 중 무작위 변화 — 점 변이, 삽입, 삭제, 중복. 각각이 상속된 코드의 작은 오버라이드. 대부분이 중립이고, 일부가 해롭고, 소수가 유익.
  3. 선택. 생물이 번식할 만큼 살아남거나 못 살아남거나. 오버라이드가 생존/번식을 도왔으면 다음 세대로 운반. 해롭게 했으면 안 운반되고.
  4. 반복. 수백만 세대 동안 유익한 오버라이드가 누적. class 정의가 drift. 결국 후손이 새 종이라 부를 만큼 달라져.

이게 정확히 OO 프로그래밍의 상속 + 오버라이드야 — 단, 오버라이드 생존이 단위 테스트가 아닌 실재로 판정. 선택 압력이 우주에서 가장 가혹한 QA 지.

공유된 base class 가 여전히 거기 있어

긴 base class chain 에서 상속해 — 척추동물, 포유류, 영장류, 호미닌, 호모 사피엔스. 매 조상의 오버라이드가 거의 다 코드 베이스에 남아 있고. 원래 목적을 더 이상 안 하는 base class 의 *흔적* 특질을 가져 —

  • 소름 — 털 있는 조상이 부풀려 보일 때 유용했던 거. 지우지 않은 상속된 오버라이드.
  • 사랑니 — 더 이상 안 먹는 식단에 맞춰진 어금니.
  • 맹장 — 초식 조상에서 상속.
  • 꼬리뼈 — 꼬리 있던 시절의 닻.

이게 *종 class 의 주석 처리된 method* 야. 아직 source 에 있고, 더 이상 호출되지 않아.

왜 어떤 종은 빨리 변하고 어떤 종은 안 변해

선택 압력이 refactor 속도를 결정해. 박테리아는 빨리 변이하고 거대한 인구를 가져 — 빨리 refactor 하지 (그래서 항생제 내성이 몇 달 안에 진화). 고래는 작은 인구로 천천히 번식 — class 정의가 천천히 drift. 패턴이 보편 — 단위 시간당 더 많은 번식, 더 많은 선택 압력, 더 빠른 refactor.

진화가 어딘가로 가는 진보가 아니야. 그저 inherit-mutate-select 의 loop, 수십억 년 동안. 그 loop 에서 나오는 모양이 살아남는 모양이야. 오늘 살아 있는 모든 종, 우리 포함, 첫 세포로 거슬러 올라가는 끊기지 않은 상속 chain 의 작동하는 오버라이드지.

External links

Exercise

자기 몸에서 흔적 특질 하나를 찾아 (추울 때 소름, 꼬리뼈 자리 융기, 사랑니 느낌). 맥락이 오래전에 지나간 조상의 오버라이드를 운반하고 있다는 걸 인식해. diff 역사가 지금 몸 안에 있어.

Progress

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

댓글 0

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

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