GHC (Glorious Glasgow Haskell 컴파일러)는 Haskell을 "Core"로 컴파일 한 다음 해당 Core를 컴퓨터 코드로 컴파일합니다. 하스켈 프로그램을 마치 "바이트 코드"처럼 GHC 코어로 배포하는 것이 실제적일까요? 그러한 배포판에 어떤 이점이 있습니까? 그 이유는 무엇?"바이트 코드"로 GHC 코어?
답변
실용적이지 않습니다. GHC 코어는 이식 가능하지 않습니다. 예를 들어, 32 비트 시스템에서 64 비트 산술은 코어의 외부 함수 호출로 컴파일되지만 64 비트 시스템에서는 기본 기계어 산술을 사용합니다.
더 중요한 것은 GHC는 실제로 읽을 수 없습니다 코어; 그것은 몇 가지 형식으로 인쇄 할 수 있지만 그 형식을 다시 읽을 수있는 실제 코드는 없습니다. 그렇게하는 데 큰 장애가 있는지 확실하지 않지만 오랫동안 문서화 된 상황이었습니다 , 그래서 나는 언젠가는 지원을 기대하지 않을 것이다.
코어도 일반적으로 하스켈에 매우 가깝습니다. 당신이 그 형태로 코드를 배포함으로써 무엇을 살 것인지 분명하지 않습니다. 하스켈을 코어로 변환하는 데 걸리는 시간은 일반적으로 최종 프로그램을 링크하는 것과 같은 일을하는 데 걸리는 시간보다 짧을 것이므로 일반적으로 컴파일 시간을 많이 절약하지는 못합니다.
또한 Haskell 소스 코드보다 Core 검사가 적습니다. (-dcore-lint
이이를 완화시킬 수 있다고 생각하지만) 효과적으로 샌드 빅셔닝하는 것은 어려울 것입니다. Safe Haskell이 있지만 Safe Core는 없습니다. 물론, 이러한 단점은 바이트 코드의 소스가 신뢰되는 경우에는 적용되지 않습니다.
기본적으로 GHC 코어는 Python 바이트 코드 및 JVM과 같은 목적으로 설계된 이식 가능한 바이트 코드 형식과 달리 컴파일러의 중간 언어입니다.
참고로 GHC 에는에 GHCi에서 사용 된 바이트 코드 인터프리터가 있습니다. 거기에 사용 된 바이트 코드는 또한 이식성이 없기 때문에 GHC가 정상적인 동작에서 생성하는 기계 코드와 비교할 때 내가 생각할 수있는 장점이 없다.
- 1. ASM 바이트 코드로 테스트
- 2. Java 바이트 코드로 클래스
- 3. 바이트 코드로 컴파일하는 동기는 무엇입니까?
- 4. R 코드를 바이트 코드로 변환
- 5. 기존 cpp 코어 코드로 웹 애플리케이션 구축하기
- 6. 바이너리 또는 바이트 코드로 파일 쓰기
- 7. 디버깅 가능한 바이트 코드로 자바 스크립트
- 8. (자바를 사용하지 않고) 자바 바이트 코드로 컴파일
- 9. 자바 스크립트를 파이썬 바이트 코드로 변환
- 10. 꽤 방법을 ASM의 바이트 코드로 인쇄
- 11. 최소 하스켈 (GHC) 프로그램 설치 (GHC/음모없이 배포)
- 12. GHC 혼란 컴파일
- 13. Haskell - GHC 컴파일 문제
- 14. Yesod GHC 버전
- 15. GHC 유형 추론 재발
- 16. GHC 코어로 컴파일
- 17. GHC 연결 문제가 발생했습니다.
- 18. GHC 확장 목록
- 19. GHC 루트없이 설치
- 20. ghc 버전은 어떻게 결정합니까?
- 21. Scion for GHC 7.0.2
- 22. cabal은 ghc 7.4.1
- 23. GHC/FFI는 : C
- 24. 최소한의 코드로 코어 데이터의 여러 엔티티에서 데이터로드를 반복하려면 어떻게해야합니까?
- 25. 네이티브 컴퓨터 코드를 llvm 바이트 코드로 변환하는 방법
- 26. 소스를 바이트 코드로 변환하는 데 PHP APC를 사용할 수 있습니까?
- 27. Android NDK 모호성, 바이트 또는 기계어 코드로 컴파일 하시겠습니까?
- 28. R 패키지를 바이트 코드로 컴파일 할 수 있습니까?
- 29. JVM 어셈블리 코드를 바이트 코드로 컴파일하는 방법은 무엇입니까?
- 30. Coco/R은 파싱 된 파일을 바이트 코드로 바꿀 수 있습니까?