根据维基百科,法律是由特定国家为维护社会的和平与安全而决定的一套规则。

另一种不同类型的定律是物理定律,这是根据经验观察推导和推导的事实。我们周围的世界以某种方式工作,而物理定律是一种分类这种”工作方式”的方式。

但是,法律在计算机科学中的意义是什么?它们是在软件社会维持和平的一种方式,还是根据某些观察推导出来的事实?

本文试图列出和分类计算机科学中最流行的法律。

您还会喜欢:计算机科学对您计划有帮助吗?

摩尔定律

摩尔定律指的是摩尔的看法,即微芯片上的晶体管数量每两年翻一番,尽管计算机的成本减半。摩尔定律指出,我们可以期望我们的计算机的速度和能力每隔几年增加一次,我们将为它们付出更少的费用。我们习惯于认为计算机速度每18个月翻一番,正如摩尔定律所预测的。事实上,在过去50年里,情况就是这样。然而,由于技术障碍,摩尔定律即将结束。正如赫伯·萨特在2005年撰写的一篇非常受欢迎的文章所述:

摩尔定律预测指数增长,在我们达到硬物理极限之前,显然指数增长不可能永远持续下去。

本文的核心区别在于,至少在接下来的几代处理器中,性能提升将以根本不同的方式实现。如果不进行重大重新设计,大多数当前应用将不再受益于免费乘车。如果您希望应用程序从新处理器中持续的指数吞吐量增长中获益,则需要是一个编写良好的并发(通常是多线程)应用程序。说起来容易做起来难,因为并非所有问题本质上都是可并行的,而且并发编程很难,这就给我们带来了Amdahl定律在并行计算中,Amdahl定律主要用于预测使用多个处理器进行程序处理的理论最大加速。

Amdahl's Law formula

其中

  • S延迟是整个任务执行的理论加速;
  • s是从改进的系统资源中获益的任务部分的加速;
  • p是从最初占用的改良资源中获益的部分的执行时间的比例。

古斯塔夫森定律

古斯塔夫森定律在固定执行时间对任务执行延迟的理论加速,这可预期是资源得到改进的系统。Gustafson 估计了使用 N 处理器(而不是仅一个)任务获得的速度 S,其序列分数 s(不受益于并行性)如下所示:

{\displaystyle S=N+(1-N)s}

使用不同的变量,古斯塔夫森定律可以按照以下方式制定:

{\displaystyle S_{\text{latency}}(s)=1-p+sp,}

其中,

  • S延迟是整个任务执行延迟的理论加速;
  • s是执行部分任务的延迟加速,该部分受益于系统资源的改进;
  • p是整个任务的执行工作量的百分比,涉及改进前从系统资源改善中受益的部分。

古斯塔夫森定律解决了阿姆达尔定律的缺点,该定律基于固定问题大小的假设,即执行工作量在资源改善方面没有变化。古斯塔夫森定律建议,程序员倾向于设置问题的大小,以充分利用随着资源改善而可用的计算能力。因此,如果设备更快可用,可以同时解决较大的问题。

古斯塔夫森定律的影响是改变研究目标,选择或重新制定问题,以便在同样时间内解决更大的问题是可能的

基本上,安达尔定律与古斯塔夫森定律的区别在于应用的目标,即通过增加问题大小或减少相同问题大小的应用程序执行时间来实现相同的应用程序执行时间。优化的目标可能是使程序在相同的工作负载下运行得更快(反映在 Amdahl 定律中),或者在工作负载较大的同时运行程序(古斯塔夫森定律)。

沃斯定律

沃斯定律指出,软件的速度比硬件越来越快。 该法律在2009年被重申,并归因于拉里佩奇,谷歌的创始人。它也被称为佩奇定律。其他常见的形式使用20世纪90年代领先的硬件和软件公司(英特尔和微软)或他们的CEO(安迪格罗夫和比尔盖茨)的名称:”什么英特尔给什么,微软拿走”和”什么安迪给,比尔带走。

本文中讨论的所有定律都基于观察、实验和数学。事实证明,它们更类似于物理定律,而那些旨在维护社会和平与安全的法律。 事实上,计算机科学需要这些法律,其中一些法律也很受欢迎:SOLID原则、GRASP原则、各种体系结构模式和良好做法。它们旨在使程序保持可维护、稳定和适应变化。

进一步阅读

面向对象设计的 SOLID、GRASP 和其他基本原则

Amdahl 的定律在起作用 – 通过更改函数,27s 到 0.03s

Comments are closed.