Tag: programming languages

构建一个简单的解释器

我正在开始一个项目,我需要实现一个轻量级的解释器。 解释器用于执行简单的科学算法。 此解释器将使用的编程语言应该很简单,因为它针对的是非软件开发人员(例如,数学家)。 解释器应该支持基本的编程语言function: 实数,变量,多维数组 二进制(+, – ,*,/,%)和布尔(==,!=,, =)操作 循环(for,while),条件表达式(if) function MathWorks MatLab是我前进的一个很好的例子,更简单。 解释器将用作演示算法的环境; 简单的算法,如查找数据集/数组的平均值,或稍微复杂的算法,如高斯消元法或RSA 。 我在这个主题上发现的最佳/最实用的资源是Ron Ayoub在Code Project上的条目( 使用解释器模式解析代数表达式 ) – 这是我问题的缩小版本的完美示例。 紫龙书似乎太多了,更实用了吗? 解释器将使用C#实现为.NET库。 但是,欢迎任何平台的资源,因为这个问题的设计架构部分是最具挑战性的。 任何实用资源? (请避免“这不是微不足道的”或“为什么要重新发明轮子”的回应)

C#是单一派遣还是多种派遣语言?

我正在努力理解单个和多个调度是什么。 我刚看过这个: http://en.wikipedia.org/wiki/Multiple_dispatch 从这个定义来看,我认为C#和VB.Net是多分派的,即使在编译时选择了哪个重载调用。 我在这里是正确的,还是我错过了什么? 谢谢!

Eric Lippert挑战“逗号 – 狡辩”,最佳答案?

我想把这个挑战引起stackoverflow社区的注意。 原始问题和答案都在这里 。 顺便说一句,如果你之前没有按照它,你应该尝试阅读Eric的博客,这是纯粹的智慧。 摘要: 编写一个带有非null IEnumerable的函数,并返回一个具有以下特征的字符串: 如果序列为空,则生成的字符串为“{}”。 如果序列是单个项“ABC”,则结果字符串为“{ABC}”。 如果序列是两个项目序列“ABC”,“DEF”,那么结果字符串是“{ABC和DEF}”。 如果序列具有两个以上的项目,例如“ABC”,“DEF”,“G”,“H”,则结果字符串为“{ABC,DEF,G和H}”。 (注意:没有牛津逗号!) 你甚至可以看到我们自己的Jon Skeet(是的,众所周知, 他可以同时在两个地方 )发布了一个解决方案,但他的(恕我直言)并不是最优雅的,尽管你可能无法击败它性能。 你怎么看? 那里有很好的选择。 我真的很喜欢其中一种涉及选择和聚合方法的解决方案(来自Fernando Nicolet)。 Linq非常强大,并且花了一些时间来应对这样的挑战让你学到很多东西。 我扭曲了一下,所以它更高效和清晰(通过使用Count并避免反向): public static string CommaQuibbling(IEnumerable items) { int last = items.Count() – 1; Func getSeparator = (i) => i == 0 ? string.Empty : (i == last ? ” and ” : “, “); […]