Evolved algorithm
진화 알고리즘에 의해 얻어진 알고리즘.
인간이 만든 프로그램은 코드와 데이터가 명확히 분리되어 있고 머리속으로 논리의 흐름을 파악할 수 있도록 경계가 잘 정의된 모듈의 계층적 조합으로 설계된다.
하지만 이는 기계를 위해 필요한 제약이기보다는 인간을 위해 필요한 제약에 더 가깝다. 인간의 이해를 고려하지 않는다면, 코드가 데이터이기도 하고, 데이터가 코드이기도 하며, 계층이 명확하게 있다가도 어느 부분에서는 계층들이 서로 얽혀서 어떤 것이 상위 계층이고 어떤 것이 하위 계층인지, 혹은 이 둘이 한 계층인지 두 개의 계층인지를 구별할 수 조차 없기도 하며, 명확한 모듈 경계가 있다가도 어떤 모듈들은 서로 복잡하게 얽혀서 경계가 애매해지기도 하는 그런 프로그램을 만드는 것도 가능하다. 인간이 그 절차를 따라할 수는 있으나 대체 그게 뭘 수행하는 과정인지 이해할 수는 없는 그런 프로그램이 존재할 수 있다. 이런 프로그램은 아마 전통적 계산주의적 접근보다는 연결주의적 접근에 더 가까운(혹은 둘이 섞여 있는) 형태일거다.
두 종류의 프로그램 모두 계산가능성 이론 관련에서는 차이가 없겠으나, 알고리즘의 발견 가능성이라는 측면에서는 후자의 방식이 이로울 수도 있다.
더글러스 호프스태터와 대니얼 데닛도 The Mind’s에서 이러한 종류의 의식을 가정한다:
이론적으로는 두 수준이 서로 의사소통하게 만드는 것이 가능하다. 그러나 이것은 전통적으로 바람직하지 못한 방식으로 간주되었다. … 그럼에도 불구하고 이 금단의 열매, 즉 두 실행 수준의 경계를 흐리는 것은 바로 사람의 “시스템”이 외국어를 배울 때 발생한다. … 이 과정을 컴퓨터 시스템에서 설명하면, 더 높은 수준의 프로그램은 그 프로그램을 수행하는 “데몬”의 내부 변화를 일으킬 수 있는 방법을 가져야 한다. 이것은 한 수준을 다른 수준 위에 엄격하게 수직적이고 전면적인 방식으로 실행시키는 현재 컴퓨터 과학의 양식과는 전혀 다른 방식이다. 고차 수준이 그보다 낮은 수준 즉 그 기초로 내려가거나 그것에 영향을 미칠 수 있는 능력을 갖는다는 것은 일종의 마술적 트릭이며, 우리는 이런 트릭이 의식의 본질에 매우 가깝다고 생각한다. —2권. p689-690
진화 알고리즘은 이런 ‘비상식적인’ 코드를 얻어내는 알고리즘이다. —AK, 2005