试图获得一个侧面项目的爱好,让我从C#的9-5工作中获得动力并且正在考虑Boo.一些?
猜猜是网络世界,想要掌握桌面应用程序等等.
好吧,经过很长一段时间用C#编写.net程序,我开始对静态类型语言带来的所有语法垃圾感到愤怒和沮丧.现在我想改用动态类型语言,它利用了CLI.所以我搜索了一下,我不喜欢我所看到的.我首先找了IronPython.但该项目感觉杂乱无章,它看起来并不好看.然后我听说了Boo.我喜欢boo,理想和所有,但它有点像项目停止.然后我听说IronRuby,但该项目仍处于测试阶段,所以我决定等到它变得更加成熟.
因为我找不到一个好的CLR兼容动态语言,我问你们你们(你们)会用什么?
由于人们开始询问不选择IronPython的原因是什么.好吧,原因是,正如我之前所说的那样,它似乎杂乱无章.为什么?
1-主页指向codeplex的另一个页面,主页应该是干净的,只是指出IronPython的优点,以IronRuby页面为例http://www.ironruby.net/它隐藏了语言开发的东西user(即使用户在使用之前必须访问IronRuby的svn).IPython在创建时试图添加什么样的问题.是否有包含此类信息的页面?那么页面就在那里,但它隐藏在"更多信息页面"中的一堆无意义的文章链接中.在Boo的页面上,它清晰可见,名为Manifesto http://boo.codehaus.org/BooManifesto.pdf.
我有更多的感觉,即IPython只是一个家庭酿造的翻译,尽管它实际上具有质量.我觉得下载Boo并使用IronPython更安全(但不用担心微软我也下载了IPython).
关于Duck-Typing和Boo的静态打字,它们似乎对我来说都很好.
看起来这两种语言都被称为"C#应该是什么",使用hygenic宏,REPL,Compiler作为Serivce(CaaS),静态+鸭子打字(C#之前的方式).这两种语言之间是否有任何重大差异,或者它们只是两种不同的实现,或多或少相同的东西?我在某地读过Nemerle的宏观服务比Boo更强大; 这是真的?
他们如何在当前活动,成熟度和IDE集成方面进行比较?
此外,C#5.0传闻的CaaS功能是否可能会使它们过时,如果它实现,或者是否有能够使它们保持相关的功能?
脚本/ AI/Dream.boo
import CultLib
import LonelyHero
class Dream(Enemy):
pass
Run Code Online (Sandbox Code Playgroud)
C#
var bc = new BooCompiler();
bc.Parameters.Input.Add(new FileInput("rsc/script/ai/" + "Dream" + ".boo"));
bc.Parameters.Pipeline = new CompileToMemory();
bc.Parameters.References.Add(Assembly.GetExecutingAssembly());
bc.Parameters.References.Add(Assembly.LoadFile(new DirectoryInfo("CultLib.dll").FullName));
bc.Parameters.References.Add(Assembly.LoadFile(new DirectoryInfo("sfmlnet-audio-2.dll").FullName));
bc.Parameters.References.Add(Assembly.LoadFile(new DirectoryInfo("sfmlnet-graphics-2.dll").FullName));
bc.Parameters.References.Add(Assembly.LoadFile(new DirectoryInfo("sfmlnet-window-2.dll").FullName));
var cc = bc.Run();
if(cc.GeneratedAssembly!=null)
{
cc.GeneratedAssembly.CreateInstance("Dream", true, BindingFlags.NonPublic, null,
new object[] {Parent, pos}, null, null);
}
else
{
foreach (var error in cc.Errors)
Console.WriteLine(error);
}
Run Code Online (Sandbox Code Playgroud)
在该行中,bc.Parameters.References.Add(Assembly.GetExecutingAssembly());我添加了执行程序集,其中包含名称空间"LonelyHero".但是,错误
rsc/script/ai/Dream.boo(2,8):BCE0021:未找到命名空间LonelyHero.也许你忘了添加装配参考?
出现.
LonelyHero应该存在,为什么会出现此错误,我该怎么做才能解决它?
注意:替换Assembly.GetExecutingAssmebly()为Assembly.GetAssembly(typeof(Enemy)),从而确保它在LonelyHero命名空间下添加了一个类,同样的错误发生.还有Assembly.LoadFile(new DirectoryInfo("LonelyHero.exe").FullName)
发生在Boo 0.9.4.9和booxw-1203中
我正在阅读Ayende的书中的示例章节,在Boo语言的网站上,我看到了对Spectre BDD框架的引用.
我想知道是否有人在他们的项目中使用它,如何工作以及是否有更多的例子和/或建议的读数.
如果您想知道,我是C#开发人员,所以我计划在C#/ .NET环境中使用它.
我想用Boo而不是C#构建一个ASP.NET MVC应用程序.如果您知道配置此类项目设置的步骤,我有兴趣知道我需要做什么.
MVC项目设置没问题.我正在试图弄清楚如何配置页面和项目切换到使用Boo语言和编译器.
您建议使用什么技术为.NET的业务规则和验证应用程序块创建DSL ?为什么?
框架的体系结构由生产建立并经过验证.我只想创建一个.NET处理器,将人类可读的规则转换为已编译的Rule实现.
我所知道的选项是:
遗憾的是,考虑到DSL语法(可能会发展),这些方法都没有提供任何构建或多或少友好的用于编辑DSL的IDE.
任何想法或提示?
我刚刚开始尝试了解有关 .Net VM 基础的更多信息,但立即就被某些事情迷惑了。我知道有一个叫做 DLR 的新东西,它允许 C# 中的所有动态内容和 IronX 语言的运行。但现在我正在阅读有关这种名为 Boo 的语言,显然早在 DLR 存在之前它就已经具有动态功能。所以,
1)这怎么可能?
2) DLR 在方程式中添加了什么?
3) 像 Boo 这样的语言通过在 DLR 中重新实现自身会获得什么好处吗?
从我在这里和那里收集到的信息来看,DLR 似乎来自 IronPython,当时他们提取了 .Net 中 DL 支持所需的所有内容,并将其置于可重用的形式。所以我猜测 DLR 没什么特别的,只是一些帮助 Microsoft.Scripting.dll 中的动态对象的库,但如果你有时间的话,你可以自己编写代码,这我猜 Boo 身上发生了什么事?然后对于 2 和 3,我想 DLR 的通用性和可重用性将允许任何未来的 DLR 改进自动继承,但如果您已经做出了您的计划,则没有迫切的“需要”重新实施使用 DLR自己的自定义运行时?或者 DLR 是否有一些秘密的 MS 技术,使其比我们在 .Net 上所做的任何事情都更好?
4) DLR 真的是一个运行时还是只是一组库?(到底什么是运行时?我可能需要学习更多编译器理论,然后才能理解这个问题的答案,或者它是否是一个有意义的问题。忽略这个问题。或者不要。)
5) IronPython 编译是如何工作的?它会编译为新的动态版本的 CIL,还是只是在包含程序文本的字符串前面添加“ironpython.exe”命令?嗯,如果dynamic是C#中的关键字,那么一定有一个动态版本的CIL,对吧?那么.Net如何知道在CIL上使用CLR还是DLR呢?
6) JVM 的 DaVinci 项目有什么不同吗?看起来它是 JVM 本身的实际重新实现。这种方法有什么影响?我猜性能会有巨大的提升,但还有其他什么吗?MS有什么理由不走这条路?
7) DLR 是否会让 Boo 在制作 DSL 方面变得有些过时了?