9

好吧,在用 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 的静态类型,它们对我来说似乎都很好。

4

8 回答 8

7

我仍然会使用Boo。我不确定你为什么认为 Boo 已经停止了。开发有时看起来很慢,但目前有很多人正在修复错误,如最近修复的问题(错误)列表所示。

对于不熟悉 Boo 的人来说,它与 Python 非常相似,但包含了 Python 所没有的东西(如字符串插值语法宏)。您可以通过“Boo Interactive Shell” booish编译 Boo 程序或使用 Boo 。

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

编辑:自从我第一次看到 IronPython 以来,它似乎确实取得了进展(感谢 Curt 指出这一点)。然而,自从我找到 Boo 后,我就再也没有费心去看 IronPython。

于 2008-10-05T23:13:30.730 回答
7

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

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

关于 IronPython,您说您不喜欢它,但是对于如此含糊的批评性评论,我真的没有任何回应:)

或者,我建议您看一下cPython。几点:

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

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

于 2008-10-05T23:17:17.413 回答
5

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

于 2008-10-06T00:07:57.607 回答
1

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

如果您还没有看过它,您应该查看IronPython Studio

于 2008-10-05T22:56:31.230 回答
1

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

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

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

2014 年 2 月 21 日更新: Fan 已更名为Fantom

于 2008-10-06T03:51:15.690 回答
1

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

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

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

于 2008-10-13T22:28:51.723 回答
0

看看Clojure。CLR 版本仍处于早期阶段,但您可能可以通过IKVM让 java 版本在 .Net 中工作

于 2009-12-15T18:00:28.427 回答
0

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

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

于 2011-02-08T15:37:00.977 回答