0

프로그래밍 언어는 적어도 부분적으로 언어 자체에서 구현되는 표준 라이브러리와 함께 제공되는 것이 일반적입니다.해석 된 표준 라이브러리

인터프리터 언어의 경우 명백한 구현은 인터프리터가 시작될 때 라이브러리 소스 파일을 읽는 것이지만 인터프리터가 인터프리터를 시작할 때 둘 다 움직인다. 인터프리터에 임베드 될 수 있다면 더 깨끗합니다. 따라서 하나의 실행 파일 만 있습니다.

나는 라이브러리 소스 파일을 C 리터럴 문자열로 변환하는 간단한 방법을 볼 수있다. 그러나 나는 그 방법에 대해 간과하고있는 함정이 있는지 궁금하다.

제 질문은 기존의 인터프리터 언어가 라이브러리 소스 파일을 언어 자체에 통역사에게 첨부하는 것입니다.

+0

언급 한 문제가 전혀 발생하지 않아도됩니다. 그런 일을하지 않거나, 필요할 때마다 모듈 검색 경로와 동등한 언어로 업데이트하십시오. – delnan

+0

컴파일 된 언어를 사용하여 동일한 작업을 수행하는 것과는 다른 점이 무엇입니까? 기본 위치에서 컴파일러/인터프리터가 위치를 찾거나 컴파일러/interp에 알려야합니다. – RHSeeger

답변

2

바이트 코드 가상 머신은 종종 바이트 코드를 파일 (* .pyc, * .rbc)에 저장하고 더 간단한 메커니즘을 사용하여 바이트 코드 버전의 라이브러리를로드합니다.

스몰 토크는 표준 힙을 "이미지"라는 별도의 파일로 덤프하여이 작업을 수행합니다.

단일 파일 배포의 경우 실행 파일 끝에 라이브러리 파일을 추가하고 해석기가 이진 파일을 읽고 해당 해석 가능한 프로그램 데이터의 구조를 찾도록 특별한 논리를 포함하거나 인터프리터를 프로그램 데이터의 정적 인 포함으로 빌드하십시오.

+0

또한, Lisp 언어는 일반적으로 "FASL"("FASt Load"의 약어)와 비슷한 형태로 pyc/rbc와 유사합니다.이 파일은 바이트 코드 또는 링크 가능한 동적 바이너리 형식입니다 (따라서 객체 파일은 아니지만 최적화 바이트 코드보다). –