何时使用脚本语言?

时间:2008-12-29 10:01:48

标签: scripting-language

何时应该使用脚本语言而不是像C ++这样更详细的编译语言。 C#还是Java?

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

您应该在... BLANK ...

时使用脚本语言

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

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

当您需要C使用脚本语言Z

10 个答案:

答案 0 :(得分:32)

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

答案 1 :(得分:21)

将脚本语言添加为较大编译系统的组件是一种常见模式:系统的编译部分针对执行速度进行了优化,但更难修改(因为它必须是编译和重新加载),而系统的脚本部分针对灵活性进行了优化,它运行速度较慢,但​​任何人都可以通过文本编辑器快速轻松地修改。

如果您希望使应用程序的部分功能易于自定义,则可以使用此模式。

答案 2 :(得分:9)

这有点宗教问题。我使用脚本语言进行临时任务,例如:

  • 在一万行日志中查找特定项目
  • 生成效果图
  • 数据缩减 - 将文本文件转换为所需格式
  • 从数据库获取特定数据子集并将其打包为文本文件

所有这些也可以用编译语言完成,但对我来说,使用脚本语言更快更容易(我使用ruby,但PERL和python都很好)。

答案 3 :(得分:6)

我倾向于使用脚本语言进行快速原型设计,实验和数据争用。例如,如果我有一堆文本文件需要预处理并构建到数据库夹具中作为一次性操作,我通常会编写脚本。

然而,如今,“脚本”和“编译”之间的界限变得模糊,使用了groovy和ruby等语言。对于上面提到的任务,我将使用ruby但是我还将使用它来构建带有rails的生产webapp。我将用java编写桌面应用程序,但groovy允许我混合使用脚本。即使用C / C ++编写,我发现一个有用的模式是嵌入一个特定于域的脚本语言(例如tcl,尽管我不太喜欢那种语言)。

语言的实际选择是我认为是一种宗教选择,尽管有一些显而易见的权衡(例如可读性 - perl很有用,但是很容易写出神秘的脚本。在某些方面它是'写' - 只有'语言:-)。在过去,我使用过bash + awk + ​​sed,一些perl,ruby等等......对于一次性任务,这主要取决于你和你团队的其他成员所熟悉的事情。这些天我有意识地选择使用ruby,即使我在bash / awk / sed中更快地做同样的事情,但这只是为了通过尽可能多的任务来提高我的ruby技能。

答案 4 :(得分:6)

这是我的层次结构:

尝试使用grep。

如果你不能用grep做,请使用sed。

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

如果awk不够强大(或开始变得非常讨厌),请使用C,C ++或您选择的其他完整的通用编程语言。

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

答案 5 :(得分:2)

当特定任务符合语言的优势时(即使用perl进行字符串处理,使用ruby进行Web开发,或者诸如此类),我发现脚本语言非常有用。特别是对于Web开发,脚本语言具有更快地显示代码更改结果的属性。

在某些情况下,您可以将编译语言与脚本语言混合使用 - 就像在某些游戏中一样。当您在脚本语言中比在编译语言中表达更少,更清晰和更简单的行为时,这样做很有用。例如,C ++是一种非常富有表现力的语言 - 但它的开发成本高于lua。

答案 6 :(得分:2)

我不认为使用脚本语言是一般规则。脚本语言很容易开发,但有时很难进行维护,尤其是当脚本应该在不同的平台(操作系统)下运行时。

脚本语言的优点当然是:

  • 您可以让用户(或客户)自行更改脚本中的内容。
  • 易于开发 - 大多数脚本语言都不是类型安全的,当然在小型应用程序中开发更容易,当然
  • 但是 - 它与平台无关......

对比是:

  • 它是开源的 - 每个人都可以看到你的代码,并可以在他们自己的竞争产品中使用你的知识......
  • 它在运行时缓慢......

答案 7 :(得分:0)

我使用脚本语言挖掘数据并将其作为cron作业提供给数据库。它更容易,因为我可以使用unix中的windows scheduler或crontab轻松设置它们,并且由于perl中的regex等一些关键功能,我发现它更容易编写。

此外,CPAN还向我提供了数以百万计的模块......

答案 8 :(得分:0)

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

答案 9 :(得分:0)

如果您计划编写一次或保持简单,则使用脚本语言。一旦项目变大,强类型语言就会好得多。想一想,在初始开发与集成和维护的大项目上花了多少时间。您是否需要维护大量脚本或强类型语言来强制您的类型行为?