Questions tagged «theory»

理论问题涉及通常没有直接实际用途的主题。使用此标签时请小心:您的问题可能更适合Computer Science Stack Exchange网站。

11
系统复杂性的增加如何影响连续几代程序员?
作为一名“新”程序员(我于2009年首次写了一行代码),我注意到创建一个程序时相对容易,该程序现在可以显示诸如.NET框架之类的非常复杂的元素。现在,只需很少的命令即可创建可视界面或对列表进行排序。 在学习编程的同时,我也在并行学习计算理论。诸如排序算法,硬件如何协同工作的原理,布尔代数和有限状态机之类的东西。但是我注意到,如果我想测试我从理论上学到的一些非常基本的原理,那么入门总是要困难得多,因为很多技术被诸如库,框架和操作系统之类的东西所遮盖。 40/50年前就需要制作一个内存有效的程序,因为内存不足,而且价格昂贵,因此大多数程序员都密切关注数据类型以及处理器如何处理指令。如今,有些人可能会争辩说,由于处理能力和可用内存的增加,这些问题已不再是重点。 我的问题是,年长的程序员是否将此类创新视为天赐之物或抽象的附加层,为什么他们会这样认为?在探索扩展库领域之前,年轻的程序员是否会从学习低级编程中受益?如果是这样,那为什么呢?

11
如何确保我实际上在学习编程而不是简单地学习语言的细节?[关闭]
我经常听到一个真正的程序员可以在一周内轻松学习任何语言。有人告诉我,语言只是完成任务的工具。编程是必须学习和掌握的最终技能。 如何确保我实际上在学习编程而不是简单地学习语言的细节?以及我如何开发可应用于所有语言而不仅仅是一种语言的编程技能?

4
代码审查的目的是什么
我正在尝试以代码审查的价值出售我的组织。我曾在几个地方工作过。我已经看到它们用来确定样式选择和功能决策,并且我所看到的只是用于确保没有危险实现的直觉检查。我的直觉是,最有效的目的是在这两种选择之间。 那么,代码审查的目的是什么?

9
90/10程序优化规则的含义是什么?
根据Wikipedia的介绍,程序优化的90/10规则指出:“程序执行时间的90%用于执行10%的代码”(请参见此处的第二段)。 我真的不明白。这到底是什么意思?如何仅在执行10%的代码上花费90%的执行时间?那么其余90%的代码呢?如何仅在10%的时间内执行它们?

22
为什么有些程序员认为理论与实践之间存在差异?[关闭]
将软件工程与土木工程进行比较时,我惊讶地发现了另一种思维方式:任何土木工程师都知道,如果您想在花园中建造一个小木屋,则只需获取材料并进行建造,而如果您要建造一栋10层高的房子(或类似这样的房子),您需要做一些数学运算以确保它不会崩溃。 相反,在与一些程序员交谈或阅读博客或论坛时,我经常发现一种广泛的观点,可以或多或少地提出如下观点:理论和形式方法适用于数学家/科学家,而编程则更多地是要把事情做好。 这里通常暗示的是编程是非常实用的东西,即使形式方法,数学,算法理论,简洁/连贯的编程语言等可能是有趣的主题,但如果所有人都想得到东西,通常就不需要它们了。完成。 根据我的经验,我想说的是,虽然您不需要太多理论来编写100行脚本(小屋),但是要开发复杂的应用程序(10层建筑),则需要结构化的设计,定义的方法,良好的编程语言,可在其中查找算法的良好教科书等。 因此,IMO(适量的)理论是完成任务的工具之一。 我的问题是,为什么有些程序员认为理论(形式方法)与实践(完成任务)之间存在差异? 与土木工程(房屋)相比,软件工程(房屋软件)是否被许多人认为 容易? 还是这两个学科真的不同(除了关键任务软件,软件故障比构建故障更容易接受)? 我尝试总结一下,到目前为止,我已经从答案中了解了什么。 与软件工程相反,在土木工程中,对于特定任务需要多少理论量(建模,设计)更加清楚。 部分原因是因为土木工程与人类一样古老,而软件工程仅存在了几十年。 另一个原因是软件是一种更具可变性的人工产品,具有更灵活的要求(可能会崩溃),不同的营销策略(可以牺牲良好的设计以便快速将其投放市场)等。 结果,要确定在软件工程中合适的设计/理论量是非常困难的(太少->凌乱的代码,太多->我永远无法完成),因为没有通用规则,而只有(很多)经验可以提供帮助。 因此,如果我正确地解释了您的答案,那么 对于真正需要多少理论的不确定性会导致一些程序员对理论的爱恨交加。



9
为什么不公开主键
在我的教育中,我被告知将真实的主键(不仅是DB密钥,而且是所有主访问器)公开给用户,这是一个错误的想法。 我一直认为这是一个安全问题(因为攻击者可能会尝试读取自己的东西,而不是自己的东西)。 现在,我必须检查是否无论如何都允许用户访问,所以背后有其他原因吗? 另外,由于我的用户无论如何都必须访问数据,因此我需要在两者之间的某个外部世界拥有一个公共密钥。现在,公用密钥与主密钥存在相同的问题,不是吗? 人们一直要求有一个示例说明为什么仍然要这样做,所以这里是一个。请记住,这个问题不仅涉及原理本身,而且要在本示例中应用。明确欢迎解决其他情况的答案。 处理活动的应用程序(Web,移动设备)具有多个UI和至少一个用于系统间通信的自动API(例如,会计部门希望根据已完成的操作向客户收取多少费用)。该应用程序有多个客户,因此必须将其数据分开(从逻辑上讲,数据存储在同一数据库中)。无论如何,都会检查每个请求的有效性。 活动是非常精细的,因此它在某个容器对象中在一起,可以称之为“任务”。 三个用例: 用户A希望将用户B发送给某个任务,因此他向他发送了一个链接(HTTP)以在其中完成一些活动。 用户B必须走出建筑物,以便他在移动设备上打开任务。 会计部门希望向客户收取该任务的费用,但使用第三方会计系统,该系统通过引用REST-API的某些代码自动加载任务/活动 每个用例都要求(或变得更加容易)代理为任务和活动提供一些可寻址的标识符。

3
子类和子类型之间有什么区别?
关于这个问题的最高的答案是关于Liskov替代原理的努力,竭力区分子类型和子类。这也说明有些语言将两者混为一谈,而另一些则没有。 对于我最熟悉的面向对象语言(Python,C ++),“类型”和“类”是同义词。对于C ++,在子类型和子类之间进行区分意味着什么?举例来说,这Foo是的子类,但不是子类型FooBase。如果foo是的实例Foo,则此行: FooBase* fbPoint = &foo; 不再有效?

11
“第四维”如何与数组一起使用?
抽象: 因此,据我了解(尽管我了解的非常有限),我们(通常)在物理上涉及三个方面: 第一个将由一条线表示。 第二个将由一个正方形表示。 第三个将由一个多维数据集表示。 很简单,直到我们进入第四位 -如果您知道我的意思,那么很难在3D空间中绘制...有些人说这与时间有关。 问题: 现在,尽管这并没有多大意义,但对我来说,这一切都很棒。我的问题不是这个,或者我会在MathSO或PhysicsSO上问它。我的问题是:计算机如何处理数组? 我知道您可以使用许多不同的编程语言创建4D,5D,6D等数组,但是我想知道它是如何工作的。
30 theory  array 

9
配色方案的产生-理论和算法
我将生成图表,并且我正在寻找有关配色方案和算法示例的一些理论。 问题示例: 如何产生互补或相似的颜色? 如何产生柔和,冷和暖的颜色? 如何生成任意数量的随机但截然不同的颜色? 如何将所有内容转换为十六进制三元组(网页颜色)? 我的实现将在AS3中进行,但欢迎使用伪代码中的任何示例。

18
我应该知道的计算机科学理论知识是什么?[关闭]
以拥有电子工程学位而不是计算机科学学位的人的身份讲,要使我成为一个更好的现实世界程序员,我应该知道的一点计算机科学知识是什么? (在现实世界中,我的意思是我在作为程序员的日常工作中会使用并从中受益—例如,我建议理解数据库规范化比理解快速的分类更实用。的图书馆)。

7
九十九规则在实践中
代码的前90%占开发时间的前90%。其余10%的代码占了开发时间的90%。 —贝尔实验室的汤姆·卡吉尔 实际上这是什么意思?程序员需要做大量工作,他们付出了180%的努力吗?

4
是否可以存储千字节块和指针的所有可能排列?
这是一个很难缠住我的主意的想法,我将不胜感激任何编辑/帮助,以使其对于那些熟悉的人来说更具可读性。 从理论上讲,是否有可能在硬盘上保存一个千字节的每个可能二进制排列的一个副本,然后让系统的其余部分简单地创建指向这些位置的指针? 这样制作的系统会比简单地直接存储信息快吗? 要解释另一种方式,请说而不是句子: “你好,我是鲍勃。” 和“那个三明治看起来很好吃。” ...存储在硬盘驱动器上,我们会将字母和其他字符的所有排列替换为某个数字(例如1000个字符左右),然后将句子存储为: [Pointer#21381723]

8
哪种非理论,实用的编程语言没有保留关键字?
我一直在寻找一种没有保留关键字的实用编程语言,但没有运气。 我正在为自己的娱乐和娱乐而设计一种编程语言,现在还不需要添加任何关键字,这就是导致我进行搜索和提出问题的原因: 我认为对于语言的最终用户而言,给编译器编写者带来便利并不重要。如今,计算机已经足够强大,可以从上下文中推断出含义。作家在写小说时只需要标记名词,动词等,为什么程序员必须用function x() {}or set x = 1或var x = 1etc 标记函数和变量?我何时可以从语句的上下文中推断出它是函数声明或调用,还是标签是对值的赋值或对该标签值的引用? 这是我当前的解析器正在做的事情的一个具体示例,不需要保留的关键字来支持通常会产生一些杂音的常见事物,例如funcor functionor decor not。 功能声明 sum3(a,b,c) -> a + b + c. 功能调用 x = sum3(1,2,3). 名为x的匿名函数 x = (a,b,c) -> a + b + c. y = x(1,2,3). 我想知道为什么关键字对成功的编程语言如此重要?
22 theory  languages 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.