“铁”语言是否准备好迎接黄金时段?

时间:2010-10-22 14:12:33

标签: .net ironpython functional-programming dynamic-language-runtime

在生产系统中开始使用Iron Ruby和Iron Python是否可以?另外,托管它们还有其他要求吗?

而且,对于奖励积分,假设F#是一种与Python相同的函数式编程语言,那么在.NET框架中使用一个优于另一个是否有任何优势?

3 个答案:

答案 0 :(得分:10)

  

在生产系统中开始使用Iron Ruby和Iron Python是否可以?

是。我负责一个24/7/365运行的软件系统。不是生命或死亡的关键,但批评很多钱。它使用的是IronPython,虽然不是很多 - 但对于在动态语言中更容易做的事情来说,大多数都是少量的。这意味着:它有效,它不会使你的过程崩溃或者没有充分理由吃掉疯狂的内存。但是用户群和“语言社区”远小于例如C#,所以在网上找到帮助可能比较困难。

添加:关于“MS drop Iron *” - 新闻:我真的不太关心这一点。 Microsoft没有积极开发许多优秀的语言。只要有积极的发展,只要它做你想做的事情,只要你能找到支持,如果你无法理解发生了什么,你应该没事。但这可能更多的是品味而不是技术问题。

  

此外,托管它们还有其他要求吗?

对于IronPython 1.0(仍可使用),您只需要两个程序集。对于2.0,您还需要DLR程序集,但它们都不是很大或者没有任何外部依赖(我知道)。

  

而且,对于奖励积分,假设F#是一种与Python相同的函数式编程语言,那么在.NET框架中使用一个优于另一个是否有任何优势?

正如德尔南所说,F#是一种功能语言,而Python则不是。 Python是一种多范式语言,支持一些函数式编程概念,如lambda表达式或列表推导,但C#也是如此。 F#和Python真的是非常不同的野兽。

主要区别是:

  • F#编译器将其编译为IL(它不是动态语言),可以在运行时编译或解释IronPython
  • F#是静态类型的类型推断,Python是动态类型的(类型检查是在运行时完成的)
  • F#是一种函数式语言:它支持模式匹配,高阶函数和类型,元编程等功能。如果你需要实现一个可以在函数式语言中更容易实现的高度复杂的算法,并且想要与C#代码接口,那真的很棒。 (最后一部分是我个人的观点。)
  • Python主要是一种OOP /命令式语言。将脚本添加到现有的C#应用​​程序非常棒。 (最后一部分是我个人的观点。)

如果您告诉我们更多您想做的事情,也许我们可以为您提供更具体的意见或建议其他选择。

答案 1 :(得分:3)

我们使用IronPython在Silverlight中构建 B2B 应用程序。我们从未遇到过有关性能或稳定性的问题。

我们已经构建了两个应用程序(前端每个大约20,000行python代码 - 后端是使用Django或Catalyst框架构建的),并且正在构建下一个更大的应用程序。

使用像IronPython这样的动态语言,可以改变f.e.类中的函数,并通过HTTPRequest重新加载它。无需重新编译,在浏览器中重新加载整个silverlight应用程序并导航到代码更改生效的位置。

最近,IronPython代码被放在了社区的手中,像Michael Foord这样的人在保持这个版本的Python up2date方面做得非常好。

答案 2 :(得分:1)

F#适用于科学和金融应用。它可用于JVM世界中使用Scala的地方。其他实现这些范例的语言是Caml,OCaml,Erlang。