7

我现在正在学习 Perl。解释型语言的优缺点是什么?

4

9 回答 9

17

来自维基百科的公然副本,所以我将制作这个社区维基。

解释语言的优点

与编译语言相比,解释语言为程序提供了一定的灵活性。在解释器中比在编译器中更容易实现的功能包括(但不限于):

  • 平台独立性(例如 Java 的字节码)
  • 评估器的反射和反射使用(例如一阶评估函数)
  • 动态类型
  • 易于调试(更容易获得解释语言的源代码信息)
  • 小程序大小(因为解释语言可以灵活地选择指令代码)
  • 动态范围
  • 自动内存管理

解释语言的缺点

解释器的执行通常比常规程序执行效率低得多。发生这种情况是因为每条指令都应该在运行时传递解释,或者在较新的实现中,代码必须在每次执行之前编译为中间表示。虚拟机是性能问题的部分解决方案,因为定义的中间语言更接近机器语言,因此更容易在运行时进行翻译。另一个缺点是需要本地机器上的解释器才能使执行成为可能。

于 2009-10-22T23:20:52.957 回答
6

优点:

  • 快速原型设计(无写入、编译、执行周期)
  • 跨平台(假设每个平台都有解释器)

缺点:

  • 性能(不会像编译语言那样快)
于 2009-10-22T23:17:56.877 回答
2

最大的缺点?大多数人会说执行速度,但并不总是如此。如今,大多数现代解释语言在构建时将要解释的文件转换为中间状态,执行时就像任何其他语言一样转换为机器代码。如今,聪明的缓存在这些语言的虚拟机中很普遍,这应该不是什么大问题。这当然不是说性能不是解释语言的问题,只是它通常没有大多数人认为的那么糟糕。

请记住,尽管存在性能问题,但通常更容易以更少和更高效的代码实现与编译语言相同的任务,从而使编译期间的性能损失在程序的执行时间内可以忽略不计。

就我个人而言,最大的缺点是需要解释器在执行之前始终在场。这通常会降低可移植性,尤其是因为解释语言并不总是跨平台的。

于 2009-10-22T23:20:47.840 回答
1

缺点:

  • 最大的缺点可能是执行速度

临:

  • 最大的好处可能是周转时间,即代码测试迭代循环
于 2009-10-22T23:16:39.190 回答
1

明确地说,编译语言往往比解释语言具有更高的性能,因为编译排除了对运行时解释器的需求。

编译语言更适合商业桌面软件,因为源代码不随它一起提供。

解释性语言往往学起来更快一些,因为它们允许您快速编辑/运行/重复而无需等待编译器。根据我的经验,它们也往往更高级别,这也使它们更容易。

于 2009-10-22T23:18:14.117 回答
0

维基百科有一个关于优点和缺点的页面。任何显着高级的解释语言都可以实际编译成本机二进制文件,从而模糊了解释语言的优缺点之间的界限。

PERL 是一种模糊界限的语言。虽然它以强大的脚本语言而闻名,但您可以将其编译为原生语言。

于 2009-10-22T23:21:52.460 回答
0

PERL 等动态语言的“缓慢”可能不再是问题。这是关于动态语言领域最新趋势的精彩演示:

http://steve-yegge.blogspot.com/2008/05/dynamic-languages-strike-back.html

于 2009-10-23T00:26:05.200 回答
0

由于java是解释语言

优点:

  • 兼容性:Java 虚拟机赞同“一次编写,到处运行”这一概念。
  • 安全性:在 JVM 中运行的程序,因此如果发生任何故障,这不会影响操作系统文件。
  • 内存管理。

缺点:

  • Java 虚拟机有很多实现,例如在编写使用 Java 8 特性的程序时,该程序必须运行在 8 版本不少于的 JVM 上。
于 2017-07-15T17:05:16.247 回答
0

解释语言的显着好处是不必为每个硬件目标单独编译它。

缺点是它使代码执行速度变慢。

于 2020-04-05T11:20:07.387 回答