重大更改:一个工具问题

主要观点:编程的基础是组合库调用,库很重要且会更重要,库偏好实则是语言偏好,编程语言影响库的性质,库维护者常因考虑打破变化而耗费精力,可通过一些方式减轻打破变化的影响。
关键信息

  • 如 Ruby、Python 的元编程和 Rust、Haskell 的花哨类型能让库更有帮助。
  • 库维护者常思考打破变化,如标记内部函数、处理参数传递等,想象用户使用方式困难且多样。
  • 可通过工具检测打破变化、保守公共接口、明确禁止“怪异”用法等减少负担。
  • 可通过 codemod powered 升级以自动修改用户代码适应打破变化,但需更类型导向,目前已有相关工具。
  • 应更细化“打破变化”的概念,让维护者能明确哪些部分打破,用户能明确使用哪些部分。
  • 多数编程语言缺乏库级访问控制,应加强。
  • Unison 语言中通过哈希引用使库升级更灵活,打破变化更不具破坏性。
    重要细节
  • 以 ExpressJS 为例说明不同的打破变化及 codemod 的适用情况。
  • 介绍各种编程语言在访问控制方面的特点,如 Java、C#、Rust、Go、PHP、Ruby、Python、Typescript 等。
  • 提及在选择编程语言时应考虑库维护者的情况,避免 Mayhemus McWreckington 式用户导致问题。
阅读 11
0 条评论