![]() |
1
253
我已经写了一份申请,以平衡国家发电计划中的发电站组合与能源公司的交易头寸。客户机和服务器组件在C中,但计算引擎是用F编写的。 使用f来解决这个应用程序核心的复杂性,清楚地展示了企业软件中语言的一个优势,即对大型数据集的算法复杂分析。我的经历是非常积极的。特别地: 计量单位 我工作的行业到处都是单位。我实现的方程(通常是几何性质的)处理时间、功率和能量的单位。让类型系统验证功能输入和输出单元的正确性是一个巨大的节省时间的方法,无论是在测试和读取/理解代码方面。它消除了以前系统容易出现的一类错误。 探索性程序设计 与更传统的编辑/编译/运行/测试循环相比,使用脚本文件和repl(f interactive)允许我在提交实现之前更有效地探索解决方案空间。对于程序员来说,建立他们对问题和设计紧张关系的理解是非常自然的方式。 单元测试 使用非副作用函数和不可变数据结构编写的代码是一种测试的乐趣。没有复杂的依赖时间的交互来把事情搞砸,也没有大量的依赖项被模仿。 互操作 我在C中定义了与计算引擎的接口,并在F中实现了计算。然后可以将计算引擎注入到任何需要使用它的C模块中,而完全不考虑互操作性。无缝的。C程序员永远不需要知道。 代码约简 许多输入计算引擎的数据都是以向量和矩阵的形式出现的。高阶函数在早餐吃这些,只需最少的繁琐和最少的代码。美丽的。 缺少虫子 函数式编程会让人感觉很奇怪。我可以研究一个算法,努力让代码通过类型检查程序,但一旦类型检查程序满意,它就可以工作了。它几乎是二进制的,要么不编译,要么是正确的。奇怪的边缘大小写错误被最小化,递归和高阶函数删除了大量导致边缘大小写错误的簿记代码。 平行性 结果实现的功能纯度使得充分利用数据处理向量中固有的并行性成为可能。也许这就是我下一步要去的地方,因为.NET 4已经不在了。 |
![]() |
2
76
在我在微软研究院实习期间,我曾为F(它本身是用F写的)的Visual Studio IntelliSense的一些部分工作。我已经有了一些早期C项目的智能感知经验,所以我想我可以比较两者。
早些时候,我还为f_(也用f_编写)工作过codedom提供者。实际上,我在C中做了第一次实验,但后来将代码转换为F。
这是两个相对特定的示例,但这两个示例都与处理程序、表达式或更一般的复杂树型数据结构的表示有关。我认为在这个领域,F绝对是一个不错的选择(不管C中的功能特性如何)。 |
![]() |
3
42
我们用F语言发布了世界上第一个商业产品。#( F# for Visualization )第二个( F# for Numerics )以及第一篇关于F的商业文献#( The F#.NET Journal )写并出版了唯一一本关于当前版本F的书#( Visual F# 2010 for Technical Computing ) 我们一直在沿着用C(例如 this )但我们在OCAML的商业应用方面也有很强的背景。早在2006年,我们就热衷于F的早期应用,当时F还是一个研究原型,因为我们认识到在工业实力.NET平台上拥有一种像样的现代OCAML语言的潜力,因此,我们推动了F的生产。其结果是令人难以置信的成功,F远远超出了我们的远大期望。 对于我们来说,F有许多不同的优点,我们将其用于各种应用。我们在生产中有数十万行F代码。我们现在用F_ 全部的 关于我们的LOB应用程序:我们的信用卡交易使用F代码处理,我们的产品通知使用F代码发送,我们的订阅使用F代码处理,我们的帐户使用F代码完成等。也许支付红利的主要语言特性是模式匹配。我们甚至用F来突出我们最新的书的颜色语法…
我们的可视化库是一个大卖家,其功能主要集中在在在Visual Studio中运行的F_Interactive上。我们的图书馆增强了这种能力,能够以最小的努力(例如
我们的大部分工作都围绕着数字方法展开,包括商业图书馆和书籍。F在这个领域比C强得多,因为它提供了高层次的抽象(例如高阶函数),并且性能惩罚最小。在这种情况下,我们最引人注目的结果是创建了一个简单但通用的线性代数QR分解实现,它比LAPACK参考实现中的Fortran代码短20_,比供应商调优的英特尔数学内核库快3_,而且更通用,因为我们的代码可以处理mat任何类型的矩阵,甚至符号矩阵! 我们目前正在开发混合了f(用于Guts)和c(用于Shim)的wpf/silverlight组件,构建wpf应用程序作为我们软件产品的交互手册,我正在写一本新书,多核f,这将是在.net上共享内存并行编程的最终指南。 |
![]() |
4
25
在过去6个月左右的时间里,我一直在为Visual Studio 2010开发VIM仿真层。这是一个免费的产品,有所有的来源,它在Github上免费提供
该项目分为3个DLL,表示一个不同的层。每个层都有一个对应的单元测试DLL。
这是我与F合作过的第一个主要项目,我不得不说我喜欢这门语言。在许多方面,我使用这个项目作为学习f_的一种方法(如果你浏览项目的历史,这个学习曲线是非常明显的)。 我觉得最令人惊奇的是,F语言是多么简洁。VIM引擎包含大量的逻辑,但它只占整个代码库的30%。 |
![]() |
5
13
许多F Visual Studio组件的单元测试都是用F编写的。它们在vs外面运行,模拟各种Visual Studio位。实现接口的匿名对象的能力对于代替模拟框架/工具很有用。我可以写
当我需要例如
|
![]() |
6
9
我们使用f中的lex yacc实现编写了一个自定义规则引擎语言。# 编辑以包含评论回复 在C_中没有lex/yacc实现。(据我们所知,F一号是) 这本来是可能的,但构建解析本身是一种彻头彻尾的痛苦。 This topic 显示了一些其他的建议,例如外部库,但是我们的首席架构师在功能语言方面是个老手,所以使用f_的选择是不需要考虑的。 |
![]() |
7
7
我目前正在为一种编程语言编写编译程序。编译器完全用F编写。编译器(除了lex和parser用lex/yacc构建)基本上是作为复杂树型结构的大量转换构建的。 正如其他人所指出的那样,区分联合和模式匹配使得使用这种数据结构比将代码“到处”转储到虚拟方法中容易得多。 在我开始编写编译器之前,我没有做过任何F工作(不过,我在另一个ocaml变种moscowml中使用了buld编译器),正如jared所说,从代码中可以看到我首先做了哪些部分,但总的来说,我发现F很容易学习,在编写完主要是OO的代码之后,重新进入FP的思维模式需要更长的时间。不过。 使用旁边的树,我发现编写声明性代码的能力是FP(包括F)的主要好处,它的代码描述了我试图实现的算法,而不是C描述的算法。 怎样 我已经实现了algortihm是一个巨大的优势。 |
![]() |
8
6
不是个人经验,但你可以听一集dnr(我想是 this one )他们和微软人谈论F。他们使用f编写了大部分Xbox Live评分系统,这远远不是一个简单的系统。该系统在数百台机器上大规模扩展,他们对此非常满意。 |
![]() |
9
6
这个 WebSharper 人们已经构建了一个以f为中心的Web编程的完整产品。下面是一篇关于它的文章: |
![]() |
10
6
这里有一个案例,是关于一个银行,它使用F**和C++/COM来处理: http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?CaseStudyID=4000006794 |
![]() |
11
5
我不知道它是否在生产中,但是“前进之路”的人工智能是用f写的: http://research.microsoft.com/en-us/events/techvista2010/demolist.aspx#ThePathofGo
(其他人已经提到了“Trueskill”。) |
![]() |
Thomas · 使类型别名在F中不可互换# 3 年前 |
![]() |
sdgfsdh · 我该怎么说。使用异步转换函数进行收集? 6 年前 |
![]() |
Soldalma · 我可以实例化包含顶级副作用值的类吗? 7 年前 |
![]() |
matekus · F#-包含数字的字符串的自然排序 7 年前 |
![]() |
matekus · F#类型匹配-无法创建映射或匹配记录 7 年前 |
![]() |
Rob Lyndon · 未找到F#ProvidedTypes文件 7 年前 |
![]() |
red-swan · 如何将intro ML.Net演示翻译为F#? 7 年前 |
![]() |
jkone27 · F#-在编译时从字符串生成简单的空类型 7 年前 |