gpt4 book ai didi

compiler-construction - clojure 程序/编译器/解释器实际上如何 "work"?

转载 作者:行者123 更新时间:2023-12-05 01:17:45 25 4
gpt4 key购买 nike

似乎要在每个新 IDE 中安装 Clojure,我必须完全重新安装它并创建它的副本。运行 REPL 就像运行 Java 程序一样。

我来自 Ruby 背景,其中 Ruby 程序由 ruby program.rb 运行。 ,而 ruby​​ 是一个从一个地方执行的程序,到文件中(我知道这类似于它对 java、python 等的工作方式)。

clojure“解释器”仅仅是一个编译的 Java 文件,它将 .clj 文件作为参数,并对其进行处理吗?

最佳答案

首先,Clojure 没有解释器。所有 Clojure 代码在加载时都被编译为 JVM 字节码。我强调这一点,因为这是 Clojure 出色的性能故事的开始。

其次,您并没有像使用 Ruby 那样真正“安装”Clojure。 Clojure 来自 jar文件,它只是一堆 Java 类;如果你把 jar类路径上的文件,您可以运行这些类的方法。在这些类中,clojure.main提供 main运行 REPL 和“脚本”的方法。所以,运行REPL确实是在运行Java(即JVM)程序;并运行 clj文件等于问clojure.main加载并运行它(实际工作交给了 Clojure 实现中的其他类,但 clojure.main 是入口点)。顺便说一句,这与 JRuby 完全相同。

每个 JVM 程序最终都“只是一个编译后的 Java 文件”,或者可能是一堆这样的文件。要运行它,您需要让 JVM 实例加载它并运行相应的 main方法。请注意,C 程序(例如 ruby -the-command)的不同之处仅在于操作系统知道如何找到它们的 main函数(好吧,Java 的类路径的等价物的工作方式也大不相同,但主要概念是相同的)。对于 JVM 程序,您需要使用操作系统友好的可执行文件 ( java/java.exe ) 来启动。

关于compiler-construction - clojure 程序/编译器/解释器实际上如何 "work"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3107299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com