用于实用程序脚本的脚本语言是什么?

时间:2010-02-28 07:37:20

标签: scripting cross-platform

我目前正在开发一个大项目,并且很快就会需要一个脚本语言来实现实用程序脚本,比如从源代码部署完整项目,检查和修复数据库,构建一个可随时部署的bundle等等。该项目是用PHP编写的,我考虑过使用它,但我认为它不适合这项任务。

我主要要求的是,按照重要性命令:

  1. 在三大操作系统中可移植:Windows,Linux和OS X
  2. 许多好的库可用,从文件和目录操作到数据库访问。虽然网络可能是(通过FTP或HTTP下载一些东西),但不需要GUI。一个很大的优点是能够本地检查Subversion存储库。
  3. 需要良好的社区支持。 Python和Ruby都非常出色。
  4. 可扩展性:如果没有好的库可以执行某些操作,我可以轻松地实现一个或使用本机解决方案(执行程序,调用本机函数)。
  5. 易于部署:在Windows(XP& 7,Server 2003 +),Linux(CentOS 5.2,Ubuntu和Ubuntu Server 8.04+)和OS X(10.5+)上启动和运行是多么容易。
  6. 学习容易。虽然所有脚本语言对于任何值得他学习的程序员来说并不难学,但我对那些相当快速且易于学习的程序员感兴趣。
  7. 这就是我现在所能想到的。我已经回顾了Python和Ruby; Python满足所有要求,Ruby似乎也是如此,尽管我不确定Windows上的易部署性和库的可用性。但是,我也在寻找使用这种用您选择的语言编写的脚本的经验。

9 个答案:

答案 0 :(得分:10)

你说过:Python符合所有要求。这是我的“投票”,虽然我可能有点偏颇。

修改 :(根据我的第一手经验,在相关任务的上下文中)

  • 我没有从Python构建版本的经验(我发现Ant甚至为这个特定任务做了更好的工具)。
  • “弄乱”数据库:轻而易举!
  • 移动文件,检查目录等:轻而易举!

对于脚本类型的活动而言,看似骄傲或缺乏经验的风险,我从来没有在角落里画过Python不允许我离开的。

然而,Python的可能“批评”有点自相矛盾的是,它的广泛的包库(除了其慷慨的标准库);虽然拥有所有这些“第三方”库是件好事,但有时很难衡量一些这些软件包的成熟度和有效性,有时候会浪费一些时间来选择这些(或者决定是否“从头开始”编写) 。然而,由于口译员的互动性,这种评估可以足够快。

答案 1 :(得分:2)

Ruby很不错,但是python很棒。 Python提供了很好的文档,易于学习,拥有大型社区,运行非常有用的标准库,将在大多数类似unix的系统上预先安装,并且在Windows上安装并不会太痛苦。

答案 2 :(得分:1)

http://ant.apache.org/

我将它用于Java和PHP项目。并回答你的观点:

  • 便携性:100%
  • db,networking,i / o,svn的库:是的,有些是内置的,其余的你使用扩展
  • 社区:许多书籍和在线资源
  • 可扩展性:是的,ant被设计为可扩展的
  • 安装:死得轻松
  • 学习的容易性:非常简单

答案 3 :(得分:1)

Python是一种很棒的脚本语言,非常便于携带。当我的脚本的可移植性是主要问题时,这是我的选择。

但便携性很少是我的主要问题。我的大多数脚本都与操作系统问题密切相关。因此,当我知道我在Windows上运行并且可能没有python时,我在Windows Script Host下使用JScript。

答案 4 :(得分:1)

Python,毫无疑问。它符合您的所有目标,并且具有简洁易学的优点。

答案 5 :(得分:1)

iconiK,

此答案仅与您的问题在外围相关,但您收集的信息多于解决此问题所需的信息。您的分析和初步研究非常令人印象深刻,推迟决策的成本高于Python相对于Ruby的边际价值,反之亦然

  

我也在寻找你的经历

我的经验是通过研究可以了解技术数量的限制,我的直觉告诉我你已经达到了这个限制。如果你停止研究并继续你的项目,你会更好。如果你能做一个小型的试点项目,那将是很好的,但如果没有,你就可以通过潜水了解更多,而不是通过提问来学习。

可能我最近的一个重要经验是,在1999年,我必须决定一个主要的编译器项目是用Objective Caml还是Haskell来编写的。我们选择Caml,有很多次我希望我选择Haskell,但事实上在1999年Caml可能是更好的选择,当然我们用这个编译器做了很多好的工作。最糟糕的选择是等待收集更多信息。

我认为这里的另一个教训是,因为没有技术是完美的,无论你选择何种技术,你都会感到遗憾。 仅仅因为你有遗憾并不意味着你做出了“错误”的选择。

健康状况良好的代码!

答案 6 :(得分:0)

我在Windows上使用Perl和Python广泛编写脚本,因此我会毫不犹豫地使用它们进行部署。我会选择Python来获得更平滑的学习曲线。

答案 7 :(得分:0)

Perl,除了学习曲线。可移植性不是问题,对于有CPAN的库,社区是完美的,调用外部程序不是问题,你总是可以包装一个C库,安装是不费脑子的。

答案 8 :(得分:0)

Python非常适合这种事情。我只是想提请你注意Tcl,这对于通用脚本和文件处理来说非常棒。 Wikipedia entry about Tcl