【发布时间】:2010-09-08 10:56:33
【问题描述】:
我是一名 Java 程序员,我喜欢我的编译器、静态分析工具和单元测试框架,这些工具可以帮助我快速交付强大而高效的代码。 JRE 也几乎无处不在。
鉴于这种情况,我看不出我为什么会选择使用 shell 脚本、vb 脚本等,无论任务多么小,如果我戴上我的其他帽子,比如我很酷的黑色系统管理员 fedora。
我不经常戴其他帽子,在什么情况下我应该选择脚本而不是编写编译代码?
【问题讨论】:
我是一名 Java 程序员,我喜欢我的编译器、静态分析工具和单元测试框架,这些工具可以帮助我快速交付强大而高效的代码。 JRE 也几乎无处不在。
鉴于这种情况,我看不出我为什么会选择使用 shell 脚本、vb 脚本等,无论任务多么小,如果我戴上我的其他帽子,比如我很酷的黑色系统管理员 fedora。
我不经常戴其他帽子,在什么情况下我应该选择脚本而不是编写编译代码?
【问题讨论】:
任何你认为对你最有效的方法!
我有一位同事似乎对每项任务都使用不同的语言; Perl 用于快速文本处理,PHP 用于小型内部 Web 应用程序,.NET 用于我们的主要产品,cygwin 用于文件系统。他更喜欢使用最适合手头任务的技术。
就我个人而言,我发现技术之间的上下文切换很痛苦。我的日常工作是在 .NET 中进行的,所以这几乎就是我认为的术语。对于大多数任务,我发现使用 SnippetCompiler 在 C# 中敲击某些东西比在 PowerShell 或脚本环境中破解更有效.
【讨论】:
如果您对 Java 感到满意,并且 JRE 无处不在,那么我会说继续使用它。然而,像 perl 和 python 这样的语言特别适合快速解决问题。我建议学习 perl 或 python,然后根据您的判断何时使用它。
【讨论】:
如果我想快速解决一个小问题,我倾向于使用脚本语言。代码税更小,而且,至少对我来说,结果来得更快。
【讨论】:
我会说它有意义的地方。如果您打开 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,因此您可以尝试 JVM 语言,如 Groovy、JRuby、BeanShell 等。Scala 的语法比 Java 轻得多,有一个 REPL,是静态类型的并在 JVM 上运行 - 您可以试一试好吧。
【讨论】: