Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LISP是编译语言还是解释语言?_Lisp - Fatal编程技术网

LISP是编译语言还是解释语言?

LISP是编译语言还是解释语言?,lisp,Lisp,严格地说,我知道没有编译或解释语言 但是,一般来说,LISP是否用于编写Python、bash脚本和批处理脚本之类的脚本 还是C++、Java和C.java?/P>的通用编程语言? 有人能简单地解释一下吗?Lisp编程语言和Dartmouth BASIC的早期版本将是示例解释语言(解析源代码并直接执行其行为)。然而,CommonLisp(当前版本)是一种编译器语言 请注意,大多数Lisp编译器不是即时编译器。作为程序员,您可以调用编译器,例如在Common Lisp中调用函数COMPILE和CO

严格地说,我知道没有编译或解释语言

但是,一般来说,LISP是否用于编写Python、bash脚本和批处理脚本之类的脚本

还是C++、Java和C.java?/P>的通用编程语言?


有人能简单地解释一下吗?

Lisp编程语言和Dartmouth BASIC的早期版本将是示例解释语言(解析源代码并直接执行其行为)。然而,CommonLisp(当前版本)是一种编译器语言

请注意,大多数Lisp编译器不是
即时编译器。作为程序员,您可以调用编译器,例如在Common Lisp中调用函数
COMPILE
COMPILE-FILE
。然后编译Lisp代码

此外,大多数同时带有编译器和解释器的Lisp系统允许解释代码和编译代码自由混合执行


要了解更多详细信息,请检查传统上可以解释或编译LISP,其中一些可以同时运行。在某些情况下,编译将是一个类似JAVA的虚拟机

LISP是一种通用编程语言,但现在很少再这样使用了。在微代码LISP机器时代,整个操作系统,包括网络、图形和打印机驱动程序,都是用LISP本身编写的。例如,第一个IMAP邮件客户端完全是用LISP编写的


这种不同寻常的语法可能会使其他编程语言(如Python)更具吸引力。但是如果仔细观察,您可以在流行语言(如Perl)中找到受LISP启发的元素。

LISP是一种编译的通用语言,在现代使用中

澄清:

  • “LISP”现在被理解为“Common LISP”
  • 公共Lisp是ANSI标准
  • 公共Lisp有几种实现,既有免费的,也有商业的
代码通常经过编译,然后加载到图像中。整个系统的各个部分/文件的编译和加载顺序通常通过系统定义工具(现在主要指ASDF)来定义

大多数实现还提供了在启动时加载源代码的方法。例如:

sbcl --load 'foo.lisp'

这也使得使用lisp源文件作为“脚本”成为可能,即使它们很可能在执行之前编译。

第一个lisp编译器于1960年完成。除了雷纳的评论:一些lisp系统(我认为是CMUCL)确实没有解释器,但总是编译,即使是以交互方式键入的。我怀疑Racket也是这样工作的。@tfb:有一些只使用编译器的实现,但是CMUCL有一个解释器——尽管通常默认使用编译器。SBCL(CMUCL的一个分支)过去只有一个编译器,但一段时间以前添加了一个解释器。@RainerJoswig:你说得对,我忘记了细节。CMUCL有两个编译器(或者说Python可以发出字节码和本机代码),不是吗?(还有一名口译员)。当内存不足时,字节码这件事一定很重要(CMUCL在90年代初看起来非常庞大)。@tfb:CMUCL还特别支持编译文件或更大的模块。字节码编译器/运行时的优点是,字节码机器比本机代码生成器/运行时更易于移植。此外,从理论上讲,生成的字节码可以是可移植的。这是一个奇怪的问题:Python“用于编写脚本”,但大量的科学界依靠大量的Python基础设施来完成工作。我每天都在写Python代码来对TB级的数据进行后期处理。我投票结束这个问题,因为它是基于一个毫无意义的假设。虽然一种语言可以被编译、解释,或者两者兼有,但这并不意味着它有更多的通用性或特殊性。另外,这个问题在很多地方已经很容易回答了。啊,呃,不。通用Lisp现在也被用作通用语言。与Python相比,它的开销更小,在性能上与Java(或优化后的C)相当,这在语言内部相对容易实现)。其采用率低的原因主要是外部因素。@Svante,我公正地回答,涉及了编译器/解释器问题,并将LISP归类为通用语言。我想人们会投票反对我使用“很少”。因此,CommonLisp标记跟随者大约是上述其他语言平均值的1/200。这在当前和长期趋势数据中得到了证实。其他语言排在TIOBE前5位,Lisp排在28位,CommonLisp排在前50位之外。翻译他们的数字,LISP大约是1500个程序员中的1个,如果这是一种疾病,在美国将被归类为“罕见”。Peter Norvig对几种编程语言(Python和LISP)的性能比较包括:。在矩阵乘法或数组访问中,Python的速度大约是Lisp的100倍。我可以理解你的观点,语法或函数范式对初学者来说是有挑战性的,但是开销不是。