F#对IronPython/IronRuby的作用与C#对VB.NET的作用一样吗?

F#对IronPython/IronRuby的作用与C#对VB.NET的作用一样吗?,c#,vb.net,f#,ironpython,ironruby,C#,Vb.net,F#,Ironpython,Ironruby,我刚才听了他在演讲中谈到F#是一种语言,它允许你以与C#/VB.NET不同的方式来处理问题,也就是说,不是“推位”,而是“将数据转换链接在一起”,以及F#如何“变得像XML”,这是你在选择的语言之外使用的东西(C#或VB.NET)以更有效的方式解决某些问题 这让我开始思考.NET语言之间的关系,以下是我对它们的理解: C#和VB.NET在语法上是的,但没有本质上的不同,也就是说,C#程序员学习VB.NET不是为了“以新的方式解决问题” 然而,C#或VB.NET程序员会学习F#,以便“以函数方式

我刚才听了他在演讲中谈到F#是一种语言,它允许你以与C#/VB.NET不同的方式来处理问题,也就是说,不是“推位”,而是“将数据转换链接在一起”,以及F#如何“变得像XML”,这是你在选择的语言之外使用的东西(C#或VB.NET)以更有效的方式解决某些问题

让我开始思考.NET语言之间的关系,以下是我对它们的理解:

  • C#和VB.NET在语法上是的,但没有本质上的不同,也就是说,C#程序员学习VB.NET不是为了“以新的方式解决问题”
  • 然而,C#或VB.NET程序员会学习F#,以便“以函数方式处理编程问题”
但是关于IronPythonIronRuby呢?Chris提到“F#从Ruby和Python中学到了很多东西”因此,我认为F#与IronRuby/IronPython有着相似的关系,而C#与VB.NET有着相似的关系。然而,通过谷歌搜索我发现,IronRuby和IronPython都是基于DLR构建的,但F#不是

如何更好地理解F#、IronRuby和IronPython之间的关系?F#和IronPython/IronRuby从语言的角度看相距几光年。F#是一种功能性的、高度类型化的编译语言。IronRuby/IronPython是动态类型化的解释语言

我相信IronPython确实还支持编译,但我不是100%确定,对ruby的了解更少


VB.Net和C#之间的关系更为密切。

F#更像是一个“工具”存在特定问题的语言,最好用函数方法来解决。F#天生是线程安全的,这给了我们希望,它将有助于扩展应用程序以使用多个处理器。我看到F#被用于构建组件,这些组件将在VB.NET或C中使用,以处理特定问题。

F#类似于动态语言;然而,JaredPar的回答确实总结了这一点。F#属于它自己的函数式编程范畴,其中IronRuby和IronPython是动态语言和C#/VB OO语言。它们都可以做同样的事情,这取决于你想怎么做。对于给定的问题,它们都有各自的优缺点

在许多方面,F#和Ruby/Python表面上是相似的。这三种语言都允许您简洁地表达想法,而不必将代码分成许多类型。然而,F#实际上与Ruby和Python非常不同,因为F#是静态类型的语言,而Ruby和Python是动态类型的。惯用的F#代码很少提及类型,但编译器会推断类型,任何类型错误都会在编译过程中被编译器标记。对于Ruby和Python,在错误的类型上使用值只会在运行时生成错误。Ruby和Python的动态性意味着两者都比F更易于元编程(例如,可以在运行时修改类型).另一方面,F#将在大多数任务中表现得更好(与C#相当),并提供了许多很好的函数抽象,例如带模式匹配的区分联合。当然,学好这些语言中的任何一种都会让你以不同于C#或VB.NET的方式思考问题,但在F#和Python/Ruby之间,你的方法可能也会有很大的不同。

我认为F#学会了aOCaml比Ruby和Python的结合要多得多。唯一真正的比较是F#is把ML带到.NET,就像IronPython/Ruby把Python/Ruby带到.NET一样。

注意:这主要是我对这个主题的想法和观察的汇编。我白天是C#程序员,晚上是Python程序员

是的,我同意一些已经说过的话,但我有一些时间,想详细阐述和分享我的想法

F#是一种函数式语言。这意味着你实际上更关心动词。它仍然是静态类型的,在CLR上运行,但你的代码结构不同,处理问题的方式也不同。通常人们认为函数式语言在结构上更数学化,更容易正式证明。当然rse通常被认为主要是学术性的

C#和其他静态类型的OO语言实际上更注重名词,以进一步进行类比。因此,您可以构建代码并解决与此相关的问题。当然,在维护状态和对OO语言中经常出现的对象使用非确定性方法方面也存在自然问题

当然,F#有一些从OO语言借来的特性和想法,而C#有一些从函数语言借来的想法和特点

比较Python和C#更多的是关于动态类型和静态类型之间的区别(尽管Python确实提供了一些C#仍然没有的功能特性)。动态键入通常更容易处理内省/反射活动和运行时修改,同时增加了由于“常规”代码中使用的键入错误或不正确对象而导致运行时错误的风险

静态语言通常有一些动态语言所没有的开发人员开销。这种开销似乎通常是由于必须创建层来抽象事物,以及创建继承层次结构和接口来处理所需/想要的抽象。因为您试图避免对类型的依赖


似乎在更大的团队中,静态语言更容易管理。此外,通过所有的检查和工具,您可以非常轻松地获得重构的优势。

我甚至可以说,F#比IronRuby/IronPython更接近VB.NET和C。F#只是一个dif