我对F#提供的内容非常感兴趣,我非常希望开始学习它所需的基于时间的投资。然而,F#工作将开始实现还是浪费投资?
答案 0 :(得分:21)
冒着开始火焰战争的风险,我喜欢把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的优秀替代品,人们将使用F#,当他们从One True Language™/“一切看起来像钉子”的方法编写软件时。
答案 1 :(得分:4)
它将成为Visual Studio 10的一部分,因此知道它不会有害
答案 2 :(得分:2)
我怀疑函数式编程语言会非常受欢迎。但是,F#很容易成为最成功的功能语言。它背后有一个巨大的库(即.NET CLR),它与非常流行的语言(C#,VB等)无缝集成,不久之后它将在世界上最流行的IDE(Visual Studio)中得到支持。
我不知道学习F#的时间是多么浪费。您始终可以从C#调用F#组件。此外,无论您使用何种语言,您都可以学习一种新的思考方式,即可随身携带。
答案 3 :(得分:0)
有一些行业(或OCaml)非常普遍 - 例如财务或其他统计分析。但是,我严重怀疑它是否会突然出现在主流代码中。其中一个更大的问题是,由于C#功能更强大(希望在C#5.0中具有更好的不变性),因此它与C#等常规.NET语言的区别越来越少。
答案 4 :(得分:0)
我去年看过它,这是我的语言清单,真正进入今年。所以我认为它肯定会成为主流。
我主要是在微软开发者世界里谈论。