Translate

2018년 7월 21일 토요일

소스 생성기

2011년 3월 29일 화요일

경우의 수대로 자동으로 소스 코드를 생성하는 프로그램은 BNF와 통계 DB를 둠으로써 실행 가능한 파일을 생성하도록 만들 수 있으리라 생각한다.
시스템 보호는 가상화 시스템을 통하여 보호할 수 있으며 컴파일과 프로세스 생성은 시스템 라이브러리로 해결되고 기계 학습 개념을 심어주면 놀라운 프로그램이 만들어질 것으로 생각된다.
많은 과학자들은 인간의 단편적인 기능 위주로 연구를 하였는데 여기서는 아래와 같은 단순 코드에서부터 출발한다.
인간이 직접 스스로를 연구하면서 인간의 지능을 구현하는 것은 매우 비효율적이라 생각된다.
인간의 학습능력은 어떻게 구현하겠는가?
모든 것이 학습이 되어 있는 성인의 지능을 흉내내는 방법보다는 갓난 아이의 기본틀을 만들어서 학습하게 하는 방법이 좋다고 생각한다.
아래의 코드를 수정을 하여 그렇게 하게 만들 수 있으리라 생각한다.
인간의 기본적인 특징과 상호 작용을 파악하여 그 부분을 집중적으로 경우의 수로 풀어놓는다면 가능한 것, 가능하지 않은 것에 대한 통계 자료가 DB에 축적될 것이고 그 통계 자료를 참고하여 목적에 좀 더 가까워질 수 있으리라 생각한다.

이러한 경우를 예를 들 수 있다.
경우의 수대로 자동으로 소스 코드를 생성하는 프로그램을 만들어서 실행시킨다면 언젠가는 인공지능 코드도 나오지 않을까? 언젠가는 지금 사용하는 시스템과 똑같은 운영체제 등이 나오지 않을까? 비스타와 똑같은 소스가 언제가는 나오지 않을까?
그런 결과가 나오기까지는 많은 제약이 따르지만 확률상 가능하다.

require 'gdbm'

letters = (' '..'~').collect(&:chr)
index = 0
R_RANGE = 1..3

# n = letters.length #=> 95
# nΠr = n ** r
# 경우의 수 = 95 ** r
# 1..3 까지의 중복조합 경우의 수 = 95**1 + 95**2 + 95**3 = 866495

dbm = GDBM.open("code.db")

for r in R_RANGE
    # 중복 순열
    letters.repeated_permutation(r).each do |arr|
        code = arr.join
        begin
            eval code
            # msg = `ruby -ce #{code}`
            # raise if msg != "Syntax OK\n"
        rescue Exception => e
            #STDERR.puts "#{code}: #{e.message}"
        else
            #puts "SUCCESS: " + code
            dbm[index.to_s] = code
            index += 1
        end
    end
end

dbm.close


위의 코드로부터 악성코드나 바이러스나 시스템을 파괴하는 소스도 생성될 수 있다. 이를테면 `rm -rf /` 같은 코드가 실행될 수 있다는 말이다. 위의 소스 생성기를 가동하려면 문제점을 건너뛸 수 있는 안전성이 확보되어야 한다.
그리고 하드웨어가 많이 발전하였지만 의미있는 결과물이 나오기까지 엄청난 시간이 소요될 수 있다.
병렬 처리를 하면 시간이 단축될 것이고 시스템을 파괴하는 부분에 있어서는 가상 환경을 이용하면 될 것이다.

위와 같은 확률, 통계에 기반한 방법으로 스스로 복제, 생성, 진화하는 프로그램이 나온다면 세계의 네트워크를 장악하여 중앙 컴퓨터에서 지구상의 일들을 모두 통제하는 시스템이 만들어질지도 모른다.
경우의 수로 소스 코드를 만들어서 실행하는 것이므로 인간이 생각할 수 있는 모든 경우가 만들어질 것이다. 그 시스템에 기계를 제작할 수 있는 로봇을 제어할 수 시스템을 연결해 준다면 진화하는 로봇이 만들어질지도...

수억년 동안 위의 소스 생성기가 실행된다면 인공지능은 마침내 물리 법칙을 발견하고 생물학 법칙들을 발견하여 생물을 만들어낼지도 모른다.
이러한 관점에서 생명에 대해 생각해보면 지구가 수십억년을 지나오면서 생명체가 스스로 만들어지고 진화했다고 하는 자연 발생설을 무시할 수 없다.

알 수 없는 미지의 세계 - 많은 과학자들은 연구를 하고 있다. 경우의 수대로 수십년, 수십억년을 시행 착오를 거치고 연구 결과 또한 수십년~수십억년 동안 기록된다면 상상 가능한 모든 일이 언젠가는 이루어지지 않을까.
인간의 문명은 어쩌면 확률과 통계에 따라서 발전하고 있을지도 모른다.
많은 수의 인간이 시도하고(확률) 좋은 결과(통계)에 대하여 집중적으로 시도하면 지구가 멸망하지 않는 한 모든 것이 이루어질 것이다.

댓글 없음:

댓글 쓰기

응용 어플 끝글자 버그 잡는 거 진짜 개쉽습니다

그 동안 제가 끝글자 버그를 잡지 않고 방치한 이유 우선 책임, 의무가 없습니다. 제가 해당 어플 개발자도 아닐 뿐더러 오픈소스가 원래가 유지보수 의무, 보증 책임이 없습니다 . 이렇게 개떡 같은 게 오픈소스입니다. 전 과거 libhwp 하냐고...