提升代码生成的规格层次:数据驱动编程的魅力
在编程的世界里,当程序员陷入困境时,不妨暂时放下代码,重新审视数据。因为数据的表示才是编程的核心所在。人类在可视化数据方面往往比推理控制流更为擅长,例如对比一个五十节点指针树的图表和一个五十行程序的流程图,或者一个表示转换表的数组初始化器和等效的 switch 语句,其透明度和清晰度的差异是巨大的。
数据与程序逻辑
数据比程序逻辑更易于处理,无论是普通表格、声明式标记语言、模板系统,还是一组可扩展为程序逻辑的宏。在设计中,应尽可能将复杂性从过程代码转移到数据中,并选择便于人类维护和操作的数据表示形式。将这些表示形式转换为便于机器处理的形式,这是机器的工作,而非人类。
高级、声明式表示法还有一个重要优势,即更便于编译时检查。过程式表示法在运行时行为复杂,编译时难以分析,而声明式表示法能让实现者更深入理解预期行为,从而更有效地发现错误。
这些理论为一系列编程实践提供了基础,如高级语言、数据驱动编程、代码生成器和领域特定小语言。这些方法的共同点是提升代码生成的层次,使规格说明更简洁。由于不同编程语言的缺陷密度相近,采用这些方法可减少代码行数,降低错误发生的机会。
数据驱动编程
数据驱动编程要求明确区分代码和其操作的数据结构,并进行相应设计,以便通过编辑数据结构而非代码来改变程序逻辑。
数据驱动编程常与面向对象编程和状态机编程相混淆。与面向对象编程不同,数据驱动编程中的数据不仅是对象的状态,还定义了程序的控制流。面向对象编程主要关注封装,而数据驱动编程则追求编写尽可能少的固定代码。在Unix传统中,数据驱动编程更为常见。
超级会员免费看
订阅专栏 解锁全文
5万+

被折叠的 条评论
为什么被折叠?



