Edw*_*uay 7 c# vb.net f# ironpython ironruby
我只是听了Chris Smith关于F#的播客,其中他讨论了F#是如何使用C#/ VB.NET 以不同的方式处理问题的语言,而不是"推动"你的链" "数据转换",以及F#将如何"变得像XML",除了您选择的语言(C#或VB.NET)之外,您还可以使用它,以便以更有效的方式解决某些问题.
这让我想到了.NET语言的关系,这就是我理解它们的方式:
但是IronPython和IronRuby呢?Chris提到"F#从Ruby和Python中学到了很多东西",所以我认为F#与IronRuby/IronPython有类似的关系,而C#与VB.NET有关.然而,有点谷歌搜索告诉我IronRuby和IronPython都建立在DLR上,但F#不是.
如何最好地理解F#,IronRuby和IronPython之间的关系?
Jar*_*Par 15
从语言的角度来看,F#和IronPython/IronRuby是光年.F#是一种功能强大的高级编译语言.IronRuby/IronPython是动态类型的解释语言.
我相信IronPython还支持编译,但我不是100%肯定,而是更少关于ruby.
VB.Net和C#之间的关系更加紧密.
在许多方面,F#和Ruby/Python在表面上是相似的.所有这三种语言都可以让您简洁地表达想法,而不会乱丢许多类型的代码.但是,F#实际上与Ruby和Python非常不同,因为F#是一种静态类型语言,而Ruby和Python是动态类型的.惯用F#代码很少提及类型,但编译器推断类型,编译期间编译器将标记任何类型错误.对于Ruby和Python,使用错误类型的值只会在运行时生成错误.Ruby和Python的动态意味着两者都比F#更适合元编程(例如,类型可以在运行时修改).另一方面,对于大多数任务而言,F#将更具性能(与C#相当),并提供许多不错的功能抽象,例如具有模式匹配的区分联合.确实很好地学习这些语言会让你以不同于C#或VB.NET的方式思考问题,但是你的方法在F#和Python/Ruby之间可能会有很大差异.
我说F#从OCaml学到了很多东西,而不是Ruby和Python的结合.唯一真正的比较是F#以与IronPython/Ruby将Python/Ruby带到.NET相同的方式将ML带入.NET.