맨위로가기

맥리스프

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

1. 개요

매클리스프는 Lisp 1.5를 기반으로 개발된 프로그래밍 언어이다. 변수의 동적 값을 저장하기 위해 '값 셀'을 사용하고, 더 읽기 쉬운 입출력(I/O)을 위해 리더 매크로를 활용하는 등 Lisp 1.5와 차별화되는 특징을 갖는다. PDP-6 및 PDP-10 컴퓨터에서 시작되어 다양한 운영 체제로 이식되었으며, Macsyma와 SHRDLU 등의 프로그램 개발에 사용되며 1980년대 초까지 인공 지능 연구 커뮤니티에서 널리 사용되었다. 현재는 적극적으로 유지 관리되지 않으며, PDP-10 에뮬레이터에서 실행 가능하다.

더 읽어볼만한 페이지

  • 리스프 - AI 겨울
    AI 겨울은 인공지능 연구에 대한 자금 지원과 관심이 크게 감소했던 시기를 가리키며, 기계 번역의 어려움, 신경망의 한계, 전문가 시스템 문제, 5세대 컴퓨터 실패 등의 요인으로 여러 차례 침체기를 겪었으나, 2000년대 이후 음성 및 이미지 인식 분야에서 성과를 거두며 부흥했고, 2022년 이후 대규모 언어 모델 등장으로 관심과 투자가 폭발적으로 증가했다.
  • 리스프 - 리스프 머신
    리스프 머신은 Lisp 언어의 효율적인 실행을 위해 설계된 컴퓨터 시스템으로, 인공지능 연구와 컴퓨터 그래픽스 분야에 영향을 미쳤으나 상업적 성공은 거두지 못했고, 기술적 유산은 현재까지 연구되고 있다.
  • 리스프 프로그래밍 언어 계열 - 클로저 (프로그래밍 언어)
    클로저는 리치 히키가 개발한 JVM 기반의 함수형 프로그래밍 언어로, 자바와의 호환성을 특징으로 하며 불변 데이터 구조와 STM을 활용한 동시성 관리, 그리고 REPL 환경, 매크로 시스템 등의 기능을 제공한다.
  • 리스프 프로그래밍 언어 계열 - 커먼 리스프
    커먼 리스프는 1980년대 초 여러 리스프 방언 통합 시도에서 시작된 언어로, S-표현식 문법, 다양한 자료형, 일급 함수, 매크로, CLOS를 특징으로 하며, ANSI 표준으로 정의되어 다양한 분야에서 활용된다.
맥리스프 - [IT 관련 정보]에 관한 문서
개요
유형리스프 방언
개발자MIT 프로젝트 MAC
설계자리처드 그린블랫, 존 L. 화이트
발표 연도1966년 7월
중단 여부
영향 받은 언어리스프 1.5
영향을 준 언어커먼 리스프, 이맥스 리스프
기술 정보
패러다임다중 패러다임: 함수형, 절차적, 반영, 메타
타이핑동적, 강한
플랫폼PDP-6, PDP-10
운영 체제Incompatible Timesharing System, TOPS-10, TOPS-20, 멀틱스
프로그래밍 언어어셈블리어, PL/I
파일 확장자.lisp, .fasl

2. 역사

매클리스프는 Lisp 1.5의 후손이다.[3] 매클리스프는 변수의 동적 값을 접근하고 저장하기 위해 ''값 셀''을 사용함으로써 Lisp 1.5와 차별화된다.[4] Lisp 1.5는 변수의 값을 결정하기 위해 연관 리스트를 선형으로 검색했다.[5] 매클리스프 변수 평가는 더 빠르지만 다른 변수 의미 체계를 가진다. 매클리스프는 또한 입출력(I/O)이라고 하는 더 읽기 쉬운 ''입력''과 ''출력''을 만들기 위해 리더 매크로를 사용했다. `(QUOTE A)`를 입력하는 대신, 동일한 s-표현식을 얻기 위해 `'A`를 입력할 수 있었다. 두 구현 모두 함수를 프로퍼티 리스트에 넣었지만, 매클리스프는 함수를 정의하기 위해 다른 구문을 사용했다.[6] 매클리스프는 또한 로드 온 디맨드 기능을 가지고 있다.[7]

매클리스프는 디지털 이큅먼트 코퍼레이션(Digital Equipment Corporation) PDP-6PDP-10 컴퓨터에서 비호환 시분할 시스템(Incompatible Timesharing System)(ITS)을 실행하면서 시작되었으며, 나중에 모든 다른 PDP-10 운영 체제, 예를 들어 ''Timesharing / Total Operating System'', TOPS-10 및 TOPS-20으로 이식되었다. 원래 구현은 어셈블리 언어로 작성되었지만, 나중에 Multics에서 사용된 구현은 PL/I를 사용했다. 매클리스프는 그 수명 동안 상당히 발전했다. 다른 언어 시스템에서는 주요 릴리스 번호에 해당할 수 있는 주요 기능이 추가되었다.

매클리스프는 Macsyma 컴퓨터 대수 시스템(CAS) 또는 기호 대수 프로그램을 구현하는 데 사용되었다. Macsyma의 개발은 또한 매클리스프의 몇 가지 기능을 이끌었다. SHRDLU 블록 세계 프로그램은 매클리스프로 작성되었으며, 따라서 이 언어는 1980년대 초까지 인공 지능(AI) 연구 커뮤니티에서 널리 사용되었다. 또한 Planner 및 Scheme과 같은 다른 프로그래밍 언어를 구현하는 데 사용되었다. Multics Maclisp는 최초의 Lisp 기반 Emacs를 구현하는 데 사용되었다.

매클리스프는 영향력 있는 Lisp 구현이었지만 더 이상 적극적으로 유지 관리되지 않는다. 현재 PDP-10 에뮬레이터에서 실행되며 초기 AI 프로그램을 실험하는 데 사용할 수 있다.

2. 1. 초기 개발

매클리스프는 Lisp 1.5의 후손이다.[3] 매클리스프는 변수의 동적 값을 접근하고 저장하기 위해 ''값 셀''을 사용함으로써 Lisp 1.5와 차별화된다.[4] Lisp 1.5는 변수의 값을 결정하기 위해 연관 리스트를 선형으로 검색했다.[5] 매클리스프 변수 평가는 더 빠르지만 다른 변수 의미 체계를 가진다. 매클리스프는 또한 입출력(I/O)이라고 하는 더 읽기 쉬운 ''입력''과 ''출력''을 만들기 위해 리더 매크로를 사용했다. (QUOTE A)를 입력하는 대신, 동일한 s-표현식을 얻기 위해 'A를 입력할 수 있었다. 두 구현 모두 함수를 프로퍼티 리스트에 넣었지만, 매클리스프는 함수를 정의하기 위해 다른 구문을 사용했다.[6] 매클리스프는 또한 로드 온 디맨드 기능을 가지고 있다.[7]

매클리스프는 디지털 이큅먼트 코퍼레이션(Digital Equipment Corporation) PDP-6PDP-10 컴퓨터에서 비호환 시분할 시스템(Incompatible Timesharing System)(ITS)을 실행하면서 시작되었으며, 나중에 모든 다른 PDP-10 운영 체제, 예를 들어 ''Timesharing / Total Operating System'', TOPS-10 및 TOPS-20으로 이식되었다. 원래 구현은 어셈블리 언어로 작성되었지만, 나중에 Multics에서 사용된 구현은 PL/I를 사용했다. 매클리스프는 그 수명 동안 상당히 발전했다.

매클리스프는 Macsyma 컴퓨터 대수 시스템(CAS) 또는 기호 대수 프로그램을 구현하는 데 사용되었다. Macsyma의 개발은 또한 매클리스프의 몇 가지 기능을 이끌었다. SHRDLU 블록 세계 프로그램은 매클리스프로 작성되었으며, 따라서 이 언어는 1980년대 초까지 인공 지능(AI) 연구 커뮤니티에서 널리 사용되었다. 또한 Planner 및 Scheme과 같은 다른 프로그래밍 언어를 구현하는 데 사용되었다. Multics Maclisp는 최초의 Lisp 기반 Emacs를 구현하는 데 사용되었다.

매클리스프는 영향력 있는 Lisp 구현이었지만 더 이상 적극적으로 유지 관리되지 않는다. 현재 PDP-10 에뮬레이터에서 실행되며 초기 AI 프로그램을 실험하는 데 사용할 수 있다.

2. 2. PDP-10에서의 발전

매클리스프는 Lisp 1.5의 후손으로,[3] 변수의 동적 값을 접근하고 저장하기 위해 ''값 셀''을 사용함으로써 Lisp 1.5와 차별화된다.[4] Lisp 1.5는 변수의 값을 결정하기 위해 연관 리스트를 선형으로 검색했다.[5] 매클리스프 변수 평가는 더 빠르지만 다른 변수 의미 체계를 가진다. 매클리스프는 또한 입출력 (I/O)이라고 하는 더 읽기 쉬운 ''입력''과 ''출력''을 만들기 위해 리더 매크로를 사용했다. (QUOTE A)를 입력하는 대신, 동일한 s-표현식을 얻기 위해 'A를 입력할 수 있었다. 두 구현 모두 함수를 프로퍼티 리스트에 넣었지만, 매클리스프는 함수를 정의하기 위해 다른 구문을 사용했다.[6] 매클리스프는 또한 로드 온 디맨드 기능을 가지고 있다.[7]

매클리스프는 디지털 이큅먼트 코퍼레이션(Digital Equipment Corporation) PDP-6PDP-10 컴퓨터에서 비호환 시분할 시스템(Incompatible Timesharing System)(ITS)을 실행하면서 시작되었으며, 나중에 모든 다른 PDP-10 운영 체제, 예를 들어 ''Timesharing / Total Operating System'', TOPS-10 및 TOPS-20으로 이식되었다. 원래 구현은 어셈블리 언어로 작성되었지만, 나중에 Multics에서 사용된 구현은 PL/I를 사용했다. 매클리스프는 그 수명 동안 상당히 발전했다.

매클리스프는 Macsyma 컴퓨터 대수 시스템 (CAS) 또는 기호 대수 프로그램을 구현하는 데 사용되었다. Macsyma의 개발은 또한 매클리스프의 몇 가지 기능을 이끌었다. SHRDLU 블록 세계 프로그램은 매클리스프로 작성되었으며, 따라서 이 언어는 1980년대 초까지 인공 지능 (AI) 연구 커뮤니티에서 널리 사용되었다. 또한 Planner 및 Scheme과 같은 다른 프로그래밍 언어를 구현하는 데 사용되었다. Multics Maclisp는 최초의 Lisp 기반 Emacs를 구현하는 데 사용되었다.

2. 3. Macsyma와 인공지능 연구

매클리스프는 Macsyma 컴퓨터 대수 시스템(CAS)을 구현하는 데 사용되었다. Macsyma 개발은 매클리스프의 여러 기능에 영향을 주었다.[3] SHRDLU 블록 세계 프로그램은 매클리스프로 작성되었으며, 1980년대 초까지 인공 지능(AI) 연구 커뮤니티에서 널리 사용되었다. 또한 Planner 및 Scheme과 같은 다른 프로그래밍 언어를 구현하는 데 사용되었다. Multics Maclisp는 최초의 Lisp 기반 Emacs를 구현하는 데 사용되었다.

매클리스프는 영향력 있는 Lisp 구현이었지만 더 이상 적극적으로 유지 관리되지 않는다.[3] 현재 PDP-10 에뮬레이터에서 실행되며 초기 AI 프로그램을 실험하는 데 사용할 수 있다.[3]

2. 4. 영향

매클리스프는 Lisp 1.5의 후손으로, 변수의 동적 값을 접근하고 저장하기 위해 ''값 셀''을 사용하는 등 여러 면에서 Lisp 1.5와 차별화된다.[3][4] Lisp 1.5는 변수 값을 결정하기 위해 연관 리스트를 선형으로 검색했지만,[5] 매클리스프는 변수 평가가 더 빠르지만 다른 변수 의미 체계를 가진다. 매클리스프는 또한 더 읽기 쉬운 입출력(I/O)을 위해 리더 매크로를 사용했으며, 함수 정의에 다른 구문을 사용했다.[6] 로드 온 디맨드 기능도 제공한다.[7]

매클리스프는 디지털 이큅먼트 코퍼레이션 PDP-6PDP-10 컴퓨터에서 비호환 시분할 시스템(ITS)을 실행하면서 시작되었으며, 이후 ''Timesharing / Total Operating System'', TOPS-10, TOPS-20 등 다른 PDP-10 운영 체제로 이식되었다.[3] 초기에는 어셈블리 언어로 작성되었지만, 나중에 Multics에서 사용된 구현은 PL/I를 사용했다.

매클리스프는 Macsyma 컴퓨터 대수 시스템(CAS) 구현에 사용되었으며, Macsyma 개발은 매클리스프의 여러 기능을 이끌었다. SHRDLU 블록 세계 프로그램도 매클리스프로 작성되어 1980년대 초까지 인공 지능(AI) 연구 커뮤니티에서 널리 사용되었다. 또한 Planner 및 Scheme과 같은 다른 프로그래밍 언어를 구현하는 데 사용되었으며, 최초의 Lisp 기반 Emacs 구현에도 사용되었다.

매클리스프는 영향력 있는 Lisp 구현이었지만 현재는 유지 관리되지 않으며, 에뮬레이터에서 실행하여 초기 AI 프로그램을 실험하는 데 사용할 수 있다.

Lisp 방언 연표
19581960196519701975198019851990199520002005201020152020
colspan="2" |매클리스프colspan="6" |
MDLcolspan="5" |
SchemeR5RSR6RSR7RS small
Franz Lispcolspan="2" |
Common LispANSI standard
Emacs Lispcolspan="8" |


3. 특징

맥리스프는 적은 수의 고정된 자료형으로 시작했다: cons 셀, 원자(나중에 '기호'라고 함), 정수, 그리고 부동소수점 숫자. 나중에 추가된 것으로는 배열 (일급 자료형이 아님), 임의 정밀도 정수 (bignum), 문자열, 튜플이 있었다. 모든 객체 (inum 제외)는 포인터로 구현되었고, 데이터 유형은 포인터가 가리키는 메모리 블록에 의해 결정되었으며, 작은 숫자(inum)에 대한 특수한 경우가 있었다.[8]

프로그램은 ''인터프리트'' 또는 ''컴파일''될 수 있었다. 컴파일된 동작은 로컬 변수가 SPECIAL로 선언되지 않는 한, 기본적으로 컴파일된 코드에서 어휘적이고, CAR 및 CDR과 같은 인라인 작업에 대한 오류 검사가 수행되지 않는다는 점을 제외하고 인터프리트된 동작과 동일했다.[8] Ncomplr 컴파일러 (1970년대 중반)는 데이터 유형에 따라 디스패치하는 해석 루틴을 호출하는 대신 산술에 대한 기계어 (명령어)를 생성하여 Lisp 언어에 빠른 숫자 지원을 도입했다. 이로 인해 Lisp 산술은 스칼라 연산에서 포트란과 속도가 비슷해졌다 (포트란 배열 및 루프 구현은 훨씬 더 빨랐지만).[8]

원래 버전은 PDP-10의 18비트 단어 메모리 주소에 의해 제한되었으며, 구현을 간결하고 단순하게 유지하는 데 많은 노력이 소요되었다. Multics Maclisp는 훨씬 더 큰 주소 공간을 가지고 있었지만 사용 비용이 많이 들었다. PDP-10의 메모리와 처리 능력이 초과되면서, Lisp Machine이 발명되었다: Lisp Machine Lisp는 Maclisp의 직계 후손이다. 몇 가지 다른 Lisp 방언도 사용되었으며, 커뮤니티를 통합해야 할 필요성으로 인해 현대적인 Common Lisp 언어가 탄생했다.[8]

3. 1. 인터프리터와 컴파일러

맥리스프는 초기에는 cons 셀, 원자(이후 '기호'로 불림), 정수, 부동소수점 숫자와 같은 적은 수의 고정된 자료형으로 시작했다.[8] 이후 배열(일급 자료형은 아님), 임의 정밀도 정수(bignum), 문자열, 튜플이 추가되었다.[8] 모든 객체(inum 제외)는 포인터로 구현되었고, 데이터 유형은 포인터가 가리키는 메모리 블록에 의해 결정되었으며, 작은 숫자(inum)에 대한 특수한 경우가 있었다.[8]

맥리스프 프로그램은 ''인터프리트''되거나 ''컴파일''될 수 있었다.[8] 컴파일된 동작은 로컬 변수가 SPECIAL로 선언되지 않는 한 기본적으로 컴파일된 코드에서 어휘적이고, CAR 및 CDR과 같은 인라인 작업에 대한 오류 검사가 수행되지 않는다는 점을 제외하고 인터프리트된 동작과 동일했다.[8] 1970년대 중반의 Ncomplr 컴파일러는 데이터 유형에 따라 디스패치하는 해석 루틴을 호출하는 대신 산술에 대한 기계어(명령어)를 생성하여 Lisp 언어에 빠른 숫자 지원을 도입했다.[8] 이로 인해 Lisp 산술은 스칼라 연산에서 포트란과 속도가 비슷해졌다(포트란 배열 및 루프 구현은 훨씬 더 빨랐지만).[8]

원래 버전은 PDP-10의 18비트 단어 메모리 주소에 의해 제한되었으며, 구현을 간결하고 단순하게 유지하는 데 많은 노력이 소요되었다.[8] Multics Maclisp는 훨씬 더 큰 주소 공간을 가지고 있었지만 사용 비용이 많이 들었다.[8] PDP-10의 메모리와 처리 능력이 초과되면서, Lisp Machine이 발명되었다.[8] Lisp Machine Lisp는 Maclisp의 직계 후손이다.[8] 몇 가지 다른 Lisp 방언도 사용되었으며, 커뮤니티를 통합해야 할 필요성으로 인해 현대적인 Common Lisp 언어가 탄생했다.[8]

3. 2. 메모리 제약과 Lisp Machine

맥리스프는 초기에 cons 셀, 원자(이후 '기호'로 불림), 정수, 부동소수점 숫자와 같은 적은 수의 고정된 자료형으로 시작했다.[8] 나중에는 배열(일급 자료형은 아님), 임의 정밀도 정수(bignum), 문자열, 튜플이 추가되었다.[8] 모든 객체(inum 제외)는 포인터로 구현되었고, 데이터 유형은 포인터가 가리키는 메모리 블록에 의해 결정되었으며, 작은 숫자(inum)에 대한 특수한 경우가 있었다.[8]

프로그램은 ''인터프리트''되거나 ''컴파일''될 수 있었다.[8] 컴파일된 동작은 로컬 변수가 SPECIAL로 선언되지 않는 한, 기본적으로 컴파일된 코드에서 어휘적이고, CAR 및 CDR과 같은 인라인 작업에 대한 오류 검사가 수행되지 않는다는 점을 제외하고 인터프리트된 동작과 동일했다.[8] Ncomplr 컴파일러(1970년대 중반)는 데이터 유형에 따라 디스패치하는 해석 루틴을 호출하는 대신 산술에 대한 기계어(명령어)를 생성하여 Lisp 언어에 빠른 숫자 지원을 도입했다.[8] 이로 인해 Lisp 산술은 스칼라 연산에서 포트란과 속도가 비슷해졌다(포트란 배열 및 루프 구현은 훨씬 더 빨랐지만).[8]

원래 버전은 PDP-10의 18비트 단어 메모리 주소에 의해 제한되었으며, 구현을 간결하고 단순하게 유지하는 데 많은 노력이 소요되었다. Multics Maclisp는 훨씬 더 큰 주소 공간을 가지고 있었지만 사용 비용이 많이 들었다. PDP-10의 메모리와 처리 능력이 초과되면서, Lisp Machine이 발명되었다. Lisp Machine Lisp는 Maclisp의 직계 후손이다. 몇 가지 다른 Lisp 방언도 사용되었으며, 커뮤니티를 통합해야 할 필요성으로 인해 현대적인 Common Lisp 언어가 탄생했다.

4. 이름의 유래

맥리스프는 프로젝트 MAC에서 이름을 따왔으며, 수십 년 전에 등장했으므로 애플의 매킨토시 (Mac) 컴퓨터나 존 매카시와는 관련이 없다.[9] 매킨토시용 다양한 리스프 시스템은 맥리스프와 특별한 유사성이 없다.[9]

5. Lisp 방언 연표

참조

[1] 서적 Hackers: Heroes of the Computer Revolution Doubleday
[2] 보고서 Project MAC Progress Report IV: July 1966 to July 1967 http://www.dtic.mil/[...] n.d.
[3] 간행물
[4] 간행물
[5] 문서
[6] 문서
[7] 간행물
[8] 웹사이트 The Revised Maclisp Manual (The Pitmanual), Sunday Morning Edition http://maclisp.info/[...] HyperMeta, Inc. 2018-10-20
[9] 웹사이트 The Revised Maclisp Manual (The Pitmanual), Sunday Morning Edition http://maclisp.info/[...] HyperMeta Inc. 2018-10-20
[10] 서적 Hackers: Heroes of the Computer Revolution Doubleday
[11] 보고서 Project MAC Progress Report IV: July 1966 to July 1967 http://www.dtic.mil/[...] n.d.



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

문의하기 : help@durumis.com