Как clojure программы/компиляторы/интерпретаторы на самом деле “работают”?

Кажется, что для установки Clojure в каждом новом IDE я должен полностью переустановить его и создать копию его. И выполнение REPL кажется, что запускает программу Java.

Я происхожу из среды Ruby, где программы Ruby запущены ruby program.rb, и так как рубин является программой, выполненной от одного места на файл (я знаю, что это подобно тому, как это работает на Java, Python, и т.д. также).

clojure "интерпретатор" является просто скомпилированным файлом Java, который берет .clj файл в качестве аргумента и действительно наполняет к нему?

13
задан Justin L. 29 April 2012 в 20:32
поделиться

1 ответ

Во-первых, в Clojure нет интерпретатора. Весь код Clojure компилируется в байт-код JVM при загрузке. Я подчеркиваю этот момент, потому что это начало истории превосходной производительности Clojure.

Во-вторых, вы на самом деле не «устанавливаете» Clojure в том смысле, в котором вы устанавливаете Ruby.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 ), чтобы начать работу.

29
ответ дан 1 December 2019 в 20:42
поделиться