问题标签 [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.
java - Functor 和 Command 模式有什么区别?
我对命令模式非常熟悉,但我还不了解 Functor 和命令之间的理论区别。特别是,我正在考虑 Java 实现。两者基本上都是编程表示为对象的“动词”。然而,就仿函数而言,正如我从一些示例中看到的,匿名内部类实现似乎很常见。那里的任何人都可以很好地为我解决这个问题吗?
algorithm - 写出代码仍然被认为是一种算法表示吗?
我刚刚在测试中丢失了 50% 的答案,因为我在期中写出了代码而不是算法,将我从 A 撞到了 C。写出代码仍然被认为是算法表示吗?
维基百科:算法表示(因为编程风格几乎是基于共识的)
编辑:好的,让我明确几点:
测试要求使用我们从未在课堂上真正“定义”过的伪代码;我们刚刚为我们的算法写了英文。
它是一个 Java 类,并在 Java 方法中写出了整个解决方案以及注释。所有这些都是手写的,写出来的时间比伪代码要长。我以为会更清楚。
我通常不会对这些事情提出异议,但这是 A 和 C 之间的区别,而且我在考试中获得奖学金。
最后,我写这篇文章有两个原因:
4.1 我想展示现代编程社区对伪代码和算法表示的看法。
4.2 我想知道在“现实世界”中什么是可以接受的;我已经编程了一段时间,但我希望能够尽快为开源项目做出贡献,我不想踩到任何人的脚趾。(虽然我很确定这个话题在现实世界中出现的可能性很小)。
再次感谢您的任何帮助/建议。
unicode - 如何在 Unicode 中将字符串设置为大写/小写?
这主要是一个我很好奇的理论问题。(我不是想通过自己编码或任何东西来做到这一点,我不是在重新发明轮子。)
我的问题是大写/小写等价表如何适用于 Unicode。
例如,如果我必须在 ASCII 中执行此操作,我会取一个字符,如果它落在 [az] 范围内,我会将 A 和 a 之间的差相加。
如果它不在那个范围内,我会为 10 个左右的重音字符加上 ñ 提供一个小的等价表。(或者,我可以有一个包含 256 个条目的完全等价数组,其中大部分与输入相同)
但是,我猜有一种更好的方法来指定 Unicode 中的等价,因为有数十万个字符,理论上,可以添加一种新语言或一组字符(我期待你发生这种情况时不需要修补窗口)。
Windows 是否对每个字符都有一个巨大的硬编码等价表?或者这是如何实现的?
一个相关的问题是 SQL Server 如何实现基于 Unicode 的不区分重音和不区分大小写的查询。它是否有一个内部表告诉它 é ë è E É È 和 Ë 都等价于“e”?
在比较字符串时,这听起来不是很快。
它如何快速访问索引?它是否已经索引值转换为它们的“基本”字符,对应于该字段的排序规则?
有谁知道这些东西的内部原理?
谢谢!
theory - 替代熵源
好的,我想这完全是主观的,但我正在考虑随机数生成器的熵源。大多数生成器都是以当前时间播种的,对吗?好吧,我很好奇还有哪些其他来源可以用来生成完全有效的随机(松散定义)数字。
使用多个源(例如时间 + 当前 HDD 寻道时间 [我们在这里太棒了])一起创建一个比单个源“更随机”的数字吗?来源数量的逻辑限制是什么?多少才真正够?仅仅因为方便才选择时间吗?
如果不允许这种事情,请原谅,但我对来源背后的理论感到好奇。
refactoring - “重构”有什么正式的定义吗?
任何人都知道以更正式的方式定义重构的方法吗?
更新。
重构是一对 R = (pre; T),其中 pre 是程序必须满足的前提条件,T 是程序转换。
theory - XKCD 中的 Wolfram 规则 34
#505 xkcd中的悬停“笑话”吹捧“我根据 Wolfram 的规则 34 调用规则 34”。
我知道Internet 术语中的第 34 条规则,并且我已经搜索了Wolfram 是谁,但我很难弄清楚 Wolfram 的第 34 条规则是什么。
那么这个“第 34 条”究竟是什么?
这是漫画:http: //xkcd.com/505/。
haskell - 我需要多少数学才能在 Haskell 中变得富有成效?
我有兴趣在自己的时间(而不是通过课程)学习 Haskell,但我怀疑我的数学背景可能不足以理解重要的语言概念 (TBD)。
我有一年的大学微积分(单变量),但没有离散数学或逻辑。
我会在数学上遇到空白吗?
algorithm - 解释计算复杂性理论
假设您有一些数学背景,您将如何向天真者提供计算复杂性理论的一般概述?
我正在寻找 P = NP 问题的解释。什么是P?什么是NP?什么是 NP-Hard?
有时 Wikipedia 写得好像读者已经理解了所涉及的所有概念。
algorithm - 集合并集运算的运行时间
给定两个集合 A 和 B,找到它们并集的常用算法是什么,它的运行时间是多少?
我的直觉:
添加检查碰撞,即 O(1),然后添加元素,即 (??)。这样做 n 次(其中 n 是 |a| + |b|)。所以这是 O(n * x),其中 x 是添加操作的平均运行时间。
它是否正确?
accessibility - 对于盲人程序员来说,有哪些好的计算机科学资源?
我是一个完全失明的人,想了解更多计算机科学的理论方面。我有一个介绍数据结构类和一般介绍编程,但想了解更多关于软件设计、高级数据结构和编译器设计等内容。我想把它作为一门自学课程来做,而不是作为大学课程的一部分。
不幸的是,我通常从那里得到我的教科书的盲人和阅读障碍者录音中的计算机科学教科书并不多。我会很感激任何最好是免费的电子资源,它可以帮助我获得更多的计算机科学教育,而不是许多编程网站似乎关注的最新语言或平台。