IPL (Information Processing Language)

IPL은 고급 언어가 아니다. IPL이 담고 있는 많은 고급 개념에도 불구하고 언어 자체는 어셈블리어에 가까웠다. 사실상 IPL은 로직 시어리스트를 구현하기 위해 만든 언어였다.

앨런과 쇼는 로직 시어리스트의 알고리듬을 구현하기 위해 몇 가지 단계로 프로그램을 구성했다.​13​ 아래의 설명을 이해하려면 프로그램program, 루틴routine, 세그먼트segment를 구별할 필요가 있다.

가장 먼저 Ex라는 루틴이 있다. Ex는 여러 개의 세그먼트로 구성된다. 먼저 Ex(R)이라는 세그먼트는 증명해야 할 수식을 읽어오는 일을 한다. 그런 후에 Ex(MSb), Ex(MDt), Ex(MCh)라는 세 개의 세그먼트들이 수행된다. 각각 대입, 제거, 연쇄 작업을 호출한다. 만약 수식이 증명되었다면 이 수식을 theorem memory라는 메모리 공간에 저장하여 다른 수식을 증명할 때 사용될 수 있도록 한다.

Ex 루틴 아래로는 대입, 제거, 연쇄 작업을 하는 루틴(method라고 불림)들이 있는데, 리스트 관리 등과 같이 공통으로 사용되는 기본적인 작업들은 elementary process라는 일종의 라이브러리 코드로 구현된다. 그리고 최종적으로 elementary process는 instruction으로 구성된다. 이 instruction은 로직 시어리스트에서 정보를 다루는 가장 기본적인 단위인데, 메모리에 있는 정보를 접근하는 동작 같은 것들이 있다.

1955년은 아직 고급 언어가 존재하지 않던 시절이었다. 따라서 앨런이 구현해 놓은 알고리듬의 가장 바닥에 위치한 instruction들이 모여 결국 하나의 언어가 되었다. 그것이 IPL이다.

앞의 동작 알고리듬에서 설명했듯이 로직 시어리스트는 대입, 제거, 연쇄 등을 시도하면서 수식을 변형하거나 아니면 새로운 수식으로 넘어가도록 되어 있다. 이 과정에서 메모리에 새롭게 공간이 할당되었다가 사라지는 일이 발생하게 되므로 동적으로 데이터를 메모리에 만들 수 있어야 했다. 그래서 리스트list 구조가 도입되었다.

그리고 ‘맞춰보기matching‘ 작업을 할 때는 재귀적 호출recursion이 발생할 수 있었으며 이를 처리하기 위해서 스택stack과 같은 메모리 관리 방식이 도입되었다.​‡‡​

하지만 본질적으로 IPL은 고급언어가 아니다. 로직 시어리스트를 구현한 클리프 쇼는 IPL 명령어를 조니악JONNIAC 컴퓨터의 기계어에 대응시키는 방식으로 구현했다. 따라서 리스트 구조는 지원했으나 가비지 콜렉터garbage collector는 없었으며, 재귀적 호출을 지원했으나 스택이 자동으로 관리되지는 않았다.

IPL은 버전 2가 조니악 컴퓨터에 구현되었고 후에 버전 5까지 만들어졌으나 리스프 언어가 널리 쓰이기 시작하면서 사라졌다.

GPS (General Problem Solver)

GPS는 로직 시어리스트의 후속으로 개발된 시스템이다. 로직 시어리스트는 기호 논리학을 염두에 두고 만들었지만 GPS는 특정 응용에 종속되지 않는 것을 목표로 했다. 그래서 이름만 보면 범용으로 사용되는 인공지능 프로그램일 것 같으나 실상은 역시나 제한된 상황에만 사용할 수 있었다. GPS도 결국은 문제 공간problem space내에서 목표를 향해 검색해 나가는 형태이다.

수단-목표 분석

GPS가 로직 시어리스트와 가장 차별화되는 점이 있다면 ‘수단-목표 분석Mean-ends analysis‘이라는 방법론을 도입한 것이다. 로직 시어리스트에서는 역추론을 해나가는 과정(즉, 목표를 향해 검색 공간의 경로를 찾아가는 과정)에서 ‘유사한 것 찾기’라는 휴리스틱 방법을 사용했다. 이는 기호 논리학에 특화된 휴리스틱 방법이었으므로 범용을 지향하려면 다른 방법이 필요했다.

‘수단-목표 분석’에서는, 목표로 하는 최종 상태와 현재 상태의 차이를 따져보고 이를 줄일 수 있는 방법을 현재 상태에 적용한다. 그렇게 해서 새로운 상태로 전이하게 되면 다시 최종 상태와의 차이를 따져보고 이를 줄일 수 있는 방법을 적용한다. 이렇게 계속 진행하다 보면 결국 최종 상태에 도달할 수 있게 된다.

1 2 3 4 5