面向数据的编程与面向对象的编程# Programming - 葵花宝典
h*i
1 楼
面向数据的编程(data oriented programming)就是把程序的逻辑用数据结构表达。
这其实在分布式计算
已经用得很多了,各种逻辑可以变成数据结构在节点间传来传去。而Clojure社区现在
意识到,其实单机程序也可以这样写。一个逻辑,能用数据机构表达的,就用数据结构
表达,这样更灵活。
这个关于data的地位的问题,Alan Kay(就是因为Smalltalk拿图灵奖那位,面向对象
的编程的祖师爷)与Rich
Hickey(就是发明Clojure的那个民科)还在hackernews上有一个争论https://news.
ycombinator.com/item?id=11945722)。前者认为"Data is a bad idea", 因为data总
是需要一个interpreter。后者认为Data是客观存在的,是第一位的,如何interpret是
第二位的。搞计算机技术,要以第一位的东西为中心。
显然,我是同意Rich Hickey的观点的。因为其实最终的interpreter,是在人的脑子里
面。就算再多的type checking, proof, blah blah, 最后还是要人来决定这个程序的
结果是对还是不对。不要以为程序能搞定这个interpreter的问题。
还有一个支持Hickey观点的arugment,是从信息论的角度,就是“信息永远不会增多”
的定理(https://en.wikipedia.org/wiki/Data_processing_inequality)。加个
interpreter不会增加任何信息。哈哈。
可惜OOP的祖师爷觉得Object应该成为这样的interpreter. 他举出的理想技术居然是一
个人造的用来与外星人通话的语言。所以我觉得图灵奖得主和民科似乎换位了。哈哈。
No wonder OOP is doomed to fail. It's philosophically and mathematically
unsound.
这其实在分布式计算
已经用得很多了,各种逻辑可以变成数据结构在节点间传来传去。而Clojure社区现在
意识到,其实单机程序也可以这样写。一个逻辑,能用数据机构表达的,就用数据结构
表达,这样更灵活。
这个关于data的地位的问题,Alan Kay(就是因为Smalltalk拿图灵奖那位,面向对象
的编程的祖师爷)与Rich
Hickey(就是发明Clojure的那个民科)还在hackernews上有一个争论https://news.
ycombinator.com/item?id=11945722)。前者认为"Data is a bad idea", 因为data总
是需要一个interpreter。后者认为Data是客观存在的,是第一位的,如何interpret是
第二位的。搞计算机技术,要以第一位的东西为中心。
显然,我是同意Rich Hickey的观点的。因为其实最终的interpreter,是在人的脑子里
面。就算再多的type checking, proof, blah blah, 最后还是要人来决定这个程序的
结果是对还是不对。不要以为程序能搞定这个interpreter的问题。
还有一个支持Hickey观点的arugment,是从信息论的角度,就是“信息永远不会增多”
的定理(https://en.wikipedia.org/wiki/Data_processing_inequality)。加个
interpreter不会增加任何信息。哈哈。
可惜OOP的祖师爷觉得Object应该成为这样的interpreter. 他举出的理想技术居然是一
个人造的用来与外星人通话的语言。所以我觉得图灵奖得主和民科似乎换位了。哈哈。
No wonder OOP is doomed to fail. It's philosophically and mathematically
unsound.