良好的.net推荐动态编程语言
本文关键字:动态 编程语言 net | 更新日期: 2023-09-27 17:47:25
在用C#编写.net程序很长一段时间后,我开始对静态类型语言带来的语法垃圾感到愤怒和沮丧。现在我想更改为动态类型语言,这将利用CLI。所以我到处找了一下,我不喜欢我看到的东西。我第一次找的是IronPython。但这个项目感觉杂乱无章,只是看起来一点都不好。然后我听说了布。我喜欢boo的,理想的等等,但感觉这个项目暂停了。然后我听说了IronRuby,但该项目仍处于测试阶段,所以我决定等到它变得更加成熟。
所以,由于我找不到一种好的CLR兼容的动态语言,我想问你们,你们(会)用什么?
自从人们开始问为什么不选择IronPython。原因是,正如我之前所说,它看起来杂乱无章。为什么?
1-主页指向codeplex的另一个页面,主页应该是干净的,并指出IronPython的优点,以IronRuby页面为例http://www.ironruby.net/它向用户隐藏了语言开发人员的东西(即使用户在使用IronRuby的svn之前必须访问它)。IPython在创建时试图解决什么样的问题。有这样的信息吗?这个页面就在那里,但它隐藏在"更多信息页面"上的一堆毫无意义的文章链接中。在布的页面上,它被命名为宣言http://boo.codehaus.org/BooManifesto.pdf。
还有更多,但我的感觉是,IPython只是一个自制的口译员,尽管它实际上可以具有这样的质量。我觉得下载Boo并使用IronPython更安全(但不用担心,微软也下载了IPython)。
关于Duck打字和Boo的静态打字,它们似乎对我来说都很好。
我仍然会使用Boo。我不知道你为什么相信Boo已经被叫停了。开发有时看起来很慢,但正如最近修复的问题(bug)列表所示,目前有多人在修复bug。
对于那些不熟悉Boo的人来说,它与Python非常相似,但包括Python没有的东西(如字符串插值和语法宏)。您可以编译Boo程序或通过"Boo Interactive Shell"booish使用Boo。
顺便说一句,几年前我看IronPython的时候,我也不喜欢它。对我来说,它看起来像是Python到CLI的直接端口,但据我所知,它没有包含.NET开发所需的典型新功能。
EDIT:自从我第一次看到IronPython以来,它似乎确实有所进步(感谢Curt指出这一点)。然而,自从我找到Boo之后,我就再也没有费心去看IronPython了。
就实用性而言,IronPython将是您目前的最佳选择。
为什么人们建议Boo?这是一种静态类型的语言,这不是这个问题所要求的。是的,我知道它有可选的鸭子类型,但实际上,如果Boo相关信息对问题作者来说是可以接受的,那么这个问题真的应该进行编辑以使其清楚。
关于IronPython,你说你不喜欢它,但对于如此模糊的评论,我真的没有任何回应:)
或者,我建议您看看cPython。几点:
- 您可以使用py2exe和其他工具构建.exe文件
- 对第三方Python库和框架的更大访问权限
- 通过pywin32访问Windows API
- 用C编写的Python扩展是可用的(与IronPython不同,尽管目前正在努力改善这种情况)
你会发现你真的不需要.NET来做大多数事情。当然,这一切都取决于你的申请。为了与现有的.NET代码集成,显然必须使用IronPython。
你说你想要"动态",但如果动机只是为了避免"所有语法垃圾",你应该看看F#。它是静态类型的,但具有动态语言的轻松语法感觉,以及交互模式(REPL循环)。
我同意你的观点,即IronPython似乎杂乱无章,但我一直在(小型)项目中使用它,到目前为止我对此非常满意。
如果你还没有看过,你应该看看IronPython工作室。
我也走上了类似的道路。已检查Boo、dotLISP、IronPython等
我推荐IronPython。但是,如果你还没有任何Python经验,那么你可能会更快地通过加载CPython并将其用于示例&教程。
一旦您了解了CPython,IronPython将更容易理解。当然,您仍然需要了解一些C#并能够访问.Net SDK文档。如果没有它,IronPython就很难完成有用的事情。
您还可以了解Fan语言。它不是纯粹的动态,它是静态和动态的混合体;动态和大多数较新的语言一样,它是纯OO,混合了函数。它也在JVM和CLR平台上运行。
从语法角度来看,它更接近于带有大量糖语法的C#,所以它看起来有点像C#与Ruby/Python的融合。
由于这种语言是新的,只有3年的历史,它的性能还不是很好。
2014年2月21日更新:Fan已将其名称更改为Fantom
查看Clojure。CLR版本仍处于早期阶段,但您可能会通过IKVM
让java版本在.Net中运行静态类型语言附带的语法垃圾。。。
如果您关心的是语法垃圾,那么您可能还想检查具有类型推理的静态类型语言,最显著的是F#。