【问题标题】:Good dynamic programming language for .net recommendation [closed].net推荐的良好动态编程语言[关闭]
【发布时间】:2008-10-05 22:54:22
【问题描述】:

好吧,在用 C# 编写了很长时间的 .net 程序之后,我开始对静态类型语言附带的所有语法垃圾感到愤怒和沮丧。现在我想更改为利用 CLI 的动态类型语言。 所以我搜索了一下,我不喜欢我所看到的。我首先寻找 IronPython。但是这个项目感觉杂乱无章,看起来一点也不好看。然后我听说了Boo。我喜欢 boo 的,理想的和所有的,但有点感觉这个项目已经停止了。然后我听说了 IronRuby,但是这个项目还处于测试阶段,所以我决定等到它变得更成熟。

因此,由于我找不到与 CLR 兼容的良好动态语言,所以我问你们,你们(会)使用什么?

自从人们开始询问不选择 IronPython 的原因是什么。好吧,原因是,就像我之前所说的,它似乎杂乱无章。为什么?

1-主页指向codeplex的另一个页面,主页应该是干净的,只是指出IronPython的优点,以IronRuby页面为例http://www.ironruby.net/它对用户隐藏了语言开发的东西(即使用户必须先访问 IronRuby 的 svn 才能使用它)。 IPython 在创建时试图解决什么样的问题。是否有包含此类信息的页面? 好吧,该页面就在那里,但它隐藏在“更多信息页面”中的一堆无意义的文章链接中。 在 Boo 的页面上,它一目了然地命名为 Manifesto http://boo.codehaus.org/BooManifesto.pdf

还有更多,但我的感觉是 IPython 只是一个自制的解释器,尽管它实际上可以具有质量。 我觉得下载 Boo 并使用 IronPython 更安全(但不用担心微软我也下载了 IPython)。

关于 Duck-Typing 和 Boo 的静态类型,它们似乎对我来说都很好。

【问题讨论】:

标签: c# .net ironpython boo


【解决方案1】:

我仍然会使用Boo。我不确定你为什么认为 Boo 已经停止了。开发有时看起来很慢,但正如this list of recently fixed issues (bugs) 所证明的那样,目前有很多人正在修复错误。

对于那些不熟悉 Boo 的人来说,它与 Python 非常相似,但包含了 Python 所没有的东西(如 string interpolationsyntatic macros)。您可以通过“Boo Interactive Shell”booish编译 Boo 程序或使用 Boo。

顺便说一句,几年前我看到 IronPython 时也不喜欢它。对我来说,它看起来像是 Python 到 CLI 的直接端口,但据我所知,它不包含典型的 .NET 开发所需的新功能。

编辑:自从我第一次看到 IronPython 以来,它似乎确实取得了进步(感谢 Curt 指出这一点)。不过自从找到 Boo 之后,我就再也懒得再看 IronPython 了。

【讨论】:

  • 嗯,我相信你是对的。我猜我看错地方了,但是关于它的可用性,你认为它可以用于中等规模的应用程序吗?
  • 你用什么 IDE 来编程 Boo?
  • 除了 LINQ(在不改变核心语言的情况下很难将其硬塞进 Python ——“拥抱和扩展”的提示性评论),你有什么“.NET 的新特性”认为失踪?显然,我全心全意地支持 IronPython!
  • +1 来自我。 Boo 是一门很棒的语言,拥有一个不错的(尽管很小)社区。 SharpDevelop 是一款出色的 IDE,从一开始就支持 Boo。
  • Boo 很棒,但它不是动态的。这就是 Boo 和 python 的主要区别。
【解决方案2】:

就实际可用性而言,IronPython 将是您现在最好的选择。

为什么人们建议 Boo?这是一种静态类型的语言,这不是这个问题所要求的。是的,我知道它有可选的鸭子类型,但是如果问题作者可以接受与 Boo 相关的信息,那么确实应该对问题进行编辑以明确这一点。

关于 IronPython,您说您不喜欢它,但对于如此含糊的关键 cmets,我真的没有任何回应 :)

另外,我建议您查看cPython。几点:

  • 您可以使用 py2exe 和其他工具构建 .exe 文件。
  • 对第 3 方 Python 库和框架的更大访问权限
  • 通过 pywin32 访问 Windows API
  • 用 C 编写的 Python 扩展是可用的(与 IronPython 不同,虽然有 efforts 正在改进这种情况)

您会发现大多数事情实际上并不需要 .NET。当然,这一切都取决于您的应用程序。要与现有的 .NET 代码集成,显然您必须使用 IronPython。

【讨论】:

  • 很抱歉将您的帖子标记为答案,我的问题没有正确或错误的答案。
【解决方案3】:

你说你想要“动态”,但如果动机只是为了避免“所有那些语法垃圾”,你应该看看F#。它是静态类型的,但具有动态语言的轻量语法感觉,以及交互模式(REPL 循环)。

【讨论】:

  • Brian,我以前的经验表明,函数式语言的应用主要是数学,这不是我的情况(常见的 windows 应用程序)。
【解决方案4】:

我同意您的观点,即 IronPython 似乎杂乱无章,但我一直将它用于(小型)项目,到目前为止我对它非常满意。

如果您还没有看过,请查看IronPython Studio

【讨论】:

    【解决方案5】:

    我也走上了类似的道路。查看了 Boo、dotLISP、IronPython 等。

    我推荐 IronPython。但是,如果您还没有任何 Python 经验,那么您可能会通过加载 CPython 并将其用于示例和教程来更快地学习核心 Python。

    一旦你了解了 CPython,IronPython 就会更容易理解。当然,您仍然需要了解一些 C# 并可以访问 .Net SDK 文档。没有它,IronPython 很难完成有用的事情。

    【讨论】:

      【解决方案6】:

      您还可以查看Fan 语言。它不是纯粹的动态,它是静态和动态的混合体。和大多数较新的语言一样,它是纯面向对象,其中混合了功能。它还可以在 JVM 和 CLR 平台上运行。

      在语法方面,它更接近于 C#,有很多糖语法,所以它看起来有点像 C# 与 Ruby/Python 的融合。

      由于语言是新的,只有 3 年的历史,它的性能还不是很出色。

      2014 年 2 月 21 日更新: Fan 已将其名称更改为 Fantom

      【讨论】:

        【解决方案7】:

        看看Clojure。 CLR 版本仍处于早期阶段,但您可以通过IKVM 获得在 .Net 中运行的 java 版本@

        【讨论】:

          【解决方案8】:

          ...静态类型语言附带的语法垃圾...

          如果您关心的是语法垃圾,那么您可能还想查看带有类型推断的静态类型语言,尤其是 F#

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-10-17
            • 2012-09-17
            • 2019-12-22
            • 2010-10-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-04-20
            相关资源
            最近更新 更多