unj*_*nj2 59 c# oop f# functional-programming
Don Syme在他的SPLASH演讲中表示,F#并不打算成为C#的替代品,尽管它具有一般功能.他继续说F#在使用方面没有任何意义,但没有扩展到论文.
Ste*_*sen 59
我认为将C语言替换为富有和成熟的语言会非常昂贵.因此,例如,目前,如果使用Visual Studio WinForms设计器可以为您提供优势,C#绝对是WinForms开发的最佳选择:F#没有WinForms设计器.
C#目前还支持更好的LINQ-to-SQL.我相信这些方面还有很多其他的例子.
然后需要整个C#技术人员将他们的技能更新为F#,同时保留C#技能以维护应用程序,同样昂贵.
最后,C#是一个有很多强大功能的优秀语言,一些F#甚至没有如CO /禁忌变异泛型和出针对DLR的动态规划(F#只是有一个未实现的操作)的内置支持.
因此,不期望F#取代C#,F#可以以新的方式发展,而不是花费所有的时间在已经很好覆盖的区域内追赶.
Tom*_*cek 23
这是一个棘手的问题,因为它不是很合格.您是在谈论一般语言,还是在谈论语言以及当前的IDE支持?或者你在谈论使用F#给出可用的库?
语言一般 - 我不认为有些地方使用F#绝对是胡说八道.对于完全托管的OS(例如Singularity)进行系统编程会很棒,我认为功能程序更容易正式验证(这对操作系统来说可能是个大问题).对于低级嵌入式系统,您可以使用元编程和面向语言的设施(例如,模拟硬件中的信号流等)
当前IDE的语言 - 当前的F#IDE有一些限制 - 它不适用于WinForms设计器(但它适用于Blend和WPF).
给予开发人员教育的语言 - 雇用F#程序员比雇用C#程序员更难.如果您正在创建一些没有任何复杂核心的应用程序(例如通常的"数据库接口"),那么在C#中开发它会更便宜(如果您可以聘请优秀的F#开发人员,他们可能会更快地完成它并且更少错误,但它可能不值得花费).
给定库提供的语言 - 如果您想限制自己使用F#只使用适合它的库,那么域会缩小一点.例如,LINQ to SQL和ASP.NET MVC可以与F#一起使用,但它并不完美.但是,对于许多项目来说,开发自己的库是有意义的,然后F#就成了很好的语言.
Mar*_*ann 10
许多Microsoft的UI技术(如WPF)都对数据绑定提供了出色的支持.当用户与UI交互时,有效数据绑定使用双向绑定来更新底层对象.这意味着有效的数据绑定需要可变对象.
F#强调不可变类型,与这种类型的数据绑定模型相比很差.虽然可以在F#中创建可变类型,但这样做会从语言中消除很多好处.使用可变性更自然的语言(例如C#)更有意义.
您可能需要考虑将其用于操作系统内核开发或低级嵌入式系统:-)
如果您愿意放弃特定于C#的工具,并且支付适用的任何采用成本,则没有特定的区域F#至少不如C#那样有能力.