맨위로가기

정보 처리 언어

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

정보 처리 언어(IPL)는 1950년대 중반 앨런 뉴얼, 클리프 쇼, 허버트 사이먼에 의해 개발된 문제 해결을 위한 컴퓨터 프로그래밍 언어이다. IPL은 초기 인공 지능 프로그램 구현에 사용되었으며, 여러 버전이 개발되었으나 더 간결한 구문과 자동 가비지 컬렉션 기능을 갖춘 Lisp의 등장으로 대체되었다. IPL은 기호, 셀, 원시 프로세스로 구성되며, 리스트 조작을 위한 어셈블리 언어로서 리스트, 속성 리스트, 고차 함수, 심볼에 의한 계산, 가상 머신과 같은 프로그래밍 언어의 기능을 처음으로 도입했다. 이러한 IPL의 기능들은 Lisp에 영향을 미쳐 후속 프로그래밍 언어에도 영향을 미쳤다.

더 읽어볼만한 페이지

  • 인공지능의 역사 - AI 겨울
    AI 겨울은 인공지능 연구에 대한 자금 지원과 관심이 크게 감소했던 시기를 가리키며, 기계 번역의 어려움, 신경망의 한계, 전문가 시스템 문제, 5세대 컴퓨터 실패 등의 요인으로 여러 차례 침체기를 겪었으나, 2000년대 이후 음성 및 이미지 인식 분야에서 성과를 거두며 부흥했고, 2022년 이후 대규모 언어 모델 등장으로 관심과 투자가 폭발적으로 증가했다.
  • 인공지능의 역사 - 튜링 테스트
    튜링 테스트는 앨런 튜링이 제안한 기준으로, 기계가 인간과 구별할 수 없을 정도로 행동하는지 판별하며, 뢰브너 상 등을 통해 실현 가능성과 한계에 대한 논쟁이 지속되고 있고, 유진 구스트만, LaMDA, ChatGPT 등이 테스트 통과 또는 자의식 논란을 일으키고 있다.
  • 절차적 프로그래밍 언어 - C (프로그래밍 언어)
    C는 하드웨어 제어와 이식성이 뛰어난 고급 절차적 프로그래밍 언어로서, 다양한 분야에서 사용되며 후속 언어에 영향을 주었고, 성능과 효율성이 높지만 안전성 문제 개선이 필요한 언어이다.
  • 절차적 프로그래밍 언어 -
    펄은 래리 월이 개발한 텍스트 조작에 강점을 가진 다목적 프로그래밍 언어이며, 1987년 펄 1.0이 처음 공개된 이후 여러 버전 업데이트를 거쳐 객체 지향 프로그래밍과 유니코드 지원 기능을 추가했고, 현재 펄 5가 널리 사용되며 CPAN을 통해 방대한 모듈 생태계를 제공한다.
정보 처리 언어 - [IT 관련 정보]에 관한 문서
개요
이름정보 처리 언어 (Information Processing Language)
약칭IPL
패러다임어셈블리어
설계자앨런 뉴얼, 클리프 쇼, 허버트 사이먼
개발자앨런 뉴얼, 클리프 쇼, 허버트 사이먼
최초 발표 연도1956년
최신 버전IPL-VI
영향을 준 언어리스프
운영체제크로스 플랫폼: JOHNNIAC, IBM 650, IBM 704, IBM 7090

2. 역사

IPL은 버트런드 러셀과 알프레드 노스 화이트헤드의 ''수학 원리''의 정리들을 계산을 통해 증명할 수 있음을 보이기 위해 처음 사용되었다. 사이먼의 자서전 ''내 삶의 모델''에 따르면, 이 응용 프로그램은 원래 손으로 시뮬레이션하여 개발되었으며, 그의 아이들을 계산 요소로 사용하고 프로그램의 상태 변수를 포함하는 레지스터 역할을 하는 노트 카드를 작성하고 들고 있었다.[1]

IPL은 논리 이론가(1956), 일반 문제 해결사(1957), NSS(1958) 등 초기 인공 지능 프로그램 구현에도 사용되었다.

IPL의 여러 버전이 제작되었다:

버전설명
IPL-I구현되지 않음
IPL-II1957년, JOHNNIAC용으로 제작
IPL-III짧게 존재
IPL-IV
IPL-V1958년, IBM 650, IBM 704, IBM 7090, 필코 모델 212 등 다양한 기종에 사용, 널리 사용됨
IPL-VIIPL 하드웨어에 대한 제안



아르곤 국립 연구소의 CDC 3600을 위한 "IPL-VC" 코프로세서가 개발되었으며, 이는 IPL-V 명령을 실행할 수 있었다. 이것은 또 다른 체커 게임 프로그램을 구현하는 데 사용되었다. 이 하드웨어 구현은 실행 시간을 충분히 개선하지 못하여 "오늘날 기계의 구조에 더 직접적으로 지향된 언어와 유리하게 경쟁"하지 못했다.

IPL은 곧 더 간결한 구문과 자동 가비지 컬렉션 기능을 갖춘 Lisp에 의해 대체되었다.

3. 언어 특징

IPL은 기호, 셀, 원시 프로세스로 구성된다. 주요 데이터 구조는 리스트이지만, 속성 리스트를 통해 더 복잡한 구조를 표현할 수 있다. IPL은 리스트 조작을 위한 어셈블리 언어이며, H1(프로그램 카운터), H2(자유 리스트) 등 특수 목적 레지스터로 사용되는 셀들이 존재한다. H2는 자유 리스트로, 프로시저가 메모리가 필요할 때 H2에서 셀을 가져오고, 사용이 완료된 메모리는 H2에 반환한다. 함수 입력 시에는 H0에 매개변수 리스트가 주어지며, 종료 시에는 H0에 결과값을 반환해야 한다. 많은 프로시저는 H5를 통해 성공 또는 실패를 나타내는 부울 결과를 반환한다. W0-W9는 10개의 셀은 공용 작업 저장 공간으로 사용된다.

3. 1. 기본 구성 요소

IPL은 다음과 같은 기본 구성 요소를 갖는다.

  • 심볼(Symbol): 모든 심볼은 주소를 가지며, 이름을 가진 셀이다. 후대의 언어와는 달리, IPL의 심볼은 문자 뒤에 숫자가 오는 형식(예: H1, A29, 9-7, 9-100)으로 표기된다.
  • 셀 이름이 영문자로 시작하면 '지역적(regional)'이며 절대 주소를 나타낸다.
  • 셀 이름이 "9-"로 시작하면 '지역적(local)'이며, 단일 리스트 내에서만 의미를 갖는다. 즉, 한 리스트의 9-1은 다른 리스트의 9-1과 독립적이다.
  • 그 외의 심볼(예: 숫자만으로 이루어진 심볼)은 '내부적(internal)'이다.
  • 셀(Cell): 리스트는 상호 참조를 포함하는 여러 셀로 구성된다. 셀은 다음과 같은 필드를 갖는다.
  • P: 3비트 필드로, 셀이 명령어로 사용될 때 연산 코드로 사용된다. 데이터로 사용될 때는 사용되지 않는다.
  • Q: 3값 필드로, 셀이 명령어로 사용될 때 간접 참조에 사용된다. 데이터로 사용될 때는 사용되지 않는다.
  • SYMB: 셀의 값으로 사용되는 심볼이다.
  • 원시 프로세스(Primitive Process): 현대 언어의 '원시 함수'에 해당한다.


IPL의 자료 구조는 리스트이지만, 다른 언어의 리스트보다 복잡하다. 리스트는 단일 연결된 기호 시퀀스로 구성되며, '설명 리스트(description list)'가 추가된다. 설명 리스트는 속성 이름과 값을 번갈아 나타내는 부차적인 단일 연결 리스트로 해석된다. IPL은 속성 이름으로 값에 접근하고 변경하는 기능을 제공한다. 설명 리스트는 지역 이름(9-1 형식)으로 주어지며, 다음 표는 이러한 구조의 예를 보여준다.

IPL-V의 리스트 구조 예
이름SYMBLINK
L19-1100
100S4101
101S50
9-10200
200A1201
201V1202
202A2203
203V20



위 표에서 L1은 S4와 S5를 포함하고, 속성 A1에 값 V1, A2에 값 V2를 연결하여 설명된다. 0은 리스트의 끝을 나타낸다. 100, 101 등은 자동으로 생성된 내부 기호이며, 값은 관련이 없다. 이러한 셀은 메모리 전체에 흩어져 있을 수 있다. 전역적으로 알려져야 하는 지역 이름을 사용하는 L1만 특정 위치에 존재해야 한다.

3. 2. 리스트 구조

IPL의 자료 구조는 리스트이지만, 다른 많은 언어들의 리스트보다 복잡한 구조를 갖는다. 리스트는 단일 연결된 기호 시퀀스로 구성되며, 여기에 '설명 리스트(description list)'라는 부가적인 구조가 추가된다. 설명 리스트는 속성 이름과 값을 번갈아 나타내는 부차적인 단일 연결 리스트로 해석된다. IPL은 속성 이름으로 속성 값에 접근하고 변경하는 원시 기능(primitive)을 제공한다. 설명 리스트는 9–1 형식과 같은 지역 이름으로 주어지는데, 예를 들어 S4와 S5를 포함하고, 속성 A1에 값 V1을, A2에 V2를 연결하여 설명되는 L1이라는 리스트는 다음과 같이 저장된다.

'''IPL-V 리스트 구조 예시'''
이름SYMBLINK
L19-1100
100S4101
101S50
9-10200
200A1201
201V1202
202A2203
203V20



위 표에서 0은 리스트의 끝을 나타낸다. 셀 이름 100, 101 등은 자동으로 생성된 내부 기호이며, 값은 관련이 없다. 이러한 셀은 메모리 전체에 흩어져 있을 수 있다. 전역적으로 알려져야 하는 지역 이름을 사용하는 L1만 특정 위치에 존재해야 한다.

3. 3. 명령어

IPL은 리스트 조작을 위한 어셈블리 언어이다. H1(프로그램 카운터), H2(자유 리스트), H5(부울 결과), W0-W9(작업 저장 공간) 등 특수 목적 레지스터로 사용되는 셀들이 존재한다. 예를 들어 H1의 SYMB 필드는 현재 명령어의 이름이며, H1의 LINK는 콜 스택의 시작을 가리킨다. 서브루틴 호출은 H1의 SYMB를 콜 스택에 푸시한다.

P 필드의 값에 따라 8가지 명령어가 가능하다.

P 값명령어 종류설명
서브루틴 호출
S를 H0으로 푸시/팝
S에 연결된 리스트에 S의 기호를 푸시/팝
값을 S로 복사
조건부 분기



이 명령어들에서 S는 대상이며, Q 필드는 간접 참조 수준을 나타낸다 (0, 1, 2).


  • Q = 0: S는 SYMB 필드의 값
  • Q = 1: S는 SYMB에 의해 명명된 셀의 기호
  • Q = 2: S는 SYMB에 의해 명명된 셀의 기호에 의해 명명된 셀의 기호


조건부 분기를 제외한 모든 경우, 셀의 LINK 필드는 다음에 실행할 명령어를 알려준다.

3. 4. 기본 연산 (라이브러리)

IPL은 약 150개의 기본 연산을 제공하는 라이브러리를 가지고 있다. 이 라이브러리는 다음과 같은 연산들을 포함한다.

  • 심볼 동일성 테스트
  • 리스트 속성 검색, 설정 및 삭제
  • 리스트 내 다음 심볼 검색, 리스트에 심볼 삽입, 전체 리스트 삭제 또는 복사
  • (심볼 이름에 대한) 산술 연산
  • 심볼 조작 (예: 심볼이 정수를 나타내는지 테스트, 심볼 지역화)
  • 입출력(I/O) 연산
  • "생성기" (함수형 프로그래밍의 반복자 및 필터 해당). 예를 들어, 생성기는 숫자 리스트를 받아 각 숫자의 제곱으로 구성된 리스트를 생성 가능하다. 생성기는 적절하게 설계된 함수, 즉 해당 함수의 코드 주소를 인수로 받을 수 있다.

4. 프로그래밍 언어에 미친 영향

IPL은 다음과 같은 프로그래밍 언어 기능들을 처음으로 도입하거나 발전시켰다.


  • 리스트 조작 - 단, 리스트의 요소는 아톰뿐이며, 리스트의 리스트는 만들 수 없었다.
  • 속성 리스트 - 단, 다른 리스트에 부속되는 형태였다.
  • 고차 함수 - 원래 어셈블리 언어이므로 함수 호출 시 해당 주소를 계산한다. IPL은 이 어셈블리 언어의 특성을 일반화했다.
  • 심볼에 의한 계산 - 단, 심볼은 "문자 + 숫자" 형식이며, 일반적인 단어는 사용할 수 없었다.
  • 가상 머신


이러한 기능의 대부분은 일반화되어 정교해져 Lisp에 도입되었고[3], Lisp에서 후속의 다양한 프로그래밍 언어에도 계승되었다.

4. 1. IPL과 Lisp의 관계

IPL은 리스트 처리, 속성 리스트, 고차 함수 등 여러 프로그래밍 언어 개념을 도입한 것으로 평가받는다. IPL에서 사용된 리스트 조작은 원자(atom)의 리스트만 가능했고, 일반적인 리스트는 아니었다. 속성 리스트는 다른 리스트에 연결될 때만 사용할 수 있었다. 고차 함수는 어셈블리 프로그래밍에서 함수의 주소를 이용해 연산하는 것을 일반화한 초기 시도였다. IPL의 기호 연산에서 기호는 제한된 형태(문자 다음에 숫자)를 가졌다. IPL은 가상 머신 개념을 사용했다.[2]

이러한 기능들은 이후 Lisp에 일반화, 합리화되어 통합되었고, 다른 많은 프로그래밍 언어로 이어졌다. IPL의 기능 대부분은 Lisp에서 더욱 정교해졌다.[3]

5. 관련 저작


  • A. 뉴얼 & F.C. 쇼, "논리 이론 기계 프로그래밍." 1957년 2월. Proceedings of the Western Joint Computer Conference, pp. 230-240.
  • 앨런 뉴얼 & 프레드 M. 톤지, "정보 처리 언어 V 소개." 1960년. CACM 3(4): 205-211.
  • 앨런 뉴얼, ''정보 처리 언어-V 매뉴얼; 제2판''. 1964년. Rand Corporation 앨런 뉴얼, 엔글우드 클리프스, NJ: Prentice-Hall.

참조

[1] FOLDOC Information+Processing+Language
[2] 웹사이트 History of Lisp http://www-formal.st[...] 1979
[3] 웹사이트 History of Lisp http://www-formal.st[...] 1979



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com