我知道Powershell通常被认为是Windows的IT管理语言,但是为什么/何时会选择F#,这是强类型和'intellisensed'?
答案 0 :(得分:6)
我选择F#,因为它更适合我所工作的公司,将要使用它的团队,以及手头的任务。否则我会选择别的东西。
如果没有更多详细信息,我的具体情况不会更具体,但我可以提出一些问题:
相关提示:不要在生产代码和基础架构中开发大量语言。
通过各种方法尝试找到解决您遇到的问题的最佳语言,但如果您在五年内发现有人用一种不再被任何人理解的语言编写了解决方案的核心组件公司,你可能手上有一个严重的问题。
我个人的经验法则(当然也有例外)是项目应该有一种核心语言和一种脚本语言来将它们整合在一起。应首先选择这些语言以适应问题域,其次是最大限度地提高整个团队的熟练程度。 <宠物语言'应该在生产代码或基础设施中强烈 。
答案 1 :(得分:3)
这取决于您的问题以及谁将维护脚本。
PowerShell在管理领域非常强大(使用文件,活动目录,csv / xml,计算机等),但它的编程能力非常有限(例如泛型的情况)。 PowerShell中的线程并不是那么容易。但没有人希望管理员他们会使用线程。相反,有后台工作可以满足管理员的需求。
另一方面,F#是真正的编程语言,这意味着它的级别非常低,因此冗长(与PowerShell相比)。用PowerShell编写的一些任务是单行的,而在F#中你会编写很多代码。除此之外 - 你将如何在远程计算机(Invoke-Command -computer myserver ...
)上实现运行命令?
如您所见,这取决于您的问题。
非常重要的还有谁将维护脚本。您可能正在度假,您的同事需要编辑脚本。两种语言都需要一些时间来学习。恕我直言,学习PowerShell更容易;以功能方式思考需要弯腰。
答案 2 :(得分:1)
在这个时候,选择在F#中编写脚本可能是一个坏主意,如果他们可能需要其他人...
明显的例外,当然,如果您是一名开发人员从事F#是主要语言的项目,那么这将意味着每个重要的人将能够运行和编辑您的脚本。
但是,我必须说,我认为即使在这种理想/特殊情况下,如果你的脚本任务涉及任务,那么使用F#可能更多工作在PowerShell中存在预先存在的cmdlet(即:文件系统任务,注册表,数据库维护,活动目录,交换,列表不断进行)。当然,如果您使用这些脚本作为学习语言的机会,您可能仍然会选择这样做,但请记住第1点和第1点。 2; - )