代码之家  ›  专栏  ›  技术社区  ›  Edward Tanguay

f to ironpython/ironruby是否与c is to vb.net一样?

  •  7
  • Edward Tanguay  · 技术社区  · 16 年前

    我只是听着 podcast of Chris Smith talking about F# 在书中,他谈到了f是一种怎样让你 以不同的方式处理问题 比在c/vb.net中,也就是说,不是“推动位围绕”而是“将数据转换链接在一起”,F将如何“变成XML”,这是除了您选择的语言(c或vb.net)之外,您还可以使用的一种语言,以更有效的方式解决某些问题。

    这个 让我思考 关于.NET语言的关系,以下是我如何理解它们:

    • c和vb.net是 句法上但没有实质性的区别 也就是说,程序员不会为了“以新的方式处理问题”而学习vb.net。
    • 但是,C或VB.NET程序员将学习F,以便“解决编程问题”。 以实用的方式

    但是呢? 铁箍龙 铁红的 ?Chris提到“F从Ruby和Python中学到了很多东西”,所以我认为F与IronRuby/Ironpython有着相似的关系,C必须与vb.net有着相似的关系。但是,有一点咕噜声告诉我 IronRuby和Ironpython都是在DLR上构建的,但F不是 .

    如何更好地理解f_、IronRuby和Ironpython之间的关系?

    6 回复  |  直到 16 年前
        1
  •  15
  •   JaredPar    16 年前

    F和Ironpython/IronRuby是一个与语言观点不同的光年。F是一种功能性、高度类型化的编译语言。IronRuby/Ironpython是动态类型化的解释语言。

    我相信Ironpython还额外支持编译,但我不是100%确定,更不用说Ruby了。

    vb.net和c_的关系更为密切。

        2
  •  6
  •   kvb    16 年前

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

        3
  •  5
  •   Niki Yoshiuchi    16 年前

    我想说F从ocaml学到的比Ruby和Python结合起来学到的要多得多。唯一真正的比较是f将ML带到.NET,就像Ironpython/Ruby将python/Ruby带到.NET一样。

        4
  •  0
  •   Achilles    16 年前

    F更像是一种“工具”语言,其中存在一些特定的问题,最好用功能性方法来解决。F本质上是线程安全的,这使得它有助于将应用程序扩展为使用多个处理器。我看到f被用于构建将在vb.net或c_中用于处理特定问题的组件。

        5
  •  0
  •   JamesEggers    16 年前

    F的某些方面与动态语言相似;然而,Jaredpar的回答确实总结了这一点。F属于函数式编程的一类,其中IronRuby和Ironpython是动态语言和C/VB OO语言。他们都能做同样的事情,这取决于你想怎么做。每个问题都有其优缺点。

        6
  •  0
  •   Sean Copenhaver    16 年前

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

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

    F是一种功能性语言。也就是说你更关心动词。它仍然是静态类型的,并在clr上运行,但是您的代码结构不同,处理问题的方式也不同。通常人们认为函数语言在结构上更具数学性,更容易被正式证明。当然,这通常被认为是学术性的。

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

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

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

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

    似乎静态语言在更大的团队中更容易管理。另外,使用所有的检查和工具,您可以很容易地得到重构的优势。