읽기 평가 인쇄 루프

Read–eval–print loop

Read-Eval-Print Loop(REPL; 읽기 평가 인쇄 루프)인터랙티브 탑레벨 또는 언어 셸이라고도 불리며 단일 사용자 입력을 받아 실행한 후 결과를 사용자에게 반환하는 단순한 인터랙티브 컴퓨터 프로그래밍 환경입니다.REP 환경에서 작성된 프로그램은 [1]분할적으로 실행됩니다.이 용어는 일반적으로 기존의 Lisp 머신 인터랙티브 환경과 유사한 프로그래밍 인터페이스를 가리킵니다.일반적인 예로는 명령줄 및 프로그래밍 언어에 대한 유사한 환경을 들 수 있으며, 이 기술은 스크립트 [2]언어에서 매우 특징적입니다.

역사

최초의 Read-Eval-Print 루프 사이클은 1964년 L. Peter Deutsch와 Edmund Berkeley에 의해 PDP-1[3]Lisp를 구현하기 위해 발명되었습니다.

개요

REP에서 사용자가 (컴파일 유닛 전체가 아닌) 하나 이상의 식을 입력하면 REP가 이를 [1]평가하고 결과를 표시합니다.read-eval-print 루프라는 이름은 다음 기능을 구현하는 리스프 프리미티브 함수의 이름에서 유래합니다.

  • 읽기 함수는 사용자로부터 식을 받아 메모리 내의 데이터 구조로 해석합니다.예를 들어, 사용자는 s-식을 입력할 수 있습니다. (+ 1 2 3)는 4개의 데이터 요소를 포함하는 링크된 목록으로 해석됩니다.
  • eval 함수는 이 내부 데이터 구조를 가져와 평가합니다.Lisp에서 함수의 이름으로 시작하는 s-식을 평가하는 것은 식의 나머지 부분을 구성하는 인수에 대해 함수를 호출하는 것을 의미합니다.그 함수는+인수에 의해 호출됩니다.1 2 3결과를 낳다6.
  • print 기능은 eval에 의해 산출된 결과를 가져와 사용자에게 출력합니다.복잡한 표현이라면 이해하기 쉽도록 예쁘게 인쇄되어 있을 것이다.

그런 다음 개발 환경은 읽기 상태로 돌아가 프로그램을 닫으면 종료되는 루프를 생성합니다.

프로그래머가 다음 번 읽기에 제공할 식을 결정하기 전에 인쇄 결과를 검사할 수 있기 때문에 REP는 탐색 프로그래밍과 디버깅을 용이하게 합니다.읽기-평가-인쇄 루프는 기존의 편집-컴파일-실행-디버깅 사이클보다 프로그래머와 더 자주 관련됩니다.

인쇄 기능은 읽기 기능이 입력에 사용하는 텍스트 형식과 동일한 형식으로 출력하므로 대부분의 결과는 복사하여 REP에 다시 붙여넣을 수 있는 형태로 인쇄됩니다.단, 소켓핸들이나 복잡한 클래스인스턴스 등 눈에 띄게 다시 읽을 수 없는 요소의 표현을 인쇄해야 하는 경우가 있습니다.이 경우 읽을 수 없는 개체에 대한 구문이 있어야 합니다.Python에서는, 이것은<__module__.class instance>표기법 및 Common Lisp에서는#<whatever> . CLIM, SLIMSymbolicsLisp Machine의 리플리케이션은 읽을 수 없는 오브젝트도 읽어낼 수 있습니다.출력별로 어떤 오브젝트가 인쇄되었는지 기록합니다.나중에 코드가 다시 읽힐 때 개체는 인쇄된 출력에서 검색됩니다.

모든 텍스트 기반 언어를 지원하도록 REP를 생성할 수 있습니다.컴파일된 언어에 대한 REP 지원은 보통 컴파일러에 인터페이스를 제공하는 가상 시스템 위에 인터프리터를 구현함으로써 이루어집니다.예를 들어 JDK 9부터 Java는 JShell을 언어의 명령줄 인터페이스로 포함시켰습니다.그 외의 다양한 언어에서는, 서드 파티제의 툴을 다운로드할 수 있습니다.이 툴은, 그 언어와 유사한 셸의 상호작용을 제공합니다.

사용하다

로서 REP 환경에서는, 유저가 operating system의 관련 기능에 액세스 할 수 있을 뿐만 아니라, 프로그래밍 기능에 액세스 할 수 있습니다.운영 체제 쉘 이외의 복제에서 가장 일반적으로 사용되는 것은 즉각적인 프로토타이핑입니다.[4]다른 용도로는 수학 계산, 과학 분석(예: IPython), 대화형 소프트웨어 유지보수, 벤치마킹 및 알고리즘 탐색이 있습니다.

Lisp의 상세

실행

최소한의 정의는 다음과 같습니다.

(정의하다(리플리케이트 부러워하다)   (인쇄물 (평가하다부러워하다 (읽어주세요)))   (리플리케이트 부러워하다) ) 

어디에env이니셜을 나타냅니다.eval- uation 환경.또, 라고 가정하고 있다.env파괴적으로 갱신할 수 있다eval.

기능

Lisp REP에 의해 제공되는 일반적인 기능은 다음과 같습니다.

  • 입력 및 출력 이력.
  • 입력 식과 결과에 대해 변수가 설정됩니다.이러한 변수는 REP에서도 사용할 수 있습니다.예를 들어 [Common Lisp]의 경우*마지막 결과를 참조합니다.**그리고.***그 이전의 결과에 대해서요.
  • 리플리케이션 레벨많은 Lisp 시스템에서 식을 읽기, 평가 또는 인쇄하는 동안 오류가 발생해도 오류 메시지와 함께 시스템이 최상위 수준으로 되돌아가지 않습니다.대신 오류 컨텍스트에서 한 단계 더 깊은 새 복제가 시작됩니다.그런 다음 사용자는 문제를 검사하고 수정한 후 가능하면 계속할 수 있습니다.이러한 디버깅 리플리케이션에서 에러가 발생했을 경우는, 한층 더 깊은 레벨의 다른 리플리케이션이 개시됩니다.대부분의 경우 REP는 특별한 debug 명령을 제공합니다.
  • 에러 처리.REP는 재기동을 제공합니다.이러한 재기동은, 에러가 발생했을 경우에, 특정의 레플리케이션레벨로 되돌리기 위해서 사용할 수 있습니다.
  • 마우스 기밀 데이터 객체 입력 및 출력
  • 기호, 경로 이름, 클래스 이름 및 기타 개체에 대한 입력 편집 및 컨텍스트별 완료.
  • 명령 도움말 및 매뉴얼.
  • 판독기를 제어하는 변수입니다.예를 들어 변수 *read-base*는 기본적으로 어떤 기본 번호를 읽을지 제어합니다.
  • 프린터를 제어하는 변수.예: 인쇄할 식의 최대 길이 또는 최대 깊이.
  • 추가 명령어 구문일부 REP에는 s-expression 구문이 아닌 명령어가 있지만 Lisp 데이터를 인수로 사용하는 경우가 많습니다.
  • 그래피컬 리플리케이션일부 Lisp REPL(CLIM Listener가 예)은 그래픽 입력 및 출력도 받아들입니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b Grillmeyer, O. (2013). Exploring Computer Science with Scheme. Undergraduate Texts in Computer Science. Springer New York. p. 239. ISBN 978-1-4757-2937-5. Retrieved 2021-06-26. The central component to the Scheme interpreter is the read-eval-print loop. Commands are read in, then evaluated. Finally, the evaluated result is printed.
  2. ^ Hey, Tony; Pápay, Gyuri (2014). The Computing Universe: A Journey through a Revolution. Cambridge University Press. p. 76. ISBN 978-1-31612322-5, "A major characteristic of modern scripting languages is their interactivity, sometimes referred to as a REPL programming environment. ... The characteristics of ease of use and immediate execution with a REPL environment are sometimes taken as the definition of a scripting language."{{cite book}}: CS1 유지보수: 포스트스크립트(링크)
  3. ^ L. Peter Deutsch; Edmund Berkeley, The LISP Implementafion for the PDP-1 Computer (PDF)
  4. ^ van Binsbergen, L. Thomas; Verano Merino, Mauricio; Jeanjean, Pierre; van der Storm, Tijs; Combemale, Benoit; Barais, Olivier (2020-11-17). A principled approach to REPL interpreters. New York, NY, USA: ACM. doi:10.1145/3426428.3426917. ISBN 978-1-4503-8178-9.

외부 링크