【问题标题】:Are the "Iron" languages ready for prime time?“铁”语言准备好迎接黄金时段了吗?
【发布时间】:2010-10-22 14:12:33
【问题描述】:

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

另外,考虑到 F# 和 Python 一样是一种函数式编程语言,那么在 .NET 框架中使用其中一种语言有什么优势吗?

【问题讨论】:

  • 在开始之前您可能会觉得这很有趣:bit.ly/dl7YC9
  • 是的,正如劳埃德指出的那样,你的问题的时机非常糟糕,那里......
  • Python 不是函数式语言。
  • 我希望 Python 能和 dynamic 在同一个句子中使用。
  • “鉴于 F# 是一种与 Python 相同的函数式编程语言”——这意味着什么?

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


【解决方案1】:

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

是的。我负责运行 24/7/365 的软件系统。不是生死攸关的关键,而是很多钱的关键。它使用 IronPython,虽然不多——主要是用于在动态语言中更容易完成的事情的小脚本。这意味着:它有效,它不会让你的进程崩溃或无缘无故地消耗大量内存。但是用户群和“语言社区”远小于例如。 C#,因此可能更难在网上找到帮助。

添加:关于“MS 掉落 Iron*”的新闻:我真的不会太在意。有许多优秀的语言不是由 Microsoft 积极开发的。只要有积极的发展,只要它做你想让它做的事情,只要你能在你不明白发生了什么的情况下找到支持,你应该没问题。但这可能更多的是品味问题而不是技术问题。

此外,托管它们是否有任何其他要求?

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

另外,考虑到 F# 和 Python 一样是一种函数式编程语言,那么在 .NET 框架中使用其中一种语言有什么优势吗?

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

主要区别在于:

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

如果您告诉我们更多您想要做什么,也许我们可以为您提供更具体的意见或建议其他替代方案。

【讨论】:

  • 对不起,我对 Python 的编程范式有误解,感谢您的澄清。似乎 Iron Python 最好为我的应用程序添加脚本支持,而 F# 最好添加复杂的算法(例如模式匹配)。这听起来对吗?
  • @PureCognition:是的,这听起来对我来说是正确的,这就是我使用这两者的方式。但如果其他人不同意,我很乐意用更多的优点和缺点来扩展列表。
【解决方案2】:

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

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

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

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

【讨论】:

  • spassig,您主要使用 IronPython 创建可在编译后更改的可定制业务和验证规则吗?
  • PureCognition,我们在 IronPython 中为我们的应用程序的整个 GUI 构建逻辑(对话框、图表、事件处理程序、请求、DocumentWindows ......)
【解决方案3】:

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

【讨论】:

  • F# 也适用于高并发应用。
  • 您的并发注释可能会派上用场,Greg。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-06
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 2013-09-08
  • 2011-05-27
相关资源
最近更新 更多