>질문 있는데요, 실제로도 그럴거냐 그런 게 아니고, 컴퓨터로 그렇게
>프로그래밍 한다는 '설계'의 역할과 컴퓨터 상에서 구현되었던 '진화적 행태'는
>독립적인지요? 그렇다면 그것을 결정하는 기준은 어떻게 되나요?
어떤 것을 알고 싶어하는 지 잘 전달이 안되는 군요.
1.대략 진화메카니즘을 구현하는 프로그래밍, 즉 '설계'와
2.컴퓨터 안에서 진화되어 나타난 결과물들, 즉 '진화적 행태'
이 두 사이의 연관을 물으시는 건가요?
만약 그렇다면 다음을 읽으시고 아니라면 더 정확한 질문을 다시 해주시길 바랍니다.
1번은 사람이 만드는 것이고 2번은 컴퓨터가 만들어 가는 것입니다.
상식적인 수준에서는 컴퓨터 프로그램은 사람이 만들어 나갑니다.
하지만 기계에 의한 프로그래밍이라는 상상을 초월하는 새로운 개념이 몇년전
학계에 등장하여 널리 파문을 일으키고 있습니다. 그 기본 개념은 자연게에서
받아 온 것으로 바로 진화의 메카니즘을 그대로 따르는 것입니다.
프로그램이 일종의 DNA역할을 하는 것이고 이들을 번식, 진화시켜서 설계자가
설정해 놓은 환경에 맞는 프로그램을 만들어내는 것입니다.
즉, 자연계와 같은 환경을 만들어 놓고 그 안에 이 환경에 적응해서
살아나가는 생물체를 디자인합니다. 이 생물체가 컴퓨터안에서는 프로그램 코드에
해당합니다. 그럼 이 생물체는 진화의 메카니즘에 의해 자신의 프로그램 코드를
스스로 바꿔나갑니다. 그리고 환경에 맞지 못하는 개체들은 죽여버리죠
빠른 컴퓨터의 속도 덕분에 단순한 인공생명의 경우 자연계에서는 수십만년이
걸릴 진화 과정을 불과 몇일 사이에 이뤄냅니다. 마지막 까지 남은 후손들은
환경에 잘 적은 하는 것들만 남아 있게 되는 겁니다. 물론 전체가 다
멸종되는 경우도 있죠.
구체적인 예로 앞에서 물고기 진화, 토끼와 사자의 생존습성등을 보였습니다.
실제로 이러한 프로그램에 사용되는 코드는 "Lisp"이라는 프로그램역사
에서는 매우 초기단게에 만들어 졌던 Functional 언어 입니다.
인공생명(Artificial Life)분야는 매우 넓어서 이 외에도 다른 많은 개념들을
다루고 있습니다. 제가 설명드린 것은 그중 '진화'와 관련된 일 부분을
설명드린 것입니다. 이 분야는 "Automatic programming", "Genetic Coding"
등으로 불려지고 있습니다.