【发布时间】:2008-12-22 10:45:07
【问题描述】:
我对 F# 提供的内容非常感兴趣,并且非常渴望开始基于时间的投资来学习它。但是,F# 工作是否会开始实现,还是会是一种浪费的投资?
【问题讨论】:
标签: f#
我对 F# 提供的内容非常感兴趣,并且非常渴望开始基于时间的投资来学习它。但是,F# 工作是否会开始实现,还是会是一种浪费的投资?
【问题讨论】:
标签: f#
冒着引发一场激烈战争的风险,我喜欢将 F# 视为一个更好的 OCaml,具有更少的陷阱和一个更好的库。我不觉得很难相信 F# 会吸引 OCaml 社区的大部分人跨入 .NET Land。
(这种策略似乎与微软试图用 J# 吸引 Java 开发人员的方法非常相似,但结果却失败了。希望 F# 不会以同样的方式失败。)
至少根据我的经验,.NET 软件商店倾向于使用 VB.NET 和 C#,而排除所有其他语言。 VB.NET 和 C# 尤其畅销,因为:
他们拥有非常完善的 RAD 和 GUI 支持。 F# GUI 需要手工编写,因此该语言不适合开发大型、复杂的用户界面。
现有的文档是用 C# 和 VB.NET 编写的,让新手程序员在学习 .NET BCL 的同时更容易学习 C# 和 VB.NET。 F#程序员需要脑补C#/VB.NET,所以至少懂C#已经是学习F#的先决条件了。
VB.NET/C# 借鉴了 Java 和 C++ 建立的熟悉的命令式编程风格。函数式编程远远超出主流,这减缓了程序员从命令式语言到 F# 的交叉。
至少,我对 F# 持乐观态度。它有一些你在其他语言中看不到的东西:
它在博客中有大量媒体曝光,我在最近参加的 5 次 .NET 会议中看到了 F# 演示。
我虔诚地关注编程博客,看起来整个编程社区已经对基于锁的多线程方法感到沮丧。多线程中的可变状态是一个杀手,这促使许多程序员切换到使用不可变数据结构的无锁风格。 F# 中的不变性比 C# 更自然,F# 中的异步工作流使多线程代码非常容易推理。
F# 在某些任务上确实优于 C#。例如,在 100% 的情况下,任何涉及将 XML 或源代码转换为抽象语法的事情在 F# 中都容易几个数量级。
随着每个新的开发,C# 变得越来越“实用”。这有助于将函数式编程更多地带入主流并被广泛接受。虽然您可以以函数式风格编写 C#,但大多数人发现它非常笨拙,尤其是在涉及大量泛型类型时。就好像函数式特性是事后才添加的——使用 F# 等真正的函数式语言编写函数式风格更容易。
最重要的是,F# 不仅仅是另一个具有不同语法的 C# 克隆。我的公司使用 F# 来补充我们现有的 C# 代码库,因为它提供了一组全新的工具,而这些工具在 C# 中并不现成。
如果 F# 成为主流,我想它将以最后一个要点中提到的方式使用,作为 C# 和 VB.NET 的配套语言。人们不会采用 F#,因为它是 C#/VB.NET 的优越替代品,当人们不再使用 One True Language™/“一切看起来都像钉子”的方法来编写软件时,他们会使用 F#。
【讨论】:
它将成为 Visual Studio 10 的一部分,因此知道它不会有什么坏处
【讨论】:
我怀疑函数式编程语言是否会非常流行。但是,F# 很容易成为最成功的函数式语言。它背后有一个庞大的库(即 .NET CLR),它与非常流行的语言(C#、VB 等)无缝集成,不久之后它将在世界上最流行的 IDE(Visual Studio)中得到支持。
我不明白花时间学习 F# 会浪费多少时间。您始终可以从 C# 调用 F# 组件。此外,您还可以学习一种新的编程思维方式,无论您使用哪种语言,都可以随身携带。
【讨论】:
我去年看过它,它在我今年真正进入的语言列表中。所以我会说它肯定会成为主流。
我主要是在 Microsoft 开发人员世界中谈论。
【讨论】: