麻烦各位移步http://coolshell.cn/articles/10652.html
没怎么看懂,但觉得很牛逼,想听听大家的解释和看法!
没看懂的原因是作者使用了大量定义不明晰的词汇,例如组件、抽象维度、抽象层次、抽象维度不匹配、本质复杂性、逻辑维度、控制维度、元、元语言、元编程,等等等等… 其实主旨用“内部 DSL”就能概括了。 最开始那个例子,单用函数就能实现复用。每个 field 一个函数,然后用函数指针数组来定义消息格式就行了。完全不需要引入其他机制。
大概是说,先把所需要用到的数据表格化的表示(配置)出来,无论是表格,或者 hash,或者 struct,反正就是一看就明白的。然后对这堆数据的怎么用就不管了,就完全在于你函数的实现了,因为需求是无法预测的。
读这篇博客,需要《SICP》这本书作为前置知识。它说道的过程抽象、数据抽象、元语言抽象等词汇都是指的过程式编程、OOP 的抽象基础。
这篇博客我认为写得非常棒,高屋建瓴,虽然它的主题是 DSL 和声明式编程,但从编程的复杂性和抽象方式这个更本质的角度说明了元语言抽象的益处。