프로그래밍 언어 구현

Programming language implementation

컴퓨터 프로그래밍에서 프로그래밍 언어 실장은 컴퓨터 프로그램을 실행하기 위한 시스템이다.프로그래밍 언어 [1]구현에는 두 가지 일반적인 방법이 있습니다.

  • 해석:프로그램은 인터프리터에 의해 입력으로 읽혀지며,[2] 인터프리터는 프로그램에 기록된 액션을 수행합니다.
  • 컴파일:이 프로그램은 컴파일러에 의해 읽혀지고 바이트 코드나 기계 코드와 같은 다른 언어로 번역됩니다.변환된 코드는 하드웨어에 의해 직접 실행되거나 다른 인터프리터 또는 다른 [2]컴파일러의 입력으로 사용될 수 있습니다.

통역사

통역사파서평가자의 두 부분으로 구성됩니다.인터프리터에 의해 입력으로서 프로그램을 읽어낸 후, 파서에 의해 처리된다.파서는 프로그램을 언어 컴포넌트로 분할하여 해석 트리를 형성합니다.그런 다음 평가자는 해석 트리를 사용하여 [3]프로그램을 실행합니다.

가상 머신

가상 시스템은 바이트 [2]코드를 해석하는 특수한 유형의 인터프리터입니다.바이트 코드는 일반적으로 물리적 [4]시스템이 아닌 가상 시스템에서 실행되지만 시스템 코드와 유사한 휴대용 하위 수준 코드입니다.효율을 향상시키기 위해 Java,[4] [5]Python, C#[6]같은 많은 프로그래밍 언어가 해석되기 전에 바이트 코드로 컴파일됩니다.

적시 컴파일러

일부 가상 시스템에는 바이트 코드 실행의 효율성을 개선하기 위해 JIT(Just-in-Time) 컴파일러가 포함되어 있습니다.가상 머신에 의해 바이트 코드가 실행되는 동안 JIT 컴파일러는 바이트 코드의 일부가 반복적으로 사용된다고 판단하면 해당 특정 부분을 머신 코드로 컴파일합니다.그런 다음 JIT 컴파일러는 가상 시스템에서 사용할 수 있도록 시스템 코드를 메모리에 저장합니다.JIT 컴파일러는 더 긴 컴파일 시간과 더 [2]빠른 실행 시간 사이에서 균형을 맞추려고 합니다.

컴파일러

컴파일러는 한 언어로 작성된 프로그램을 다른 언어로 번역합니다.대부분의 컴파일러는 프런트엔드, 옵티마이저백엔드의 3단계로 구성됩니다.프런트 엔드는 프로그램의 이해를 담당합니다.프로그램이 유효한지 확인하고 프로그램을 나타내기 위해 컴파일러에 의해 사용되는 데이터 구조인 중간 표현으로 변환합니다.옵티마이저는 최종적으로 컴파일러에 의해 생성되는 실행 파일의 속도를 높이거나 크기를 줄이기 위해 중간 표현을 개선합니다.백엔드는 최적화된 중간 표현을 [7]컴파일러의 출력 언어로 변환합니다.

특정 고급 언어의 컴파일러가 다른 고급 언어를 생성하면 트랜스필러라고 합니다.트랜스필러는 다른 언어(C [2])의 휴대성이 뛰어나고 최적화된 구현을 이용하여 기존 언어를 확장하거나 컴파일러 개발을 단순화하는 데 사용할 수 있습니다.

해석과 컴파일의 많은 조합이 가능하며, 현대의 많은 프로그래밍 언어 구현에는 두 가지 요소가 모두 포함되어 있습니다.를 들어 Smalltalk 프로그래밍 언어는 전통적으로 바이트 코드로 컴파일되어 가상 머신에 의해 해석되거나 컴파일됩니다.Smalltalk 바이트 코드는 가상 시스템에서 실행되므로 서로 다른 하드웨어 플랫폼에서 [8]이식할 수 있습니다.

복수 실장

프로그래밍 언어에는 여러 가지 구현이 있을 수 있습니다.다른 구현은 다른 언어로 작성될 수 있으며 다른 방법을 사용하여 코드를 컴파일 또는 해석할 수 있습니다.예를 들어 Python의 구현에는 다음이 포함됩니다.

레퍼런스

  1. ^ Ranta, Aarne (9 May 2012). Implementing Programming Languages (PDF). College Publications. pp. 16–18. ISBN 9781848900646. Retrieved 22 March 2020.
  2. ^ a b c d e Baker, Greg. "Language Implementations". Computing Science - Simon Fraser University. Retrieved 22 March 2020.
  3. ^ Evans, David (19 August 2011). Introduction to Computing (PDF). University of Virginia. p. 211. Retrieved 22 March 2020.
  4. ^ a b Sridhar, Jay. "Why the Java Virtual Machine Helps Your Code Run Better". MakeUseOf. Retrieved 22 March 2020.
  5. ^ Bennett, James. "An introduction to Python bytecode". Opensource.com. Retrieved 22 March 2020.
  6. ^ Ali, Mirza Farrukh. "Common Language Runtime(CLR) DotNet". Medium. Retrieved 22 March 2020.
  7. ^ Cooper, Keith; Torczon, Linda (7 February 2011). Engineering a Compiler (2nd ed.). Morgan Kaufmann. pp. 6-9. ISBN 9780120884780.
  8. ^ Lewis, Simon (May 11, 1995). The Art and Science of Smalltalk (PDF). Prentice Hall. pp. 20–21. ISBN 9780133713459. Retrieved 23 March 2020.
  9. ^ "Alternative Python Implementations". Python.org. Retrieved 23 March 2020.

외부 링크