진화론은 지금도 증명하는 과정에 있다

위에 어느분이 말씀하셨듯 진화론은 가설로 시작하여 지금도 증명하는 과정에 있습니다. 아직 완벽하게 검증된 이론은 아닙니다.
교배에 대해서도 말씀주신 분이 계신데 제가 '과학을 보다'라는 유투브를 자주 보는데 거기에 출연하신 진화생명관련 박사님이 하신 말씀을 옮겨적은 겁니다. 이러한 부분을 검증하기 위한 논문과 연구들이 있는 것도 사실이지만 완벽하지는 않습니다.

어느 블로그에서 본 글입니다. 과연 진화론은 아직 증명이 안되었기에 지금도 증명하는 과정에 있는 것일까요?

'과학을 보다'는 저도 자주 보는 채널인데 거기서 박사님이 한 말이라면 진화론이 아직 증명 안된 것이 맞는것 같기도 하고 말입니다.

결론부터 말하자면 그건 박사님의 말을 오해한 것이라 생각합니다.

과학자들은 절대로 완벽完璧이란 말을 하지 않습니다. 이를테면 '진화론은 완벽하게 증명되었다' 같은 말은 절대 하지 않습니다. 과학에 있는 반증가능성Falsifiability 때문이죠. 어떤 이론이든 언젠가 반증이 나타날 가능성이 있다는 것입니다. 아무리 '완벽하게 검증되었다'고 하는 이론 역시 내일 당장이라도 반증이 나타나 주류에서 밀려날 가능성이 있는 것이 과학이론입니다. 진화론 뿐 아니라 어떤 다른 이론들도 다르지 않아요.

그 때문에 모든 과학이론들은 끝없는 검증을 거쳐야 합니다. 오늘까지 모든 검증을 다 통과했다고 해도, 내일 발견될 새로운 현상에 대해서도 또다시 검증을 거쳐야 하는 것이 과학이론이예요.

가장 대표적인 것이 뉴턴역학 - 뉴턴의 운동이론이라고 할 수 있습니다. 17세기 뉴턴에 의해 정립된 이후 20세기 초까지 뉴턴역학은 모든 검증을 통과해 왔습니다. 하지만 20세기 초에 관측기술의 발달로 발견된, 수십분의 1도밖에 안되는 수성 궤도의 뒤틀림은 뉴턴역학이 통과하지 못했죠. 그 때문에 뉴턴역학 대신 상대성이론이 주류가 된 것입니다.

진화론이 지금도 증명하는 과정에 있다는 것은 이러한 의미입니다. 증명이 모자라다는 것이 아니라 증명은 끊임없이 계속된다는 뜻입니다.

그리고 만약 진화론의 증명이 모자라다면 과학자들이 가만히 있을 리가 없죠. 그 모자란 부분에 달려들어 물어뜯으며 자기 이름을 역사에 남기려 할 것입니다.



한마디 더 추가하자면, 상대성이론의 발견으로 인해 뉴턴역학은 완전히 퇴출되어 버렸을까요?

그건 아닙니다. 상대성이론을 저중력, 저속도에서 계산해본다면 그 결과는 뉴턴역학으로 계산한 결과와 거의 동일하게 나옵니다. 즉 일반적인 상황에서는 뉴턴역학은 여전히 쓸만한 이론입니다. 블랙홀 주변 같은 고중력상태나 아광속으로 움직이는 경우처럼 특별한 상황에서는 물론 상대성이론을 써야 하겠지만 말입니다. 그렇지 않았다면 뉴턴역학이 300년 동안이나 통용될 수는 없었겠죠.

마찬가지로, 만약 진화론이 틀린 것으로 나타났더라도, 그래서 새로운 이론으로 대치된다고 해도 진화론 전체가 버려질 리는 없습니다. 진화론은 지금까지 생물학에서 충분히 역할을 하고 있거든요. 아마 뉴턴역학처럼 일반적인 상황에서 통용되는 이론이며, 특별한 상황에서만 새로운 이론을 사용하게 될 것입니다.

고대 그리스의 진화론

지식인에 흥미있는 질문이 올라왔더군요. 개와 늑대의 관계를 고대부터 알고 있었다면, 고대에는 진화론을 착안한 사람이 없었을까 하는 질문이었죠.

재미있는 주제같아서 한번 검색해 봤습니다. 실제로 진화론 자체는 아니더라도 비슷한 생각을 한 사람들이 있긴 하더군요. 그것도 기원전 고대 그리스에서 말입니다.

고대 그리스의 진화론자(?)는 엠페도클래스(Ἐμπεδοκλῆς, BC 493~430)라고 하는 철학자였습니다.

그는 4원소설 - 물, 불, 흙, 공기의 배합비율에 의해 모든 것이 만들어진다 - 을 주창했습니다. 이들의 사랑(인력)과 미움(척력)에 의해 모이고 흩어지면서 모든 것을 만들 수 있다는 사상이었죠.

생물들도 마찬가지입니다. 이러한 4원소에 의해 무작위적으로 모이고 흩어지면서 여러가지 생명체들도 생겨나고 변화한다고 생각했습니다.

여기서 엠페도클래스가 생각한 것은 이런 것이었죠.

만약 무작위적으로 모여서 생물이 생긴다면,
눈이 없는 생물이나 심장이 몸 밖으로 드러나있는 생물 등은 왜 없을까

그리고 결론은 이렇습니다.

그런 불완전한 생물들은 환경에 적응 못하고 사라지고,
정상적인 생물들만이 환경에 적응해 살아남는다.

생물이 어떻게 변화하는지에 대한 사고는 부족하지만, 환경에 적응해서 살아남는다는 자연선택의 개념을 떠올린 철학자였습니다.


비슷한 또하나의 철학자는 아낙시만드로스(Ἀναξίμανδρος , BC 610~546)였습니다.

그는 생물학 뿐 아니라 천문학(땅은우주에 떠있는 돌과 같다), 기상학(태양에 의해 땅에서 증발한 물이 비가 되어 내린다) 같은 여러 분야에 있어서 현대과학 못지 않은 업적을 이루었죠.

그는 모든 생명체의 근원으로 '아페론(Apeiron, ἄπειρον)'을 말했습니다. 이 아페론에서 간단한 생명체가 탄생했으며 인간은 물고기 또는 그와 비슷한 생물에서 진화했다는 주장을 했다고 하더군요.


이와 같이 진화는 고대인들조차 짐작하고 있었던 개념입니다. 그동안 창조과학을 주장하는 사람들에게 [고대인 수준]이라고 놀리곤 했는데 그것도 못하겠군요.


----------------------------------


성경 근본주의자들이 주장하는 '성경이 과학적이 이유'에 이런 이야기가 있었죠. 욥기를 인용하며 지구가 우주에 떠 있다는 사실을 기록했다던가

  • 욥기 26:7: 그는 북쪽을 허공에 펼치시며 땅을 아무것도 없는 곳에 매달으시며

물의 순환을 정확하게 묘사했다던가

  • 욥기 36:27: 그가 물을 가늘게 이끌어 올리신즉 그것이 안개 되어 비를 이루고
  • 욥기 36:28: 그것이 공중에서 내려 사람 위에 쏟아지느니라

하는 주장을 하고 있습니다.

그런데 위에서 말했던 것처럼 저런 지식은 고대 그리스에 이미 있었죠. 그런 지식이 유대로 흘러들어가 성경에 포함된 것이 아닐까 하는 의혹이 생기네요.

그렇게 보면 그리스 철학자들의 진화론(많이 부족하지만) 역시 같이 흘러가 성경 어느 구절에 포함되어 있을 수도 있겠습니다. 그리고 훗날 더이상 진화론을 부정했다가는 나락으로 가게 될 것이 확실해졌을 때, 그런 구절을 찾아서 이런 소리를 할 가능성도 없지 않을것 같네요.

보다시피 성경에는 이미 진화론에 대한 이야기가 적혀 있다.
그러므로 성경은 무오하며 과학적으로도 진실이다!!!

마치 평평한 지구와 천동설을 주장하다가 지금와서 성경에서 둥근지구와 지동설 설명을 찾아낸 것처럼 말입니다.

----------------------------

참고

그리스 자연철학의 진화론적 측면들

엠페도클래스 이론이 옳았다

AI시대 주목해야 할 엠페도클래스 '질문의 힘'

아낙시만드로스가 과학으로 가는 문을 열었다

고대철학자 아낙시만드로스가 진화론자였다고?

Anaximander and the Origins of Scientific Thought





GA - 진화하는 프로그램 언어

1. 개요

DNA는 단 4개의 코드가 연속된 구조를 가지고 있습니다. t-RNA는 이러한 DNA를 3마디씩 해석해서 여러가지 일을 하고 있습니다. 즉 DNA는 4개의 코드 3마디 - 64개의 명령어를 가진(물론 상당한 명령어가 중복) 프로그램 언어라고 할 수 있죠.

이러한 DNA를 본떠서 유전자 알고리즘용 프로그램 언어를 만들어 봤습니다.


2. 명령어

최초, 이 언어는 임의로 만들어진 2048개 길이의 바이트 배열입니다. 이런 식으로 말이죠.

0x0E 0x6D 0x8A 0xF3 0x3E 0xAD 0xB7 0xCD 0x08 0xBE 0x37 0x78 0x27 0x8A 0x23 ...

각 코드는 몇개의 명령어에 대응합니다. 이때 명령어 코드는 중복될 수 있으며(ex : 0x0F, 0x2D, 0x70 등이 같은 명령어) 이 명령어는 프로그램 실행시 임의로 배정됩니다.

각 명령어에는 이런 것들이 있습니다.


Jump Mask Arg
Jump 명령어를 만나면 이 명령어로부터 앞뒤로, Mask와 연산한 결과가 Arg와 같은 바이트들을 탐색합니다. 가장 가까운 바이트를 찾아서 그곳으로 제어를 옮기게 됩니다.

MemorySet MemPos Value
MemoryInc MemPos Value
MemoryDec MemPos Value
이 시스템에는 32개의 내부변수를 가지고 있습니다. 이 명령어는 MemPos로부터 메모리 위치를 계산한 후, Value값을 넣거나 그만큼 증가 또는 감소시킵니다.


IfGreater MemPos Value Mask Arg
IfLess MemPos Value Mask Arg
조건에 따라 분기를 하는 명령어입니다. MemPos의 메모리값과 Value를 비교합니다. 조건에 맞으면 뒤의 Mask와 Arg를 Jump명령어로 간주하여 실행하고, 맞지 않으면 무시하는 명령어입니다.

3. 메모리 & 입출력

위에서 언급했듯 이 시스템에는 32개의 int형 메모리를 가지고 있습니다. 프로그램은 Memory관련 명령어로 이 메모리를 갱신할 수도 있고 If관련 명령어로 이 메모리를 꺼내 사용할 수 있습니다.

외부 상태 - 자동차 앞 3부분의 장애물 여부 - 는 항상 메모리 앞쪽의 세개에 적용됩니다.

한편 뒤쪽의 세개 메모리의 값을 가지고 자동차의 움직임을 결정합니다.


4. 재생산 & 돌연변이

이런 몇개 안되는 명령어를 가지고 예전에 했었던 꼬마자동차에 실어 실행했습니다. 그 결과를 가지고 재생산을 해야겠죠. 원래 DNA에서 착안한 것이라 재생산에서도 DNA의 재생산을 참고했습니다.

복제야 그냥 복사만 하면 되고 교차 역시 코드를 둘로 끊어 붙이면 됩니다.

A A A A A A A A A A A A A A A A
B B B B B B B B B B B B B B B B

A A A A A A A A B B B B B B B B
B B B B B B B B A A A A A A A A


돌연변이는 다음과 같습니다.

1. 일반적인 돌연변이 : 코드의 각 비트(바이트 아님)마다 일정확률로 반전

2. 결실 : 코드의 일정 영역을 제거

3. 중복 : 코드의 일정 영역을 다시한번 복사

4. 역위 : 코드의 일정영역 두군데가 위치가 바뀜

5 결과

이와 같은 프로그램을 돌려서 자동차가 움직입니다. 만약 장애물에 걸린다면(장애물로 들어가려 한다면) 그 자리에서 움직이지 못합니다.

가장 많이 진행한 자동차를 중심으로 3000세대 번식시킨 결과들의 일부입니다.





여기서 볼 수 있듯 정체상태에서도 내부에서 꾸준히 유전자의 재조합이 일어나고 있습니다. 그러다가 장애물을 돌파할 수 있는 유전자가 발견되면 그것에 의해 적응도가 튀어오르는 계단식 진화 - 단속평형적 진화 - 또는 다음 단계까지 서서히 오르는 점진적 진화가 일어나고 있는 것을 볼 수 있습니다. 시간이 더 있었다면 더 먼 거리를 이동할 수 있는 자동차가 나왔을지도 모르겠네요.