【问题标题】:What (scripting) language to learn if I've already started with PowerShell?如果我已经开始使用 PowerShell,要学习什么(脚本)语言?
【发布时间】:2010-02-21 14:32:40
【问题描述】:

前段时间我开始使用非常棒的 PowerShell。我几乎可以编写所有我知道的代码,我可以使用 .NET 框架、WMI,甚至 WIN API。管道等功能对我编写易于管理和可读的代码有很大帮助。 V2 增加了高级功能、模块、后台作业、远程处理(哇)等。

正如我所说,我几乎可以使用 PowerShell 完成所有工作,但我想学习一门新语言。主要原因是进一步的自我教育。其他原因(不那么重要):

  • 一些限制(例如,在 PowerShell 或泛型支持中使用线程并不容易)
  • 速度(这可能是将所有内容包装到 PSObjects 而不是直接使用对象的成本)
  • 跨平台开发(例如,我可以在 Symbian 上运行 Python,而这可能无法使用 PowerShell)

您会向我推荐哪种语言在某些方面可以击败 PowerShell? 例如在可读性、语言一致性、文档、实用性、库、稳定性、WTF 时刻...
如果它能够处理我指出的限制,那就更好了。

我更喜欢脚本语言,因为它有 REPL 循环,而且它不太冗长,例如C#,但这不是必需的。

我快速浏览了 IronPython。主要原因是托管在PDC 2009 上。但是,我想念管道,与 PowerShell 相比,它过于冗长且有些笨拙。


我的背景:我曾使用过以下语言(至少作为初学者):使用 c#、c++、javascript、tsql。我快速浏览了一下 python,但这并没有说服我尝试一下(可能是一个错误)。

我认为这个问题不应该结束,因为它特定于 PowerShell 并且与其他(脚本)语言比较。如果您投票支持关闭,请至少留下评论原因。

【问题讨论】:

    标签: programming-languages powershell scripting


    【解决方案1】:

    虽然 F# 本身不是“脚本”语言,但值得一看。它确实支持管道 (|>) 和许多其他更高级别的功能,例如模式匹配。 Visual Studio 中提供了一个交互式控制台以及一个独立的控制台交互式提示。 F# 的功能性质也有点“令人费解”,但以一种很好的方式。 :-)

    【讨论】:

    • 我打算买 Tomas Petricek 写的书Real-World Functional Programming。但到目前为止,我认为它是一种必须编译源代码的语言。是否可以存储 f# 脚本并运行 then 以及 ps1?
    • 我不久前对那本书的手稿进行了校对,现在我刚刚开始出版发行的书。到目前为止看起来不错。顺便说一句,您可以使用 fsi.exe 运行未编译的脚本文件,例如fsi hello.fsx
    • F3 绝对是扩展知识的好方法,因为它为大多数语言的主要面向对象世界添加了函数式编程方面。我没怎么用过它,但我看过第 9 频道的一些视频,而且微软正在大力推动它。 channel9.msdn.com/shows/Going+Deep/…
    【解决方案2】:

    如果您想要另一种 脚本 语言,那么我建议您使用 VB 脚本(以便能够阅读您将找到的所有 Windows 脚本示例)或 JavaScript(补充用例:Web 客户端编程是一个不同的发展领域)。

    您同样可以查看 C#:既可以编写 .NET 代码,也可以扩展 PowerShell。它还将更容易理解 .NET Framework 的功能(PowerShell 中的大多数框架都没有示例,但 C# 示例无处不在)。

    【讨论】:

    • 感谢 Richard 您的回答,我希望至少有一个 ;) 事实上,我是一名 c#/web 开发人员,所以在某种程度上我知道 JavaScript。但是,对于我的目的(Posh 强大的领域——文件、注册表、xml、下载 Web 内容、发现外部程序集......)它并不那么合适。我将编辑问题。我完全同意,对于某些了解 PowerShell 的人来说,学习 c# 是一个巨大的飞跃。
    【解决方案3】:

    不确定您测试的是哪个版本的 IronPython,但我强烈建议您再看一遍。 IronPython 的最新版本是根据 2.6 标准构建的,这是大多数其他用户正在使用的 python 版本。它可能比某些脚本语言更冗长,但对我来说更像是一种完整的编程语言,比如 C#,而不是脚本语言。在 IronPython 中使用 classesmultiple threads 比在 Powershell 中要容易得多。此外,您还可以像在 Powershell 中一样使用 .NET 库和程序集。 (对于跨平台代码,您只需要坚持使用 python 类)

    我的典型方法是当我需要一起破解某些东西或执行系统管理任务(文件、注册表、wmi 等)时使用 Powershell,如果它更复杂或小型代码项目,则使用 IronPython,然后使用 C# 进行商业等级代码。它们各自提供了不同的思维方式(管道、动态类型、静态类型),但都使用相同的基本 .NET 库,因此在语言之间切换时我不必弄清楚如何再次解析日期时间。

    至于您的要求,IronPython/python 似乎非常适合他们:

    1. 可读性和一致性为two primary goals of python
    2. 语言文档很好,代码文档是pillar of python
    3. 实用性,库:您可以获得 .NET 的全部功能,就像您在 Powershell 中可以做的一样
    4. 稳定性:最新的 IronPython 非常稳定(Resolver One 使用并完全使用 IronPython 构建)
    5. WTF 时刻...无法帮助您,但它仍然是 REPL,因此您至少可以四处寻找问题所在:-P

    我想说 IronPython 严重缺乏的一个领域是工具支持。 Powershell 有一些great script editors,但到目前为止,我为 IronPython 找到的最好的编辑器是 Notepad++ 的组合,而且奇怪的是,Resolver One 内置了 python 控制台,它具有不错的代码完成功能,并且很容易将数据输出到网格因为它是一个电子表格应用程序。此外,您有时会遇到“生活在两个世界中”的问题,其中有一种 Python 方式来做某事,而 .NET 方式来做某事,您必须做出选择(兼容性与 .NET 熟悉度)。虽然 IronPython 可用于简单的脚本编写,但如果您主要处理简单的文件、注册表或 xml,那么 Powershell 是最理想的选择。 Ironpython 只是有助于填补纯脚本语言和完整编程语言之间的空白。

    希望对您有所帮助。我的博客上有一些IronPythonPowershell 的例子。我现在只使用 IronPython 大约一年,但是来自 C# 背景,了解动态语言编程的工作原理非常有趣。此外,TryPython.Org 站点是直接从浏览器开始使用 IronPython 的好方法!

    祝你好运!

    【讨论】:

    • Greg,你说服我再给 IronPython 一次机会 ;) 我研究 IPy 的另一个原因是有可能在 c# 中托管它并提供某种插件机制 - 调用 IPy 脚本可以改变 c# 对象的状态(在我的问题中有一个来自 PDC 的截屏链接)。你以某种方式证实了我的怀疑 PowerShell 是很棒的语言 :)
    【解决方案4】:

    IronRuby 怎么样? Ruby 通常被认为是一种令人愉快的编程语言,而且 IronRuby 项目有 Microsoft 的支持,因此它有朝一日可能成为一种“合适的”.NET 语言。

    虽然还处于早期阶段 - 它似乎还没有为实际使用做好准备。

    【讨论】:

    • IronRuby 提供了什么 PowerShell 没有的?只是好奇,因为我对 (Iron)Ruby 一无所知。那么 IronPython 不是比 IronRuby 更好吗? IronPython 似乎将作为 C# 或 Visual Basic 集成到 VS 中。
    • IronPython 非常稳定并且已经在商业应用程序中使用,但 IronRuby 也不甘落后。他们的目标是在不久的将来与其他 Ruby 平台保持稳定并具有竞争力。
    猜你喜欢
    • 2010-09-12
    • 1970-01-01
    • 2010-11-09
    • 2010-11-05
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 2011-10-04
    • 2010-11-19
    相关资源
    最近更新 更多