【问题标题】:Is F# going to become a mainstream language? [closed]F# 会成为主流语言吗? [关闭]
【发布时间】:2008-12-22 10:45:07
【问题描述】:

我对 F# 提供的内容非常感兴趣,并且非常渴望开始基于时间的投资来学习它。但是,F# 工作是否会开始实现,还是会是一种浪费的投资?

【问题讨论】:

    标签: f#


    【解决方案1】:

    冒着引发一场激烈战争的风险,我喜欢将 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#。

    【讨论】:

    • 很好的答案 - 谢谢。 =)
    【解决方案2】:

    它将成为 Visual Studio 10 的一部分,因此知道它不会有什么坏处

    See this

    【讨论】:

      【解决方案3】:

      我怀疑函数式编程语言是否会非常流行。但是,F# 很容易成为最成功的函数式语言。它背后有一个庞大的库(即 .NET CLR),它与非常流行的语言(C#、VB 等)无缝集成,不久之后它将在世界上最流行的 IDE(Visual Studio)中得到支持。

      我不明白花时间学习 F# 会浪费多少时间。您始终可以从 C# 调用 F# 组件。此外,您还可以学习一种新的编程思维方式,无论您使用哪种语言,都可以随身携带。

      【讨论】:

      • 取决于你认为什么是函数式语言。有了 lambda 并且没有尾调用,C# 现在的功能与 Scala 一样,当然,它是世界上最流行的语言。
      【解决方案4】:

      它在一些领域(或 OCaml)相当普遍 - 例如金融或其他统计分析。但是,我严重怀疑它是否会突然在主流代码中脱颖而出。这里更大的问题之一是,由于 C# 变得更实用(并且希望在 C# 5.0 中具有更好的不变性),它与 C# 等常规 .NET 语言的区别越来越小。

      另请参阅herehere

      【讨论】:

        【解决方案5】:

        我去年看过它,它在我今年真正进入的语言列表中。所以我会说它肯定会成为主流。

        我主要是在 Microsoft 开发人员世界中谈论。

        【讨论】: