답변:
REPL : 이것은 단지 반복해서 한 번에 하나의 명령을 받아 실행하고 결과를 인쇄하는 절차입니다.
루프를 반복 할 때마다 세 단계는 다음과 같습니다.
사용자 자신의 프로그램에 대해 자체 읽기-인쇄-인쇄 루프를 작성하여 사용자가 표현식을 입력하고 원하는 방식으로 해석 할 수 있습니다. read-eval-print 루프를 시작하면 (rep-loop를 입력하여) 일반적인 Scheme read-eval-print 루프를 대신하여 표현식을 해석합니다.
다음은 매우 간단한 읽기 평가 인쇄 루프입니다.
(define (rep-loop)
(display "repl>") ; print a prompt
(write (eval (read))) ; read expr., pass to eval, write result
(rep-loop)) ; loop (tail-recursive call) to do it again
각 프로 시저 호출에 대한 인수는 실제 호출 전에 계산되므로 표현식 (쓰기 (eval (읽기)))은 적절한 읽기-인쇄-인쇄 순서로 작업을 수행합니다.
대화식 쉘 : 대화식 쉘은 터미널의 사용자 입력에서 명령을 읽습니다. 무엇보다도 이러한 셸은 활성화시 시작 파일을 읽고 프롬프트를 표시하며 기본적으로 작업 제어를 활성화합니다. 사용자는 셸과 상호 작용할 수 있으며, 대화 형 셸 이름이로 변경되었습니다. 이 bash 스크립트를 고려해 봅시다.
#!/bin/bash
echo -n "Enter the value of variable 'var1': "
read var1
echo "var1 = $var1"
echo
echo -n "Enter the values of variables 'var2' and 'var3' "
echo =n "(separated by a space or tab): "
read var2 var3
echo "var2 = $var2 var3 = $var3"
# If you input only one value,
#+ the other variable(s) will remain unset (null).
exit 0
이제 위의 스크립트는 사용자와 상호 작용하고 계산을 수행하는 데 따라 입력을 요청합니다. 이것이 대화 형 쉘처럼 동작하는 이유입니다.
마찬가지로, 대부분의 사람들이 파이썬을 배우기 위해 사용하는 파이썬 인터프리터는 사용자와 의사 소통하는 대화 형 인터프리터입니다.
기술적으로 쉘은 REPL의 인스턴스라고 말하는 것이 맞습니다. 그러나 일반적인 사용 시나리오 중 하나이므로 프로그램 정의의 문제가 아닙니다.
예를 들어, Bash는 C로 작성되었지만 Python으로 작성되었을 수도 있습니다. 그 시점에서 프로그램 기능과 기능에 대해 이야기한다면 Bash는 쉘이지만 Python은 그렇지 않다고 말하는 것이 맞습니까?
쉘은 명령 실행에 관한 것이고 REPL은 명령 및 함수 호출에 관한 것입니다. 그러나 REPL (Python의 os.system, os.popen 등)에서 명령을 실행할 수 없으며 많은 내장 기능을 사용하여 Bash에서 함수를 실행 (또는 정의) 할 수 없습니까?
전술 한 바와 같이, 그것은 사용의 문제이다. 파일과 기성품 프로그램을 저글링하면 셸로 사용하는 것입니다. 라이브러리 또는 언어 의미를 테스트하는 경우 REPL입니다.
희망이 도움이됩니다.
이 StackOverflow 질문은 바로 그 질문에 대해 설명합니다.
대화 형 파이썬과 관련하여 개인적으로 울타리에 있습니다. 그러나 당신이 그것을 REPL이라고 부르고 싶다면, 아무도 당신에게 화를 낼 것이라고 생각하지 않습니다. 그것은 REPL).