5 python shell groovy scala jython
我想得到社区对我们团队在不久的将来期待的语言选择的反馈.我们是一名软件开发人员,我在Oracle和SQL Server DBA团队中工作,支持在Oracle Application Server上运行的跨平台Java应用程序.我们拥有SQL Server和Oracle代码库,并支持Windows,Solaris和Linux服务器上的客户.
我们经常执行的许多任务都不够自动化,而且它们通过shell脚本往往更加自动化,在Windows上几乎没有相同的功能.不幸的是,我们现在遇到了在两个平台上重新开发脚本等问题.因此,我希望我们选择一种跨平台语言来编写脚本,而不是使用Bash,并在必要时笨拙地转换为Cygwin或Batch文件.
它需要是:
如果它可以在JVM上运行会更好,因为它几乎总是安装在每个服务器上(当然在所有应用程序服务器上),我们公司有很多Java开发人员,所以坚持使用JVM是有道理的.这不是唯一的,因为我知道Python是一种非常可行的语言.
我创建了一个选项列表,但可能还有更多:Groovy,Scala,Jython,Python,Ruby,Perl.
没有人有任何经验,除了我自己有很多Java和Groovy经验.我们正在寻找一些动态,易于获取的东西,可以毫不费力地使用SQL服务器和Oracle,具有一些XML简化功能,并且这不会成为DBA的挫折.我们中的许多人都非常倾向于Bash - 是什么能让我们远离这种上瘾?
人们对此有何看法?
谢谢!
克里斯
你可以选择Python.它的动态(解释)可在Windows/Linux/Solaris上使用,具有易于阅读的语法,因此您的代码维护很容易.还有用于Oracle交互的模块/库和各种其他数据库服务器.还有XML的库支持.所有7分都包括在内.
我认为你最好的三个选项是Groovy,Python和Scala.所有这三个都允许您在高级别编写代码(与C/Java相比).Python有自己非常适合的数据库绑定,而Groovy和Scala可以使用为Java制作的数据库绑定.
Python的优势在于它已经被广泛使用,因此它周围有大量的工具,库,专业知识等.它具有特别干净的语法,这使得它在美学上令人愉悦.缺点是它很慢(这可能不是你的问题),无类型(所以你有运行时错误而不是编译时错误),你不能真正在Jython和Python之间来回切换,所以你必须选择是否需要大量的Python内容,或者大量的Java内容,减去许多不错的Python内容.
Groovy的优点是你已经知道它并且它与Java库很好地互操作.它的缺点还在于速度慢和缺乏静态类型.(因此与Python相比,选择是:您是否重视Python的干净语法和更广泛的采用,或者您是否更多地使用在该环境中运行良好的语言来评估大量Java库?)
Scala的优点是它是静态类型的(即,如果代码通过编译器,它有更大的工作机会),速度快(如果你足够努力工作,就像Java一样快),并且与Java良好地互操作库.缺点是它为你做了更多的工作来使静态打字工作(尽管远远不如Java,同时更安全),并且Scala的规范风格是混合对象/功能混合感觉更多与其他两个不同(因此需要更多的培训才能充分利用IMO).与Groovy相比,问题在于熟悉和易于入门是否比速度和正确性更重要.
就个人而言,我现在几乎完成了我在Scala的所有工作,因为我的工作需要速度,因为编译器在编码中捕获了我常用的那些错误(因此它是我用过的唯一一种语言,当我没有大惊小怪的时候我把它们编译后代码块正确运行).但我在其他环境中使用Python有很好的经验 - 与大型数据库的接口似乎是一个很好的用例.
(我排除Perl更难维护,没有比Python更大的好处,我排除Ruby不如Python更强大,以保证不太直观的语法和较低的采用率/工具可用性.)
如果您想要一种动态语言,并且您的公司已经有很多 Java 开发人员,那么 Groovy 似乎是一个明显的选择,因为 Java 开发人员很容易上手(而且,您说您自己也有一些 Groovy 经验)。
Groovy 在 JVM 上运行,并且对使用 XML 提供出色的支持。它还提供了一种非常简单的语法来处理关系数据库。
它带有一个控制台和一个 shell(尽管我从不使用 shell),这使得测试/运行脚本或 Groovy 代码片段变得非常容易。