问题标签 [theory]
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.
model-view-controller - 网络理论和MVC
我设计了一个不允许视图(表单)之间通信的 MVC。如果一个表单需要与另一个表单通信,它会在控制器上引发一个事件,其他表单可以订阅该事件。总体思路是将通信路径保持在最低限度,有助于降低复杂性。每个 View 都与 RootController 通信,RootController 是一个单例,或者是一个子控制器,View 通过 RootController 访问它。同样,它使通信路径保持向下,因为一切都通过 RootController。
这是否遵循一般网络理论,其中添加到网络的节点越多,网络就越复杂。“并且”,这些节点中的每一个直接通信越多,引入网络的复杂性就越大。谁能指出这个领域/理论到底叫什么?参考?
我对 MVC 所做的事情是否类似于让网络上的所有节点都通过一个中央节点相互通信?
computer-science - 理论计算机科学主题有“现实世界”的开发应用吗?
通过“理论计算机科学主题”,我指的是诸如常规语言与非常规语言、抽引引理和语法之类的东西。
我熟悉有限自动机和正则表达式在现实世界中的应用,但是诸如此类的其他主题给我带来了更多问题,因为我没有看到任何现实世界的应用。
c# - 我应该避免替代控制语法吗?
作为一个主要是自学成才的程序员,我从来没有真正让任何人解释为什么应该或不应该使用某些东西。一个例子(我多年前捡到并且经常使用)是另一种控制结构语法:
我个人觉得这种语法很容易理解,特别是对于简短、简洁的代码,但我没有看到它在“野外”得到很多使用,所以我想知道在更多的情况下使用它是否是不好的做法传统的 if ... else结构?
提前致谢。
theory - 在非图灵完备语言中停止
对于图灵完备的语言,停止问题无法解决,而对于某些非 TC 语言(如它总是停止的正则表达式),它可以轻松解决。
我想知道是否有任何语言同时具有停止和不停止的能力,但承认可以确定它是否停止的算法。
parsing - 如何判断一种语言是否为 LL(1) LR(0) SLR(1)
是否有一种简单的方法可以确定语法是否为 LL(1)、LR(0)、SLR(1)... 只需查看语法而不进行任何复杂的分析?
例如:要确定 BNF 语法是否为 LL(1),您必须计算 First 和 Follow 集——在某些情况下这可能很耗时。
有没有人知道如何更快地做到这一点?任何帮助将不胜感激!
math - 为什么程序不能被证明?
为什么不能像数学陈述一样证明计算机程序?数学证明建立在其他证明的基础上,这些证明建立在更多证明和公理之上——我们认为这些真理是不言而喻的。
计算机程序似乎没有这样的结构。如果你写一个计算机程序,你怎么能把以前证明过的作品拿来用它们来证明你的程序的真实性?你不能,因为不存在。此外,编程的公理是什么?该领域的原子真理?
我对上述问题没有很好的答案。但似乎软件无法被证明,因为它是艺术而不是科学。如何证明毕加索?
java - 为什么人们使用 Velocity 和/或 NVelocity?
在过去的一年里,我听到了很多关于 Velocity 和 NVelocity 的信息。阅读他们的文档并在网上进行搜索并没有给我想要的答案。
在什么情况下我会在我的开发中使用这个库?它解决了哪些尚未解决的问题?
unit-testing - 你会在 10 分钟的 Grok 单元测试演讲中包括什么
我很快就会在我的公司做一个 10 分钟的关于单元测试的 Grok 演讲。我自己也一直在尝试,觉得肯定能给公司带来好处。我们已经在我们专门的 QA 团队中进行了 WebInject 测试,但我想尝试向开发人员出售单元测试。
所以只有 10 分钟,你会涵盖什么,为什么?
- 我们是 Microsoft Shop C# Web 应用程序,在我的经验中我使用过 NUnit。
oop - 封装通用逻辑(领域驱动设计、最佳实践)
更新: 09/02/2009 - 修订问题,提供更好的示例,增加赏金。
嗨,
我正在使用数据库和实体(域对象)之间的数据映射器模式构建一个 PHP 应用程序。我的问题是:
封装通常执行的任务的最佳方法是什么?
例如,一项常见任务是从站点映射器检索一个或多个站点实体,并从页面映射器检索它们的关联(主页)页面实体。目前,我会这样做:
现在这是一个相当微不足道的例子,但实际上它变得更加复杂,因为每个站点也有一个关联的语言环境,并且页面实际上有多个修订版(尽管出于本任务的目的,我只对最近的一个感兴趣)。
我将需要在我的应用程序中的多个位置执行此操作(获取站点和关联的主页、区域设置等),并且我想不出封装此任务的最佳方式/位置,所以我不会必须到处重复。理想情况下,我希望得到这样的结果:
生成的站点实体已创建关联实体并可供使用。
保存这些对象时也会出现同样的问题。假设我有一个站点实体和关联的主页实体,并且它们都已被修改,我必须执行以下操作:
同样,微不足道,但这个例子被简化了。重复代码仍然适用。
在我看来,拥有某种可以处理的中心对象是有意义的:
- 检索一个(或多个)站点和所有必要的关联实体
- 使用新的关联实体创建新的站点实体
- 获取一个(或多个站点)并保存它和所有关联实体(如果它们已更改)
所以回到我的问题,这个对象应该是什么?
- 现有的映射器对象?
- 基于存储库模式的东西?*
- 基于工作模式的东西?*
- 还有什么?
*正如您可能猜到的那样,我不完全理解其中任何一个。
有没有解决这个问题的标准方法,有人可以提供他们如何实现它的简短描述吗?我不是在寻找任何人来提供一个完全有效的实现,只是理论。
谢谢,
杰克