我遇到Richard Stallman的以下声明:
'当你启动一个Lisp系统时,它会进入一个read-eval-print循环.大多数其他语言没有什么可比阅读,没有什么可比得上eval,没有什么比得上印刷.有什么差距不足!"
现在,我在Lisp中做了很少的编程,但我在Python中编写了大量代码,最近在Erlang中编写了一些代码.我的印象是这些语言也提供了read-eval-print循环,但Stallman不同意(至少关于Python):
"在人们告诉我它与Lisp基本相似之后,我浏览了Python的文档.我的结论是,情况并非如此.当你启动Lisp时,它会"读取","eval"和"print",所有这些都在Python中缺失.
Lisp和Python的read-eval-print循环之间真的存在根本的技术差异吗?你能举例说明Lisp REPL易于使用并且在Python中很难做到的事情吗?
除了Lisp(ruby,scala)之外还有其他语言表示他们使用REPL(读取,评估,打印,循环),但不清楚REPL的含义是否与Lisp中的相同.Lisp REPL与非Lisp REPL有何不同?
我一直在使用Clojure一段时间,并希望创建一些比玩具更大更复杂的项目.我在过去的几年里一直在使用Java,并且已经习惯了IDE为我做的事情 - 编译了很多类,将它们打包在罐子里,为用户创建批处理文件以启动它们.
当我查看Clojure中的开发示例时,他们似乎是按照加载文件的方式进入REPL,看看它们是如何工作的,编辑文件,重新加载,重复.Nary在任何地方生成一个类或jar.在Stuart Halloway非常棒的"Programming Clojure"中,我找不到一个例如"gen-class"的例子.我使用的Clojure IDE(ClojureBox和enlojure NetBeans插件)似乎促进了相同的工作流程.
这是故意的吗?这些工具是不成熟还是我没有"得到它"?
我想听一些人们的工作流程示例,如果可能的话,他们创建了一些普通用户(而不是其他开发人员)使用的非平凡程序.
感谢您分享您的意见.