关于过度炒作话题的冷水澡(2017)

这里对静态类型、形式化验证以及其他“银弹”技术能否可靠减少软件 bug 提出了强烈质疑。评论者指出,相关实证证据混杂或薄弱,评估开发者生产力的好研究很难设计,而且容易把个人经验或炒作过度推广。顺带地,他们把这些讨论与冷水澡和桑拿等健康潮流作比较,认为无论是人体还是软件团队,这类复杂系统都很少能被简单且普适正确的处方所驯服。

冷暴露、桑拿与健康主张

  • 有些人原本以为这个仓库会是关于 Wim Hof 方法的;评论提到法律问题和极端表演,因此它自己也许该“洗个冷水澡”。
  • 一种观点认为:每天冰浴之类的极端做法是“反自然”的,并担心它们可能缩短寿命。
  • 反方观点:适度的热应激(例如 175°F 的桑拿)在观察性研究中与更低的全因死亡率相关,可能通过心血管应激和热休克反应起作用。
  • 也有人质疑混杂因素(社会经济地位、空闲时间、压力)以及这类研究的整体质量,并提到更广泛的可重复性危机。
  • 文化背景:在一些地区,桑拿便宜、普及,并被各收入层使用;另一些人则认为,价格 1000 美元以上的桑拿或高端健身房使用权显然并非人人可得。

冷水澡与主观收益

  • 一些人表示会做冷热交替淋浴或纯冷水澡,并描述:
    • 短期情绪提升、警觉性增强、“能做事”的感觉。
    • 使用特定呼吸技巧让过程更容易忍受。
    • 享乐主义意义上的“基线重置”:不适感让平常的温暖和舒适显得好得多。
  • 但人们仍然怀疑其长期健康收益;许多人把它视为一种生活方式或心理技巧,而不是经过证实的长寿干预。

静态类型的“炒作”与证据

  • 这个仓库关于静态类型的“冷水澡”:截至约 2014 年的文献是混合的;关于减少 bug 的强烈说法并没有得到明确支持。
  • 许多人认为,静态类型显然可以消除整类类型错误,并改善 IDE 支持和文档,尤其对团队和长期存在的代码而言。
  • 另一些人强调权衡:前期工作更多、代码更多、可能过度设计并且要“和类型系统搏斗”,尤其是在某些 Java 生态中。
  • 讨论中引用的研究表明:
    • 在文档、导航以及某些 bug 类别上有明确好处。
    • 对“逻辑 bug”和整体缺陷密度的影响不确定;而且会受到语言差异和研究设计的混杂影响。
  • 关于其效果究竟是大、是小,还是在实践中几乎无法测量,争论仍在继续。

形式化方法与验证

  • 链接材料将形式化验证描述为强大但困难、昂贵,而且常常会漏掉关键 bug。
  • 评论补充了一些细微之处:
    • 它证明的是对某个规范的符合性,而规范本身可能是错误的或不断变化的。
    • 不过在安全关键场景中仍然很有价值,也能发现规范本身的 bug。
    • “轻量级”方法(例如模型检查、TLA+ 风格的思维)因即使没有完整证明也能改善设计而受到称赞。

元话题:软件工程研究与炒作

  • 许多人对实证软件工程研究抱有深刻怀疑:
    • 衡量“bug”、生产力或质量都很困难;像“每行代码 bug 数”这样的指标被认为具有误导性。
    • 设计不良的研究和未考虑的混杂因素,可能让数据比没有还糟。
  • 也有人认为,不完美的数据仍然包含信号,比纯粹依赖轶事式决策更好。
  • 一个反复出现的主题是:软件工程还很年轻;研究和个人“最佳实践”都只是暂定的,许多流行观念(静态类型、TDD、形式化方法、神奇健康技巧)都值得既保持热情,也定期来一次“冷水澡”。