我来说几句吧。
首先提问者的补充说明基本上是非常混乱:
确实如评论中所言,函数式语言目前没有真正火的,但这更显出开源社区中函数式程序员的珍贵。而ms不发力推的话,scala、clojure将把(或者说已经把)开源社区中仅有的那么点函数式高手都吸引过去了。
我相信未来主流的编程范式必然会渐渐向函数式倾斜,那么这批开源社区中热爱函数式的程序员就是引导语言、平台前进的有生力量。
不过或许这也是ms行事风格的必然结果,总是想帮程序员操办好一切,连主要框架都要自己来,而不是扶持社区版,更不用说语言,因此Clojure这样的非主流,只会在java平台流行,在.net平台几乎无人使用。
没有真正火的是纯函数式语言,因为纯函数式语言的运用范围是非常有限的,而现在的语言都是多范式语言,真正火的语言,JavaScript本身就是函数式的底子,C#从2.0就开始支持匿名方法和闭包(基本上就可以认为已经具备函数式范式),C++和Java近期也引入了lambda表达式。
而scala和clojure本质上来说和C#这种混合范式的语言也没有什么区别。至于什么开源社区中仅有的那么点函数式高手都吸引过去了,我表示很无语。
至于未来函数式当然是非常重要的一个范式,否则主流的程序设计语言不会纷纷都支持函数式。但不会出现什么函数式一统江湖的局面,就像现在OO也没有一统江湖一样。
最后不管什么东西都能扯到虚无飘渺的MS行事风格上,我建议多写代码少听那些所谓的大牛瞎BB。
补充一下我这段话的意思好了,简单说就是牛逼的人用的语言你也用,不代表你也牛逼。所以没有必要过于关心牛逼的人用什么语言,自己用得好能赚钱就好了,把自己变牛逼才是正事儿。
Java平台出现那么多语言除了有一群喜欢折腾的人之外,还有就是Java实在太shit。
F#不温不火的一个很重要的原因也是他的竞争对手C#和VB实在太强大,虽然F#看起来很好,但是还没有好到让大家迁移的地步。函数式并不是F#的杀手锏,因为C#/VB已经足够好,Computation Expression才是大杀器,但目前对于这个东西的研究和案例都不多,不足以说服大家迁移。而且这货一旦出现很多案例说不定又会被Anders继续迁移到C#和VB上来。
最后补充一些,F#除了可以使用专为F#设计的函数之外,同样也可以完全使用.NET Framework提供的所有库函数,譬如说老赵那段F#代码,也可以写成用System.Core里面的扩展方法一样,我只改写了一小段做个示范:
open System.IO open System.Linq [<EntryPoint>] let main filepath = File.ReadAllLines(filepath.[0]) .SelectMany(fun line -> line.Split(' ').AsEnumerable()) |> ignore 0
所以完全不用担心没人用F#没人给F#添砖加瓦啥的,即使F#自己啥也没有,仅仅.NET Framework也甩其他语言几条街了。。。。