何时使用脚本语言?

28

何时应该使用脚本语言而不是更冗长的编译语言,例如C++、C#或Java?

为了让问题更有趣,我们可以这样回答:

当......BLANK......时,您应该使用脚本语言。

当您需要 A 时,请使用脚本语言 X。

当您需要 B 时,请使用脚本语言 Y。

当您需要 C 时,请使用脚本语言 Z。


2
我不明白为什么人们会对这样的问题投反对票,所以我会点赞。最近几天似乎所有问题都被大量投反对票 - 很烦人。 - mstrobl
2
说实话,我并不认为这是一个实质性的问题。无论它是开放式的、主观的,还是被保罗的回答总结了。 - Daddy Warbox
什么问题没有主观成分呢? - Alex Baranosky
1
编程语言是工具。工具有它们最擅长做的事情。这是纯客观的。 - Alex Baranosky
@AlexBaranosky:单词“最好”是罪魁祸首... - GManNickG
10个回答

33

如果开发速度比执行速度更重要时,您应该使用脚本语言。


第二部分的问题如何处理具体细节,例如A、B或C? - Alex Baranosky
1
我假设你的要求是希望答案以所建议的任一格式之一呈现,而不是所有格式都包含。 我认为我已经按照问题的要求回答了:“何时应该使用脚本语言?”(而不是“应该使用哪种脚本语言。”) - Paul Stephenson
这基本上概括了我能想到需要脚本语言的任何真正原因。 - Daddy Warbox
这个答案完全不正确。1)选择脚本语言的原因是当你想要一种弱类型编程语言而不是强类型编程语言时。2)语言与性能没有任何关系,编译器才有关系。脚本语言可以编译成运行时指令。 - Zombies
这取决于开发者。对我来说,使用我喜欢的编译语言进行开发更快,因为我不太熟悉脚本语言,无法快速开发...然而更新会更困难,因为需要进行完整的重新编译,而不仅仅是更改代码。 - RayLoveless

22
将一种脚本语言作为一个更大的编译系统的组件添加是一个常见的模式:该系统的编译部分被优化以提高执行速度,但更难修改(因为必须编译和重新加载),而该系统的脚本部分被优化以提高灵活性,虽然速度较慢,但任何人都可以使用文本编辑器快速轻松地进行修改。
如果您想要使应用程序的某些功能易于自定义,则可以使用此模式。

10

这略带有宗教色彩。我使用一种脚本语言来处理临时任务,例如:

  • 在一万行的日志中查找特定项
  • 生成性能图表
  • 数据降维 - 将文本文件转换为所需格式
  • 从数据库获取特定子集数据并将其打包为文本文件

所有这些任务也可以用编译语言完成,但对我而言,使用脚本语言(我使用 Ruby,但 PERL 和 Python 也很好)更快更容易。


6
我倾向于使用脚本语言进行快速原型制作、实验和数据整理。例如,如果我有一堆文本文件需要预处理并构建成数据库夹具作为一次性操作,我通常会编写脚本来完成这项任务。
然而,现在“脚本”和“编译”之间的界限正在变得模糊,像Groovy和Ruby这样的语言就是例子。对于上述任务,我会使用Ruby,但我也会用它来构建基于Rails的生产Web应用程序。我会用Java编写桌面应用程序,但Groovy也允许我混合使用脚本。即使在使用C/C++编写时,我发现嵌入领域特定的脚本语言(例如Tcl,虽然我不太喜欢这种语言)是很有用的模式。
实际选择哪种语言我认为是一种信仰选择,尽管有些权衡是显然的(例如可读性——Perl很有用,但很容易编写晦涩的脚本。在某些方面它是一种“只写”语言:-)。过去我曾经使用过bash+awk+sed、一些perl、ruby等等...对于一次性任务,主要取决于你和团队对哪种语言更加熟悉。我现在有意选择使用Ruby,即使我在bash/awk/sed中完成同样的任务可能会更快,但这只是为了通过尽可能多地使用Ruby来提高我的Ruby技能。

6

这是我的层次结构:

使用grep尝试解决问题。

如果不能使用grep,使用sed。

如果sed不够强大,使用awk。

如果awk不够强大(或开始变得非常混乱难看),使用C、C++或者其他你选择的全能通用编程语言。

请注意,在awk和C之间没有“脚本语言”。这是有意为之的。


2

我认为脚本语言非常有用,尤其是在特定任务适合该语言的优势时(例如使用perl进行字符串处理,使用ruby进行Web开发等)。特别是在Web开发方面,脚本语言具有更快地显示代码更改结果的属性。

有些情况下,您会将编译语言与脚本语言混合使用,比如在某些游戏中。当您可以在脚本语言中更快、更干净、更简单地表达较少量的行为时,这样做非常有用。例如,C++是一种非常表达力强的语言,但其开发成本比lua等语言要高。


2
我认为没有通用的规则来决定何时使用脚本语言。脚本语言易于开发,但有时很难维护,尤其是当脚本需要在不同平台(操作系统)下运行时。
脚本语言的优点当然是:
- 您可以让用户(或客户)自己更改脚本中的内容。 - 它易于开发 - 大多数脚本语言都不是类型安全的,这使得在小型应用程序中更容易开发。 - 但它是平台无关的...
缺点包括:
- 它是开源的 - 每个人都可以看到您的代码,并可以在他们自己的竞争产品中使用您的知识... - 运行时速度较慢...

0

如果您计划编写一次或保持简单,则使用脚本语言。一旦您的项目变得更大,强类型语言会更好。想想看,在一个大型项目中,花费多少时间进行初始开发与集成和维护。您宁愿维护一组大型脚本还是强类型语言来强制执行您的类型行为?


0

我使用脚本语言来挖掘数据并将其作为cron作业馈送到数据库中。这样做更容易,因为我可以轻松地在Windows计划程序或Unix的crontab中设置它们,并且由于perl中的一些关键功能(如regex),我发现编写更容易。

此外,我能够从CPAN获取数百万个模块...


0

当交互操作很重要时,例如命令行 shell 或者你正在为其他用户导出简单操作的功能时,请使用脚本语言。他们不应该编译;脚本就足够了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接