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

다형성 — 비행이 최소 네 번 발명됨

~30 min · polymorphism, convergent-evolution, interface

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

같은 문제, 네 다른 해법

비행이 지구에서 최소 네 번 따로 진화했어 — 곤충, 익룡 (멸종한 비행 파충류), 새, 박쥐. 각 lineage 가 독립적으로 풀었고 — 어느 쪽도 다른 쪽에서 비행을 상속하지 않았어. 새가 익룡에서 날개를 받은 게 아니고, 박쥐가 새에서 받은 게 아니지.

각각이 다른 구현으로 끝났어, 모두 같은 인터페이스 (fly()) 아래에서 —

  • 곤충. 키틴으로 만든 날개 (외골격이랑 같은 재료). 안에 뼈가 없어. 흉부를 비틀어 날개를 움직이는 간접 근육이 동력.
  • 익룡. 엄청 길어진 네 번째 손가락 위에 늘어난 피부 막. 속 빈 뼈, 거대한 날개.
  • 새. 변형된 팔에 깃털 부착. 팔뼈는 짧고, 깃털이 양력 대부분을 만들고.
  • 박쥐. 길어진 손가락들 사이 (익룡과 다른 손가락) 늘어난 피부 막. 현대 lineage 야 — 포유류, 파충류가 아니라.

이게 다형성이야 — 같은 인터페이스, 다른 구현. 생물학자가 *수렴진화* 라 불러. 다른 lineage, 다른 상속 chain, 같은 문제 모양, 비슷할 만큼의 해법, 인터페이스가 명확하지.

수렴진화는 보기 시작하면 어디나 있어

  • 눈. 척추동물 눈 (뒤-앞 망막), 문어 눈 (앞-뒤 망막), 곤충 겹눈, 갯가재 눈. see() 인터페이스의 다른 구현, 독립적 진화.
  • 반향정위. 박쥐와 돌고래 둘 다 음파로 항해. 포유류지만 6 천만 년+ 독립 진화로 갈라짐. 같은 인터페이스, 두 다른 코드 베이스.
  • 유선형 몸. 참치 (어류), 돌고래 (포유류), 어룡 (멸종 파충류). 같은 몸 모양 (유체역학 인터페이스), 세 다른 조상.
  • 진사회성. 벌, 개미, 흰개미, 벌거숭이두더지쥐. 다른 lineage 가 독립적으로 같은 군체 아키텍처를 발견했어.

OO 시각에 무엇을 의미해

다형성이 무관한 lineage 에서 계속 등장한다면, 문제 모양 이 실재고 인터페이스 가 lineage 가 아닌 문제로 결정되는 거야. 비행은 모양을 가져 — 양력 생성, 방향 제어, 항력 관리 — 그걸 푸는 어떤 lineage 든 어떤 코드를 상속했든 거의 같은 인터페이스 구현으로 끝나.

이게 프로그래머가 결국 하는 같은 관찰이야 — 어떤 인터페이스는 자의적이지 않아. 문제로 모양이 잡혀. 정렬에 옳은 인터페이스가 어떤 언어에든 거의 같고, 비행에 옳은 인터페이스가 곤충/새/박쥐에 거의 같지. 자연과 코드가 좋은 인터페이스 모양에 동의해 — 구현자가 아닌 문제로 모양이 잡혀서.

External links

Exercise

자연의 문제 하나를 골라 — 빠르게 헤엄, 어둠 속 보기, 거리 통신, 포식자 방어. 그걸 푸는 무관한 종 최소 둘을 찾아. 구현은 다르지만 인터페이스가 수렴하는 거 알아채. 문제 모양이 디자인 일을 하고 있어.

Progress

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

댓글 0

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

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