内核恐慌

20. 设计模式


Listen Later

「串台」故障的原因终于揭晓;吴涛的莫尔斯码 app 主意看来目前不可行;三封很长的读者反馈;主题是设计模式。两位主持人不约而同地病了,所以没有讲新闻。

节目中提及的读者 Haozhong Zhang 来信节选:

相对的,在 Formal Verification 中,举个例子,我们可以把每条指令的执行形式化表示成 {P}C{Q},其中 C 是这条指令,P 称为前条件 (Pre-condition) 描述了 C 执行之前机器的状态 (例如某个寄存器的值是什么,某个内存单元的值是什么,通常不需要覆盖所有的寄存器和内存单元,仅需要根据验证的 Specification 选取我们关心的部分), Q 称为后条件 (Post-condition) 描述了 C 执行后的机器状态。注意,这里 Q 同时描述 C 被中断和不被中断的执行后的机器状态。非形式化的,{P}C{Q} 表示在满足前条件 P 的机器上执行指令 C 得到的机器状态满足后条件 Q。这样,对于上述的一个代码片段 C1; C2; …; CN 我们有 {P1}C1{Q1},{P2}C2{Q2}, …, {PN}CN{QN}。然后,我们证明 Q1 ⇒ P2, …, QN-1 ⇒ PN,

从而可以证明
{P1}C1; C2; …; CN{QN}。
同样的,如果这个代码片段的 Specification 也可以写成,例如,
{P}C1; C2; …; CN{Q},
我们只需要再证明
P ⇒ P1 和 QN ⇒ Q,
即可以证明这个代码片段的确满足了给定的 Specification。因为这里的 P,Q,Pi, Qi 等描述了所有的可能情况,并且只需描述 Specification 关心的部分,所以这里的 Formal Verification 比测试更加完备和简洁。在实际工作中,我们往往会针对验证的程序的特点,设计特定的逻辑系统,以进一步的降低证明的难度和复杂度。

相关链接
  • 读者 Wang Jian 发来的 TDD 实践视频:YouTube优酷
  • Design Patterns: Elements of Reusable Object-Oriented Software
  • 艾舍尔《天鹅》
  • Erich Gamma
  • Design Patterns 15 Years Later: An Interview with Erich Gamma, Richard Helm, and Ralph Johnson
  • Hacker’s Delight
  • 《编程珠玑》
  • 《建筑的永恒之道》
  • Cocoa Design Patterns
  • C# Delegate/Event
  • Patrick Naughton
  • Python Pattern: “Borg”
  • God Object
  • Golden Hammer
  • The Lone Ranger
  • 人物简介
    • Rio:《IT 公论》主播,IPN 联合创始人,Apple4us 程序员。
    • 吴涛:Type is Beautiful 程序员,《内核恐慌》主播。
    • ...more
      View all episodesView all episodes
      Download on the App Store

      内核恐慌By 吴涛、Rio

      • 4.7
      • 4.7
      • 4.7
      • 4.7
      • 4.7

      4.7

      54 ratings


      More shows like 内核恐慌

      View all
      机核游戏频道 by 机核网 www.gcores.com

      机核游戏频道

      299 Listeners

      一席 by 一席

      一席

      103 Listeners

      津津乐道 by DAO

      津津乐道

      119 Listeners

      疯投圈 by 黄海、Rio

      疯投圈

      109 Listeners

      日谈公园 by 日谈公园

      日谈公园

      437 Listeners

      声东击西 by ETW Studio

      声东击西

      316 Listeners

      三五环 by 刘飞Lufy

      三五环

      44 Listeners

      科技乱炖 by DAO

      科技乱炖

      24 Listeners

      忽左忽右 by JustPod

      忽左忽右

      446 Listeners

      What's Next|科技早知道 by 声动活泼

      What's Next|科技早知道

      176 Listeners

      硅谷101 by 硅谷101

      硅谷101

      164 Listeners

      硅谷101|中国版 by 泓君Jane

      硅谷101|中国版

      52 Listeners

      东亚观察局 by 东亚观察局

      东亚观察局

      199 Listeners

      FView Friday by 爱否科技

      FView Friday

      81 Listeners

      半拿铁 | 商业沉浮录 by 潇磊&刘飞

      半拿铁 | 商业沉浮录

      289 Listeners