组件简单性 - iRi

主要观点:科幻中常以折叠纸张解释超空间旅行,而指令式代码倾向于直线解决问题,会导致代码结构混乱,如许多代码库只是做事清单的堆砌。Haskell 则需像用 FTL 演示的科学家那样,将问题空间折叠,构建从下往上的小事物并创建丰富的组合生态系统,功能性编程能削减状态空间至所需,而指令式编程虽可组合代码但在粒度上不如 Haskell。

关键信息

  • 指令式代码常指数级扩大程序状态空间,功能编程则削减至所需。
  • Haskell 通过构建小事物并创建组合生态系统实现目标,如“monads”。
  • 以在公司 Wiki 中提取页面为 JSON 为例,说明用特定方式编写代码的优势。
  • 正在进行的工作中用统一接口替代冗长的指令列表,更易理解。
  • “middleware”概念在服务器世界中很强大,编程语言本身也有此概念。
  • 功能性编程迫使人们熟悉并处理这种架构的陷阱。

重要细节

  • 指令式代码直接在做新事情的中间添加代码,虽有函数和模块但架构混乱。
  • 在 Haskell 中,“STM (IO a)”类型签名体现纯代码与安全事务性代码的融合。
  • 用 XPath 提取 Wiki 页面数据的代码示例,展示简单组合可实现复杂提取。
  • 插件或解释器架构并非新鲜事,功能性编程促使人们更好处理。
阅读 6
0 条评论