我是一名 Java 程序员,我喜欢我的编译器、静态分析工具和单元测试框架,这些工具可以帮助我快速交付健壮和高效的代码。JRE 也几乎无处不在。
鉴于这种情况,我看不出为什么我会选择使用 shell 脚本、vb 脚本等,无论任务多么小,如果我戴上我的其他帽子,比如我很酷的黑色系统管理员 fedora。
我不经常戴其他帽子,在什么情况下我应该选择脚本而不是编写编译代码?
如果您对 Java 感到满意,并且 JRE 无处不在,那么我会说继续使用它。然而,像 perl 和 python 这样的语言特别适合快速解决问题。我建议学习 perl 或 python,然后根据您的判断何时使用它。
如果我想快速解决一个小问题,我倾向于使用脚本语言。代码税更小,而且,至少对我来说,结果来得更快。
任何你认为对你最有效的东西!
我有一个同事,似乎每项任务都使用不同的语言。Perl 用于快速文本处理,PHP 用于小型内部 Web 应用程序,.NET 用于我们的主要产品,cygwin 用于文件系统。他更喜欢使用最适合手头任务的技术。
就个人而言,我发现技术之间的上下文切换很痛苦。我的日常工作是在 .NET 中进行的,所以这几乎就是我认为的术语。对于大多数任务,我发现使用 SnippetCompiler 在 C# 中敲击某些东西比在 PowerShell 或脚本环境中破解更有效.
我会说哪里有意义。如果您打开 IDE、编译脚本等比编辑脚本文件并完成它比使用脚本文件花费更长的时间。如果您不打算经常更改内容并且在 Java 编码方面更快,那么请走那条路 :)
编写脚本通常比编译程序更快。您不必担心不同平台和环境之间的可移植性。shell 脚本几乎可以在大多数平台上的任何地方运行。因为您是一名 java 开发人员,并且您提到您在任何地方都有 java,您可能会看到 groovy ( http://groovy.codehaus.org/ )。它是一种用 java 编写的脚本语言,能够使用 java 库。
我看到它的方式(其他人不同意)你的所有代码都需要可维护。最小的有用代码集合是由一个人维护的。即使这也受益于您提到的语言和工具。
但是,显然在某些任务中,专门的语言比单一的通用语言更有优势。
如果你可以用 Java 更快地编写它,那就去吧。
只需尝试并了解各种脚本语言可以做什么。
例如,当您可以使用 bash 单行代码做同样的事情时,不要制作完整的 Java 应用程序。
权衡工具对弹出打开文本编辑器以进行快速编辑与打开 IDE、重新编译、重新部署等的重要性。
当然,首要指令应该是“使用任何你喜欢的东西”。如果 Java 能够按时正确完成工作,请坚持下去。但是许多脚本语言可以为您节省一些时间,因为它们适应不同的问题。如果您使用正则表达式,那么脚本语言非常适合。如果您要使用 shell 命令,那么脚本很好。
每当我写一些小的东西时,我都倾向于使用 Ruby 脚本,因为它写起来很快,易于维护,并且(使用 Gems)很容易在不需要使用 JAR 或任何东西的情况下添加额外的功能。当然,您的里程会有所不同。
归根结底,这是一个只有您自己才能回答的问题。基于您说“我看不出为什么我会选择使用 shell 脚本,......”的事实,那么您现在可能永远不应该选择它。
但如果我是你,我会选择一种脚本语言,如 python、ruby 或 perl,并开始尝试用这种语言解决其中的一些小问题。随着时间的推移,您会开始感觉到什么时候编写一个快速脚本比构建一个完整的解决方案更合适。
我使用脚本语言编写程序,这些程序预计不会在几次执行之后被维护。这些语言中的大多数都使用样板语法,并且确实具有 REPL。这两个特性都支持快速原型制作。
由于您已经了解 Java,因此您可以尝试像 Groovy、JRuby、BeanShell 等 JVM 语言。Scala 的语法比 Java 轻得多,有一个 REPL,是静态类型的并在 JVM 上运行——您也可以尝试一下。