问题标签 [boo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
boo - 什么时候一种新语言是适合这项工作的工具?
很长一段时间以来,我一直在尝试不同的语言来找到我想要的功能集,但我一直无法找到它。我的语言非常适合我的各种项目,但我提出了这些语言的交集,这将使我能够用一种语言完成 99.9% 的项目。我想要以下内容:
- 构建在 .NET 之上或具有 .NET 实现
- 在编译时和运行时对 .NET 运行时的依赖很少(这很重要,因为主要用例之一是在 .NET 运行时完全自定义的嵌入式开发中)
- 有一个 100% .NET 代码的编译器,没有非托管依赖项
- 支持任意表达式嵌套(见下文)
- 支持自定义运算符定义
- 支持类型推断
- 优化尾调用
- 具有明确的不可变/可变定义(很好——我开始喜欢这个但没有它也可以生活)
- 支持强大的元编程的真实宏(绝对必备)
我主要使用的两种语言是 Boo 和 Nemerle,但我也使用过 F#。
对 Nemerle 的主要抱怨:编译器有可怕的错误报告,实现是地狱般的错误(编译器和库),宏只能在函数内或作为属性应用,而且依赖关系相当严重(尽管还不够破坏者)。
对 Boo 的主要抱怨:没有任意表达式嵌套(dealbreaker),宏难以编写,没有自定义运算符定义(潜在的 dealbreaker)。
对 F# 的主要抱怨:难看的语法、难以理解的元编程、非自由许可证(史诗般的交易破坏者)。
所以我想得越多,我就越想开发自己的语言。
优点:
- 获取我想要的确切语法
- 获得更快的周转时间;很难量化,但看到 1.5 倍的开发人员生产力我不会感到惊讶,特别是由于测试基础设施可以为某些项目启用
- 我可以轻松地向编译器添加自定义功能,以便与我的运行时完美配合
- 我得到了完全按照我想要的方式设计和工作的东西——尽管这听起来像 NIH,但这会让我的生活更轻松
缺点:
- 除非它能够流行起来,否则我将被维护的负担所困。我知道我至少可以让 Nemerle 人过来,因为我认为每个人都想要更专业的东西,但这需要一个村庄。
- 由于第一个骗局,我对在专业环境中使用它持谨慎态度。也就是说,我已经在使用 Nemerle 并使用我自己的自定义修改编译器,因为他们根本没有很好地维护它。
- 如果它没有得到普及,那么寻找开发人员将变得更加困难,以至于保罗格雷厄姆甚至可能不会宽恕。
所以基于所有这些,普遍的共识是什么——这是一个好主意还是一个坏主意?也许更有帮助的是,我是否错过了任何重大的利弊?
编辑:忘记添加嵌套示例——这是 Nemerle 的一个案例:
编辑#2:认为如果存在将转换为这种语言的代码类型的示例,这不会有什么坏处(仅 S. Lott 的回答可能足以吓跑我不要这样做)。该代码大量使用了自定义语法(操作码、:=、quoteblock 等)、表达式嵌套等。您可以在此处查看一个很好的示例:here。
boo - Boo 能为您做什么?
试图获得一个业余项目爱好,让我从朝九晚五的 C# 工作中保持动力,并且正在研究 Boo。一些?
- 你和 Boo 在一起是什么体验?
- 您使用 Boo 完成了哪些应用程序/项目或
- Boo有什么能力?
猜猜是网络世界,想弄脏桌面应用程序等。
c# - var 关键字的意义何在?
var关键字消除了对显式类型声明的需要,我感兴趣地阅读了关于何时可能合适的SO讨论。
我还阅读了关于(但未使用过)Boo的内容,它似乎通过将声明局部变量设为可选而使事情更进了一步。使用 Boo,类型和声明都可以隐含。
这让我想知道,为什么 C# 语言设计者要费心包含一个 var 关键字?
更新:是的, var 支持匿名类型,但匿名类型本身并不需要 var 关键字...
相对
syntax - Boo 中的 Lambda 表达式?
你如何处理 boo 中的 lambda?“可调用”是一回事吗?如何定义以 lambda 作为参数的方法?
.net - Boo 可见的内部结构 (Binsor)
我正在为 IoC 使用 Castle Windsor,我想使用 Binsor 来定义我的配置。我想让 Boo 看到我的内部结构。我试图用它来标记我的程序集,
InternalsVisibleTo("Boo.Lang")
但这并没有完成这项工作。我已经尝试过InternalsVisibleTo("Rhino.Commons")
,因为我注意到异常是从 Rhino.Commons.Binsor.BooComponentInstaller 中引发的,但这也不起作用。有任何想法吗?
boo - 如何在 Boo 中添加语言关键字以让“何时”表现为“如果”
我似乎无法弄清楚如何将'when'关键字添加到应该表现为'if'的BOO 。我想我可以制定一个方法,但是我不能像使用 if 那样移动 when 。任何指针将不胜感激。
-标记
c# - 最小 Silverlight 示例
Silverlight 应用程序的真正最小示例是什么?
例如,我使用 IronPython 做了以下示例:
然后我使用chiron并创建了一个 .xap 文件。没有(显式)XAML,什么都没有。是否可以在 C# 中做同样的事情?我可以从命令行编译的一个源文件?如果是这样,源代码是什么?
我的动机是尝试使用非传统语言创建 silverlight 应用程序,现在我被困在 Boo...
c# - .NET 嵌套类
我正在研究的当前类库将有一个基类(字段),其中包含 50 多种特定的“字段”类型,这些类型将从“字段”继承并嵌套以保持可读性。例如...
到目前为止,一切看起来都不错,我可以使用如下所示的代码:
但是,为什么这也有效?这里发生了什么,允许编译器/IDE 智能感知继续链接这些“FieldA”?
无论如何,这不是应用程序破坏,而是认为它很奇怪。在 Boo 中做同样的事情(这是用于库的实际语言)。
.net - 在为规则引擎创建 DSL 时使用什么技术?
您会推荐什么技术来为 .NET 的业务规则和验证应用程序块创建 DSL ?为什么?
框架的架构由产品建立和验证测试。我只想创建一个 .NET 处理器来将人类可读的规则转换为已编译的规则实现。
我知道的选项是:
- 使用.NET Boo的编译器管道
- 使用 F# 附带的解析器构建器 - FsLex 和 FsYacc
不幸的是,考虑到 DSL 语法(它会不断发展),这些方法都没有提供任何东西来构建或多或少友好的 IDE 来编辑 DSL。
有什么想法或提示吗?
python - BOO 与 IronPython
IronPython和BOO有什么区别?是否需要 2 种类似 Python 的语言?