Programming

컴파일 된 언어와 해석 된 언어의 차이점은 무엇입니까?

procodes 2020. 7. 28. 22:11
반응형

컴파일 된 언어와 해석 된 언어의 차이점은 무엇입니까?


이 주제에 대한 자료를 읽은 후에도 여전히 컴파일 된 언어와 해석 된 언어의 차이점이 무엇인지 잘 모르겠습니다. 이것이 Java와 JavaScript의 차이점 중 하나라고 들었습니다. 누군가 나를 이해하는 데 도움을 주시겠습니까?


컴파일 된 언어와 해석 된 언어의 차이점은 무엇입니까?

차이점은 언어 아닙니다 . 그것은 구현에있다 .

내 시스템에서 그것을 얻었으므로 여기에 대답이 있습니다.

  • 컴파일 된 구현에서 원래 프로그램은 기본 기계 명령어로 변환되며 하드웨어에서 직접 실행됩니다.

  • 해석 된 구현에서 원래 프로그램은 다른 것으로 변환됩니다. "통역사"라고하는 다른 프로그램은 "다른 것"을 검사하고 필요한 조치를 수행합니다. 언어와 그 구현에 따라 다양한 형태의 "다른 것"이 있습니다. 더 인기있는 것에서 덜 인기있는 것까지 "다른 것"은

    • Lua, Python, Ruby, Smalltalk 및 기타 여러 시스템에서 수행 되는 가상 머신에 대한 이진 명령 (종종 바이트 코드 라고 함) (이 방법은 1970 년대 UCSD P 시스템 및 UCSD 파스칼에 의해 대중화되었습니다)

    • 많은 프로토 타입이나 교육 통역사에 대해 수행되는 추상 구문 트리와 같은 원래 프로그램의 트리와 같은 표현

    • Tcl과 유사한 소스 프로그램의 토큰 화 된 표현

    • MINT 및 TRAC에서 수행 된 소스 프로그램의 문자

이 문제를 복잡하게하는 한 가지는 바이트 코드를 기본 기계 명령어로 변환 (컴파일) 할 수 있다는 것입니다 . 따라서 성공적인 통합 구현은 결국 컴파일러를 얻을 수 있습니다. 컴파일러가 백그라운드에서 동적으로 실행되는 경우 종종 적시 컴파일러 또는 JIT 컴파일러라고합니다. JIT는 Java, JavaScript, Lua 및 기타 여러 언어를 위해 개발되었습니다. 이 시점에서 일부 코드가 해석되고 일부 코드가 컴파일되는 하이브리드 구현이 가능합니다.


자바와 자바 스크립트는이 차이를 설명하기에 상당히 나쁜 예 이다. 둘 다 해석되는 언어이기 때문이다 . Java (해석) 및 C (또는 C ++) (컴파일) 가 더 좋은 예일 수 있습니다.

왜 파업 텍스트입니까? 이 답변이 제대로 지적하지 언어에 대해, 언어의 구체적인 구현에 대해 컴파일 /되어 해석 그 자체 . "C는 컴파일 된 언어"와 같은 문장은 일반적으로 사실이지만 누군가가 C 언어 인터프리터를 작성하는 것을 막을 수있는 것은 없습니다. 실제로 C에 대한 인터프리터가 존재합니다 .

기본적으로 컴파일 된 코드는 컴퓨터의 CPU에 의해 직접 실행될 수 있습니다. 즉, 실행 코드는 CPU의 "기본"언어 ( 어셈블리 언어 )로 지정됩니다.

그러나 인터프리터 언어 코드는 런타임에 모든 형식에서 CPU 머신 명령어로 변환되어야합니다. 이 번역은 통역사가 수행합니다.

퍼팅의 또 다른 방법은 해석이다 언어는 코드가 기계 지침을 단계별로 번역되는 동안 프로그램이 실행되는 컴파일 된 반면, 언어가 가진 코드가 번역 한 전에 프로그램 실행.


다음은 컴파일러와 통역 언어의 기본 차이점입니다.

컴파일러 언어

  • 전체 프로그램을 단일 입력으로 가져 와서 파일에 저장된 객체 코드로 변환합니다.
  • 중간체 객체 코드가 생성됩니다
  • 예 : C, C ++
  • 컴파일 전에 실행이 완료되므로 컴파일 된 프로그램이 더 빨리 실행됩니다.
  • 메모리 요구 사항은 객체 코드 생성으로 인한 것입니다.
  • 전체 프로그램이 컴파일 된 후 오류가 표시됩니다
  • 소스 코드 --- 컴파일러 --- 기계 코드 --- 출력

통역 언어 :

  • 단일 명령을 단일 입력으로 사용하고 명령을 실행합니다.
  • 중간 오브젝트 코드가 생성되지 않습니다
  • 예 : Perl, Python, Matlab
  • 컴파일 및 실행이 동시에 수행되므로 해석 된 프로그램이 느리게 실행됩니다.
  • 메모리 요구 사항이 적습니다.
  • 모든 단일 명령어에 대해 오류가 표시됩니다.
  • 소스 코드 --- 인터프리터 --- 출력

일반적으로 컴파일러는 고급 언어 컴퓨터 코드를 읽고 p- 코드 또는 기본 기계 코드로 변환합니다. 인터프리터는 p- 코드 또는 Basic 또는 Lisp와 같은 해석 된 코드에서 직접 실행됩니다. 일반적으로 컴파일 된 코드는 훨씬 빠르게 실행되고 더 간결하며 이미 모든 구문 오류와 많은 불법 참조 오류를 발견했습니다. 해석 된 코드는 응용 프로그램이 영향을받는 코드를 해석하려고 시도한 후에 만 ​​이러한 오류를 찾습니다. 해석 된 코드는 종종 한 번 또는 최대 두 번만 사용되거나 프로토 타입 제작에 사용되는 간단한 응용 프로그램에 적합합니다. 컴파일 된 코드는 심각한 응용 프로그램에 적합합니다. 컴파일러는 먼저 전체 프로그램을 가져 와서 오류를 확인하고 컴파일 한 다음 실행합니다. 통역사가 한 줄씩이 작업을 수행하므로 한 줄이 걸리고 오류가 있는지 확인합니다.

더 많은 정보가 필요하면 "컴파일러와 인터프리터의 차이점"에 대해 Google에 문의하십시오.


그것은 매우 어두운 구별이며, 실제로는 일반적으로 언어 자체의 속성이 아니라 해당 언어로 코드를 실행하는 데 사용하는 프로그램이 아닙니다.

그러나 대부분의 언어는 주로 한 형태 또는 다른 형태로 사용되며, Java는 본질적으로 항상 컴파일되는 반면 Java는 본질적으로 항상 해석됩니다.

소스 코드를 컴파일하는 것은 실행시 소스에 의해 정의 된 동작을 갖는 바이너리 실행 파일을 생성하는 프로그램을 실행하는 것입니다. 예를 들어, javac는 사람이 읽을 수있는 .java 파일을 기계가 읽을 수있는 .class 파일로 컴파일합니다.

To interpret source code is run a program on it that produces the defined behavior right away, without generating an intermediary file. For instance, when your web browser loads stackoverflow.com, it interprets a bunch of javascript (which you can look at by viewing the page source) and produces lots of the nice effects these pages have - for instance, upvoting, or the little notifier bars across the top.


Interpreted language is executed at the run time according to the instructions like in shell scripting and compiled language is one which is compiled (changed into Assembly language, which CPU can understand ) and then executed like in c++.

참고URL : https://stackoverflow.com/questions/2657268/whats-the-difference-between-compiled-and-interpreted-language

반응형