首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用哪一种,C#还是F#?在这个“真实世界”的案例中

使用哪一种,C#还是F#?在这个“真实世界”的案例中
EN

Stack Overflow用户
提问于 2010-08-23 00:24:26
回答 4查看 679关注 0票数 3

我在这里读过一些关于堆栈溢出的有趣的C#/F#比较。所以,首先,感谢所有的贡献者!

对于F#有很多赞扬,选择C#的理由更难找到。不管怎么说,我还是不知道哪一个适合这个小而简单的“现实世界应用”:模拟鲱鱼的学校。

我还不知道函数式编程,但从面向对象的角度来看,有些设计似乎是直接的:创建一个鱼类,并从中派生出这些类:鲱鱼、捕食者、猎物。每一个都应该具有诸如位置、方向和速度等属性。

会有大量遍历集合:每次小时间增量,每个鱼对象将检查其环境并更新其操作。

我还不知道这是否足够密集的CPU,我会关心多处理,但也许,所以F#听起来不错。

我相信我会花很多时间在原型和探索上--我听说F#对此很有帮助。

据我所读,C#对图形用户界面更好,但不会有太多的效果。绘制一些曲线会很好,但我更愿意将大部分结果发送到打开的Excel表或数据库中。不确定C#和F#在Excel/数据库方面有何不同。

无论如何,这个项目看起来太面向对象了-- C#是否更适合这个项目,尽管上面提到了F#的优点?或者?

编辑:只是想感谢所有的评论,非常有用和有趣,希望它也能帮助别人。我发现一件有趣的事情是,尽管F#是多范式的,但是每个人似乎都更喜欢C#的方法,尽管例如这种比较。(顺便说一句,我要学习F#。)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-08-23 01:02:16

这听起来像是一个可以使用这两种样式编写的应用程序。使用F#似乎是合适的,这可能是学习F#语言和函数式编程的一个很好的应用程序。

关于架构,您写道:

我还不知道函数式编程,但从面向对象的角度来看,有些设计似乎是直接的:创建一个鱼类,并从中派生出这些类:鲱鱼、捕食者、猎物。每一个都应该具有诸如位置、方向和速度等属性。

函数式编程并没有什么不同。它强调使用具体类型(而且不经常使用继承),因此您可能会定义具有类似属性的不同类型,如HerringPredator。然后你会创建鲱鱼和食肉动物的列表,并对这两种类型进行一步一步的模拟。

巧合的是,我用“动物”和“掠食者”作为我的函数式编程书的样本(在C#和F#中)写了一个类似的模拟。可免费获取源 (查找第14章),因此您可能会发现这是一个有用的灵感(该示例还演示了并行性)。从F#中使用Excel也是完全可能的(以与C#完全相同的方式),我的书中也提供了示例(参见第13章的源代码)。

一般来说,使用函数式编程解决F#中的问题需要稍微不同的观点,您可能需要花费更多的时间进行实验,但问题似乎可以很好地受益于一些F#特性(这是一个学习新东西的好机会)。

票数 4
EN

Stack Overflow用户

发布于 2010-08-23 00:31:02

您没有理由不能用F#编写算法代码,并且仍然在C#中使用GUI。只需将算法放在用F#编写的库中,用C#编写GUI应用程序,引用库即可。

票数 15
EN

Stack Overflow用户

发布于 2010-08-23 00:47:59

这听起来是一个尝试这两种语言的好机会,要么混合它们,要么用两种语言完成整个过程,这样您就可以体验这两种语言,并学习函数编程和面向对象编程之间的所有区别。顺便说一句,您可以在F#中进行OO,因为它是一种混合语言,您也可以使用C#进行函数式编程,当然也有局限性。

此外,您不应该有任何真正的问题,数据库访问或Excel集成从这两种语言。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3544036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档