问题标签 [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.

0 投票
10 回答
989 浏览

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

0 投票
6 回答
1619 浏览

boo - Boo 能为您做什么?

试图获得一个业余项目爱好,让我从朝九晚五的 C# 工作中保持动力,并且正在研究 Boo。一些?

  • 你和 Boo 在一起是什么体验?
  • 您使用 Boo 完成了哪些应用程序/项目或
  • Boo有什么能力?

猜猜是网络世界,想弄脏桌面应用程序等。

0 投票
9 回答
19921 浏览

c# - var 关键字的意义何在?

var关键字消除了对显式类型声明的需要,我感兴趣地阅读了关于何时可能合适的SO讨论

我还阅读了关于(但未使用过)Boo的内容,它似乎通过将声明局部变量设为可选而使事情更进了一步。使用 Boo,类型和声明都可以隐含。

这让我想知道,为什么 C# 语言设计者要费心包含一个 var 关键字?

更新:是的, var 支持匿名类型,但匿名类型本身并不需要 var 关键字...

相对

0 投票
1 回答
1672 浏览

syntax - Boo 中的 Lambda 表达式?

你如何处理 boo 中的 lambda?“可调用”是一回事吗?如何定义以 lambda 作为参数的方法?

0 投票
1 回答
643 浏览

.net - Boo 可见的内部结构 (Binsor)

我正在为 IoC 使用 Castle Windsor,我想使用 Binsor 来定义我的配置。我想让 Boo 看到我的内部结构。我试图用它来标记我的程序集, InternalsVisibleTo("Boo.Lang")但这并没有完成这项工作。我已经尝试过InternalsVisibleTo("Rhino.Commons"),因为我注意到异常是从 Rhino.Commons.Binsor.BooComponentInstaller 中引发的,但这也不起作用。有任何想法吗?

0 投票
2 回答
452 浏览

boo - 如何在 Boo 中添加语言关键字以让“何时”表现为“如果”

我似乎无法弄清楚如何将'when'关键字添加到应该表现为'if'的BOO 。我想我可以制定一个方法,但是我不能像使用 if 那样移动 when 。任何指针将不胜感激。

-标记

0 投票
2 回答
1558 浏览

c# - 最小 Silverlight 示例

Silverlight 应用程序的真正最小示例是什么?

例如,我使用 IronPython 做了以下示例:

然后我使用chiron并创建了一个 .xap 文件。没有(显式)XAML,什么都没有。是否可以在 C# 中做同样的事情?我可以从命令行编译的一个源文件?如果是这样,源代码是什么?

我的动机是尝试使用非传统语言创建 silverlight 应用程序,现在我被困在 Boo...

0 投票
3 回答
1288 浏览

c# - .NET 嵌套类

我正在研究的当前类库将有一个基类(字段),其中包含 50 多种特定的“字段”类型,这些类型将从“字段”继承并嵌套以保持可读性。例如...

到目前为止,一切看起来都不错,我可以使用如下所示的代码:

但是,为什么这也有效?这里发生了什么,允许编译器/IDE 智能感知继续链接这些“FieldA”?

无论如何,这不是应用程序破坏,而是认为它很奇怪。在 Boo 中做同样的事情(这是用于库的实际语言)。

0 投票
11 回答
6627 浏览

.net - 在为规则引擎创建 DSL 时使用什么技术?

您会推荐什么技术来为 .NET 的业务规则和验证应用程序块创建 DSL ?为什么?

框架的架构由产品建立和验证测试。我只想创建一个 .NET 处理器来将人类可读的规则转换为已编译的规则实现。

我知道的选项是:

不幸的是,考虑到 DSL 语法(它会不断发展),这些方法都没有提供任何东西来构建或多或少友好的 IDE 来编辑 DSL。

有什么想法或提示吗?

0 投票
4 回答
2632 浏览

python - BOO 与 IronPython

IronPythonBOO有什么区别?是否需要 2 种类似 Python 的语言?