@lsmn
2016-08-15T06:16:52.000000Z
字数 5066
阅读 3042
微软
F#
FAKE
FsCheck
四月份,fsharpWorks组织了第二次F#社区调查。2016年,有超过600名开发人员完成了调查(比2015年多15%)。该调查让我们可以深入地了解F#社区的智慧。本文汇总了部分调查结果。
本文要点
- 年度社区调查向600多名开发人员了解了他们的F#使用情况;
- 在工作中,F#的最大好处包括正确性、让不合法状态不可达以及能够更轻松地解决复杂的问题;
- 大多数F#开发人员仍然使用Windows作为他们的开发平台之一,但使用Mac和Linux的已经增长到33%;
- F#不只是用于科学和计算——将F#用于实用程序和工具的受访者最多(45%);
- 排名前3的库和工具是FAKE构建系统、Paket包管理器和类型提供库F# Data。
四月份,fsharpWorks组织了第二次F#社区调查。2016年,有超过600名开发人员完成了调查(比2015年多15%)。该调查让我们可以深入地了解F#社区的智慧。本文汇总了部分调查结果。
你也可以自己研究下包含所有33个问题的完整调查结果,并在评论中把有趣的发现分享出来。
现在,F#已经存在多年了,但开发人员使用它的方式一直在变。在不同的领域,有许多新的开源库让F#变得更具吸引力。与早期使用者相比,当前用户所看重的方面也不同。
2016年,开发人员在项目中选择F#的原因有哪些?他们如何使用F#?F#适合哪些应用领域?自去年以来,有什么新的趋势?未来最大的挑战有哪些?
谁是F#开发人员
我喜欢我在F#社区看到的一切。加入其中是一件独特的事情,一旦我决定迈出第一步,就觉得非常惬意。我只是希望,我们能够向那些尚未迈出第一步的人伸出橄榄枝。
调查对象一般是有经验的软件开发人员,64%的受访者有10年的编程经验(语言不限)。有超过81%的F#开发人员还使用C#,但是,在受访者中,使用F#编写客户端Web应用程序的人在增加(38%的人还使用JavaScript,而9%的人还使用TypeScript)。
大多数F#开发人员都有Windows背景,90%的使用Windows作为他们的平台之一,但非Windows F#用户的数量也在增加。特别地,25%的F#开发人员(还)使用Mac,25%的(还)使用Linux。由于自去年开始出现了大量的跨平台F#开发,所以下面我将回到跨平台F#开发的主题。
工具、业务、Web和数据
我经常听人们说,“F#只适合于计算,是吧?”我认为,那些人往往是被许多来自那个世界的例子给吓跑了。
在早期,F#作为一门适合于金融和计算密集型的语言而闻名。这可能源于早期知名的采用者,但当前的数字显示了不同的结果。
使用F#开发实用程序和工具的受访者最多(占45%)。这反映了一个事实,就是F#自第一个版本开始就通过REPL(读取-求值-打印-循环)支持交互式开发。若干受访者使用F#和一种轻量级的编辑器,不怎么费力就可以完成小型的编码任务。
除了REPL环境之外,F#生态系统还有许多功能强大的库。特别是,随机测试库(FsCheck)和编写构建脚本的库(FAKE),后者在最受欢迎工具列表中位置特别突出(后面会介绍)。在F# for Fun and Profit网站上,脚本开发、编写构建脚本和测试也是其中一种风险最低的F#入门方式。
在实用工具之后,接下来的4个应用领域(介于21%到17%之间)涵盖了众多主题,包括数据分析、Web应用程序和企业应用程序。
F#可以用于商业/非商业Web站点和应用程序(18%和14%),而Web主题出现在调查的其他回复里。Suave Web服务器是最受欢迎的F#库之一,Suave Music Store教程作为一个受欢迎的F#资源被提及,超过38%的F#开发人员还使用JavaScript。
F#在统计和数据分析领域仍然很受欢迎(21%)。FsLab包作为最受欢迎的库(虽然它没有进入前5)多次被提及。许多F#开发人员还熟悉更多的数据科学与分析工具&语言——19%的受访者还使用Python编程,5%的使用R语言,它可以通过R类型提供程序与F#集成。
为什么F#开发人员选择了F#
[F#社区应该]在真实的项目中更好地展示其优势,它的代码未必总是令人兴奋,但在普通业务功能中,F#的领域建模功能真得很出众。
据参与F#调查的受访者报告,F#的最大优势和两个流行的F#应用程序高度相关。在上一节的图表中,F#既用于算法密集型应用程序,也用于主流业务应用程序(均占受访者的17%)。在算法密集型应用程序中,正确性至关重要,而主流业务应用程序则在很大程度上受益于F#支持领域建模并让非法状态不可达。
F#的领域建模通过代数数据类型(又称为可区分联合)实现。在这两个版本的调查中,代数数据类型都是最受欢迎的F#特性之一(65%的开发人员把它们列为自己最喜欢的特性)。此外,F# for Fun and Profit网站上有一份使用F#类型进行领域建模的说明。
一个在编写F#代码时可以感受到的好处是正确性。它可能和其它受欢迎的F#语言特性联系起来。默认不可变性是最突出的一个(有78%的受访者将其列为自己最喜欢的特性),紧随其后的是类型引用(69%)和“管道语法(piping idiom)”(也是69%)。
不可变性和管道语法都是以一种严格的形式出现在C# LINQ中。通常,IEnumerable作为不可变类型,而F#管道操作符|>的用途和C#中的方法链接类似。在F#中,这两个概念不只在集合处理时使用,更多的是在设计软件时使用。你可以阅读“函数式思维”系列文章来了解更多的原则。许多流行的库都是围绕管道语法构建的,包括MBrace,它使用该特性组合云计算和XPlot,后者使用管道操作符配置图表功能。
也许有些出人意料,虽然F# Data(实现了可以操作XML、JSON和CSV格式的类型提供程序)是最受欢迎的库之一,但只有不到一半的受访者(45%)提到F#类型提供程序是自己喜欢的特性。
跨平台和工具
F#社区最新的进展之一是接近实现完全的跨平台支持。如上所述,大多数F#开发人员仍然使用Windows作为他们的其中一个开发平台,但使用Mac和Linux的开发人员数量在增加。将代码部署到Linux的开发人员比例由21%增长到了33%,让Linux成为受欢迎程度仅次于Windows的第二部署目标。人们对这个领域的兴趣在增长。Alena Hall的演讲《Cassandra、Docker和令人印象深刻的F#》,成为第一届虚拟F#大会fsharpConf上15个视频中收看最多的一个。这也是兴趣增长的一个证据。
另外一个F#变得越来越跨平台和多样性的领域是工具。
这个问题不允许选择2015年的多个编辑器,因此,有点难以做出正确的比较。不过,越来越多的F#开发人员不再将Visual Studio作为他们唯一的开发环境。最值得一提的是Ionide项目的流行。该项目实现了Atom编辑器和VS Code(两个都是跨平台编辑器)的F#插件。Ionide仅仅推出大约1年的时间,就有42%的F#开发人员已经使用了它(和上述两个编辑器的其中一个搭配使用)。Xamarin Studio在Mac上提供了F#支持,被14%的F#开发人员使用,vim和Emacs(F#模式)也越来越流行。
功能强大的库和工具
F#可以方便地实现同.NET生态系统的互操作,但为了充分利用F#语言,社区创建了越来越多的工具和库。下面这个列表汇总了那些“让F#开发人员与众不同”的库和工具。括号中的数字表示一个库被提及的次数,这是使用一个简单的F#脚本从调查结果中提取的。你可以运行或改进这个脚本。
学习资源
在我见过的任何语言/库的教程中,教程Suave Music Store可能是最好的了。
除了一般的统计和受欢迎的库,F#调查还提了几个有关F#学习和信息获取的问题。F#社区里有许多事情正在发生,但你需要知道去哪里进行了解!
作为一个很棒的学习资源,教程Suave Music Store多次被提及。它展示了如何一步一步使用Suave Web服务器以函数式风格开发一个企业Web应用程序。
至于F#新闻跟踪,超过60%的F#开发人员使用Twitter,通过关注话题标签#fsharp来了解正在发生的事情!第二个新闻源(58%的受访者使用)是定期发布的F#周报,该栏目由Sergey Tihon维护,每个星期一会发布F#社区里最重要的新闻(自2012年11月至今!)
该调查还提到了由新成立的F#软件基金会所属的F# Education工作小组推出的几项活动,其中包括试验指导计划(将来有望再次组织)、fsharpConf虚拟会议和F#巡讲项目。
前瞻
F#语言有一个活跃的、充满热情的社区,它构建了受欢迎的开源工具和库,也对编译器本身的重大改进作出了贡献(参见Elm-style错误信息和Struct记录,这里仅举两例)。这点不只在调查中的许多回答里得到了体现,还在外界的观点里得到了体现。
从技术上讲,我们希望F#在跨平台方面可以进行更多的开发。跨平台工具支持和应用的改进表明,这是社区正在积极开展的工作。除了mono(已经允许许多F#开发人员以Linux作为目标平台)和Xamarin(面向iOS和Android)之外,下一位跨平台游戏的玩家是微软的CoreCLR。微软的F#团队在研究面向CoreCLR的开发,社区也在研究。我希望明年能够看到这个领域有许多事情发生。
至于应用,在从业务上说明F#的好处方面,还有许多工作可以做。这是F#软件基金会可以施加影响的地方,无论是收集证据,还是编制可信赖的教育资料。
在“人人都喜欢F#”的公司里工作的人,其数量已经由2015年的8%上升到2016年的14%,在仅仅一年的时间里,这是一个巨大的提升。不过,在工作中使用F#面临的一些问题仍然存在。特别地,公司担心F#开发人员的雇佣和培训。这是一个令人意外的点,因为调查显示,许多热情的F#开发人员目前并没有将F#作为他们的主要语言。在培训方面,F#顾问的数量在增加,其中包括fsharpWorks提供的F#培训和研讨会。这表明,围绕F#进行更好地交流可能是支持F#在企业中应用的最重要的任务。同时,这也是F#软件基金会及其不断增加的成员和赞助商可以产生巨大影响的领域。
关于作者
Tomas Petricek是一名F#爱好者、会议演讲者和《现实世界的函数式编程》一书的作者。他是fsharpWorks的一名合伙人,主要为其提供培训和咨询服务。Tomas为许多F#开源库的开发的作出了贡献,也作为微软研究院的订约人为语言本身的开发作出了贡献。他最近提交了自己的PhD毕业论文,研究内容为上下文感知编程理论。 |
查看英文原文:F# in Numbers: A Look at the Annual F# Survey Results