好的动态编程语言推荐(针对.NET)

9
在写了很长一段时间的C# .net程序之后,我开始感到愤怒和沮丧,因为所有静态类型语言所带来的语法垃圾。现在我想改用动态类型语言,并利用CLI的优势。
所以我四处搜寻,但我不喜欢看到的东西。我首先找了IronPython。但是这个项目感觉组织混乱,看起来一点也不好。然后我听说了Boo。我喜欢Boo的理念和一切,但它似乎停滞不前。然后我听说了IronRuby,但该项目仍处于测试版,所以我决定等待它更加成熟。
既然我找不到一个好的CLR兼容的动态语言,我就问你们会使用什么?
由于人们开始询问为什么不选择IronPython的原因。好吧,原因是,正如我之前所说,它似乎组织混乱。为什么?
1-主页指向codeplex上的另一页,主页应该干净简洁,只需要指出IronPython的优点,以http://www.ironruby.net/为例,隐藏了语言开发方面的东西(即使用户必须在使用之前访问IronRuby的svn)。 IPython试图解决什么样的问题?有没有这种信息的页面? 页面在那里,但它被隐藏在“更多信息页面”中,其中包含一堆毫无意义的文章链接。 在Boo的页面上,它在清晰的视野中被命名为宣言http://boo.codehaus.org/BooManifesto.pdf
还有更多,但我感觉IPython只是一个自制的解释器,尽管它实际上可能具有很高的质量。 我觉得下载Boo并使用IronPython更安全(但不用担心Microsoft,我也下载了IPython)。
关于鸭子类型和Boo的静态类型,它们对我来说都可以正常工作。

IronPython 的主页就是 Codeplex 网站:http://www.codeplex.com/IronPython - Curt Hagenlocher
8个回答

7
我仍然会使用Boo。我不确定您为什么认为Boo已经停止。开发有时似乎很慢,但目前有多个人正在修复错误,正如这个最近修复的问题(错误)列表所示
对于那些不熟悉Boo的人来说,它非常类似于Python,但包括Python没有的东西(例如字符串插值语法宏)。您可以编译Boo程序或通过“Boo交互式Shell”booish使用Boo。

顺便提一下,我几年前也不喜欢IronPython。对我来说,它看起来像是将Python直接移植到CLI上,但据我所知,它并没有包含.NET开发所需的新功能。

编辑:IronPython似乎已经有了进展(感谢Curt指出)。然而自从我找到了Boo之后,我就没有再去看过IronPython。


除了LINQ之外(在不对核心语言进行更改的情况下很难将其引入Python,这就引出了"拥抱和扩展"的评论),你认为.NET缺少哪些"新特性"?显然,我全力支持IronPython! - Curt Hagenlocher
1
我给你点个赞。Boo是一门很棒的语言,拥有一个不错(虽然规模较小)的社区。SharpDevelop是一款出色的IDE,从一开始就支持Boo。 - torial
1
Boo很棒,但它不够动态。这就是Boo和Python之间的主要区别。 - justin.m.chase
@提醒一下:尽管Boo不是严格意义上的动态语言,但它的类型推断和鸭子类型使其非常具有动态性。 - Mauricio Scheffer
@Mauricio Scheffer:严格来说,它仍然不是动态的,但你说得对,这两个特性在很大程度上使其感觉动态。我认为,要真正实现动态,您必须能够编辑类型元数据,虽然鸭子类型是一种进行对象后期绑定调用的方法,这是动态特性的一种。 - justin.m.chase
显示剩余9条评论

7
就实用性而言,目前来说IronPython是您最好的选择。
为什么有人建议使用Boo?它是一种静态类型语言,这不是这个问题所要求的。是的,我知道它具有可选的鸭子类型,但如果Boo相关信息对于问题作者是可以接受的,那么问题应该被编辑以明确这一点。
关于IronPython,你说你不喜欢它,但是对于如此模糊的批评评论,我真的无法给出任何回应 :)
或者,我建议您看看cPython。几个要点:
  • 您可以使用py2exe和其他工具构建.exe文件。
  • 更多的第三方Python库和框架可供使用
  • 通过pywin32访问Windows API
  • 使用C编写的Python扩展是可用的(与IronPython不同,尽管已经有一些努力在改善这种情况)
您会发现,对于大多数事情,您实际上并不需要.NET。当然,这完全取决于您的应用程序。对于与现有.NET代码集成,那么显然必须使用IronPython。

很抱歉将您的帖子标记为答案,其实对于我的问题并没有一个正确或错误的答案。 - Diones

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

Brian,我的以往经验表明,函数式编程语言主要应用于数学领域,而这并不适用于我(普通的Windows应用程序)。 - Diones

1

我同意你的看法,认为IronPython似乎有些杂乱无章,但是我已经在(小型)项目中使用它,并且到目前为止我对它感到非常满意。

如果你还没有看过,你应该去看看IronPython Studio


1

你也可以看看 Fan 语言。它不是纯动态的,而是静态和动态的混合体。像大多数新语言一样,它是纯面向对象的,具有一些函数式编程的特点。它也可以在JVM和CLR平台上运行。

从语法上来说,它更接近于C#,但有很多类似Ruby/Python的语法糖。

由于这门语言还很新,只有三年的历史,其性能还没有达到巅峰。

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


1

我曾经走过类似的路。尝试了Boo、dotLISP、IronPython等等。

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

一旦您理解了CPython,IronPython就会变得更容易理解。当然,您仍然需要了解一些C#并且可以访问.NET SDK文档。否则,使用IronPython将极其难以实现有效的功能。


0

看看Clojure。CLR版本仍处于早期阶段,但你可能可以通过IKVM在.Net中运行Java版本。


0
如果你关注的是语法垃圾,那么你可能也想看看带有类型推断的静态类型语言,尤其是F#

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接