Programing

슈퍼 컴파일이란 무엇입니까?

lottogame 2020. 11. 6. 07:45
반응형

슈퍼 컴파일이란 무엇입니까?


짧고 달콤합니다. "슈퍼 컴파일"에 대해 이야기하는 여러 출처를 보았습니다. 그러나 나는 이것이 무엇인지 설명하는 인터넷상의 어느 곳에서도 하나의 문서를 아직 찾지 못했다 . 설명 할 가치가없는 사람에게는 간단 해 보일 수 있습니다.

이것이 실제로 무엇인지 아는 사람이 있습니까?


슈퍼 컴파일은 부분 평가의 일반화로 접근 할 수 있습니다. 부분 평가의이면에있는 아이디어는 프로그램의 많은 부분이 컴파일 타임에 평가 될 수 있다는 것입니다. Supercompilation는 완전히 돌려처럼뿐만 아니라, 컴파일시에 할 수없는 것들을 평가하는이 확장 map f (map g xs)map (f . g) xs정의 외에 아무 것도없이을 map(- 난 단지 supercompilation에 대해 많이 읽은 적어도 나는 부분 평가 권한을 찾은 것 같아).

그것을 보는 또 다른 방법은 삼림 벌채, 전문화 및 인라인과 같은 다른 많은 최적화의 조합입니다. 함수에 대한 입력을 이미 알고있는 것처럼 행동하고 평가함으로써 결과를 계산하는보다 직접적인 방법을 얻을 수 있습니다. 사용 방법을 확인하여 중간 데이터 구조를 제거하거나 가능한 모든 값을 연결할 수 있습니다. 그런 다음 결과를로 래핑 case하거나 척 값으로 다른 작업을 수행하십시오.

Max Bolingbroke는이 주제에 대한 유용한 논문을 많이 보유하고 있습니다. 첫 번째 논문 인 Supercompilation by Evaluation을 소개로 추천합니다 . 섹션 2에서는 예제로 주제를 소개하고 나머지는 이해하기가 조금 어렵지만 프로세스에 대해 매우 유익합니다. Neil Mitchell은 또한 그것을 설명 하는 많은 좋은 프레젠테이션 을 가지고 있습니다.

도움이 되었기를 바랍니다.


에서 Metacompilation에 위키 백과 :

메타 컴파일은 M의 작업을 제어, 분석 및 모방하는 컴퓨팅 머신 M에서 메타 머신 M '으로의 메타 시스템 전환 (MST)을 포함하는 계산입니다. 부분 평가 및 슈퍼 컴파일 (SCP)과 같은 의미론 기반 프로그램 변환은 메타 컴퓨팅입니다. .

Wikipedia의 Metasystems에 대한 추가 정보 .

나는 주제에 대해 잘 모르지만 설명에 대한 이해를 제공 할 것입니다. stdin을 stdout에 복사 할 수있는 간단한 프로그램이 있다고 가정 해 보겠습니다. 이것은 우리의 컴퓨팅 머신 M이 될 것입니다. 우리의 메타 머신 M '은 M의 소스를 입력으로 취하고 (또는 본질적으로 M을 알도록 구성되어있는) 두 번째 프로그램이므로 M이 무엇을하는지뿐만 아니라 그것이 어떻게 작동하는지 이해할 수 있습니다. 그렇게합니다.

내 이해가 맞다면 분명한 질문은 왜 우리가 M '에 관심이 있는가? 내 마음에 떠오르는 것은 자동 최적화입니다. M의 작동 방식과 M이 달성하려는 작업을 모두 이해할 수 있다면 M '은 공간이나 시간에서 M의 작동을 개선하는 방법을 해결할 수 있습니다. 더욱이 M '은 M이 무엇을하던 무엇이든 성취 할 수 있기 때문에 M'은 M을 대체 할 수 있습니다. 이는 M ''이 M '최적화 M 방식을 개선 할 수 있고, 이후에 M'을 대체 할 수 있음을 의미합니다.

참고 URL : https://stackoverflow.com/questions/9067545/what-is-supercompilation

반응형