eval과 exec에 해당하는 언어가 컴파일 된 언어로 존재할 수 있습니까? 그렇다면 어떻게 컴파일 될 것입니까?파이썬의 exec와 eval이 컴파일 되었다면?
5
A
답변
5
우선, 파이썬 은 컴파일 된 언어 인입니다. 런타임시 컴파일 만 수행합니다. 즉, eval
을 다른 컴파일 된 언어로 구현하려면 컴파일러를 실행하고 (객체 코드를 동적으로로드 할 수 있어야합니다.) 파이썬에서 (그리고 다른 언어로도) 쉽게 할 수 있습니다. 컴파일러는 런타임의 필수 부분입니다. 기술적으로 C로 작성된 프로그램을 컴파일러를 호출하고 런타임에 결과를로드하는 것을 막는 것은 없습니다 (dlopen
사용). C 런타임은 컴파일러를 필요로하지 않기 때문에 일반적인 경우는 아니므로 대부분의 사용자는 컴파일러를 필요로하지 않습니다. .
5
물론 다양한 Lisp 환경이 수십 년 동안이 기능을 갖추고 있습니다. Lisp 컴파일러는 일반적으로 함수 단위로 작동하며 컴파일러와 런타임 시스템이 함께 작동합니다.
eval
에게 질문을 받으면 Lisp 런타임 환경은 목록 (데이터 구조)을 컴파일러로 전달하여 컴파일합니다. 컴파일러는 시스템에 따라 기계 코드 (또는 시스템에 따라 바이트 코드)를 생성 할 수 있으며,이 함수는 프로그램의 다른 모든 함수와 마찬가지로 컴퓨터 수준에서 호출 할 수 있습니다.
관련 문제
- 1. PHP에서 exec와 webserver 크래시
- 2. ML에 eval이 있습니까?
- 3. 여기 왜 eval이 실패합니까?
- 4. 컴파일 된 파이썬 프로그램이 파이썬의 파생물입니까
- 5. 데이터 소스와 Eval이 gridview에 있음
- 6. MinGW에서 Core Audio 헤더가 누락 되었다면 어떻게해야합니까?
- 7. 파이썬의 distutils가 .S (어셈블리)를 컴파일 할 수 있습니까?
- 8. eval이 추가 된 이벤트 리스너 제거
- 9. 자바 스크립트에서 eval이 안전하지 않은 이유는 무엇입니까?
- 10. 파이썬의 인쇄에
- 11. 파이썬의 xml.dom.minidom
- 12. 파이썬의 Sum()
- 13. 파이썬의 Memcache
- 14. 파이썬의 생성자
- 15. 파이썬의 사인파
- 16. 파이썬의 스레드
- 17. 파이썬의 distutils에 ..
- 18. 파이썬의 동등성?
- 19. 유닉스 스타일의 exec와 같은 현재 자바 프로세스를 대체하려면 어떻게해야합니까?
- 20. 리눅스에서 pthread, fork, exec와 관련된 프로세스 스택의 크기는 어떻게 되나요?
- 21. 개미의 재귀 chmod가 속도면에서 exec와 경쟁 할 수 있습니까?
- 22. 모바일 브라우저를 사용하는 경우 exec와 다른 결과가 출력됩니다.
- 23. ASP.net 중계기 내부의 Eval이 다른 컨트롤에서 작동하지 않습니다.
- 24. 문자열을 자바 스크립트 (eval이 아님)의 함수로 바꾼다
- 25. Erlang : qlc : info는 qlc : eval이 오류를 발생시키는 이유는 무엇입니까? - 왜?
- 26. 파이썬의 병렬 SSH
- 27. 순수 파이썬의 웹 세션
- 28. 파이썬의 if 문에서 생성자
- 29. 파이썬의 robotparser 무시 맵
- 30. html로 파이썬의 .doc 변환기?
C는 또한 본질적으로 컴파일하기가 어렵다고 알려진 컴파일러이므로 "평가"를 위해 컴파일러를 호출하면 잠재적으로 사용자가 5 분 또는 그 이상 기다리게 할 수 있습니다. 파이썬은 컴퓨터 코드가 아니라 가상 컴퓨터로 컴파일되기 때문에 비트를 치밀하게 사로 잡습니다. 따라서 가상 컴퓨터가 언어를 쉽게 컴파일 할 수 있도록 복잡한 내용을 지원하도록 만들 수 있습니다. Lisp는 소스 코드가 기본적으로 이미 추상 구문 트리이기 때문에 시작하기 쉽습니다. 컴파일하기 쉬운 또 다른 언어는 Forth입니다. 원래 편집기는 입력 된대로 각 코드 행을 컴파일합니다. – slebetman
@slebetman : 실제로 C 컴파일러를 호출하는 시스템이 있으며 매우 빠릅니다 (일부 pypy 모드가 하나의 예입니다) - 최신 C 컴파일러는 매우 빠르며 (C++이 아닌) 사실 실제로 가장 시간이 많이 소요되는 구성 요소 C의 빌드주기는 종종 (플랫폼에 따라) 링커이며, 단축/제거 할 수있는 경우 일반적으로 평상시에 평가하는 코드 조각의 크기가 크게 지연되지 않습니다 (예 : point of reference,'icl'은 파이썬 컴파일러가 파이썬의 라인을 VM opcode로 변환하는 것보다 C의 라인을 기계 코드로 더 빨리 컴파일합니다. –