打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
面向对象和结构化数据库冲突,导致软件开发的低效率,这种匹配难度被称为对象关系阻抗失配,程序员天天在处...
面向对象和结构化数据库冲突,导致软件开发的低效率,这种匹配难度被称为对象关系阻抗失配,程序员天天在处理这种难题而不自知,最后结构化数据库全面战胜了面向对象。

1946年冯诺依曼设计出将程序和数据统一放到内存里进行运行的技术,冯诺依曼架构。

1958-1968十年期间,软件大师们经过多年的努力,终于将程序设计方法从面向过程扭转为面向对象的方法。随后面向对象开枝散叶,直到今天成为主流设计方法,变成了CPU内存中程序的国王。

由于内存是非常珍贵的,随着数据增长,如何将数据在磁盘上组织好变成了大问题。

1970 年,IBM的Codd博士发表了他的论文“大型共享数据库的数据关系模型”。IBM的Chamblin按照Codd的关系代数理论,发明了我们今天仍在使用SQL语言。关系数据库和SQL变成了磁盘的国王。

两个国王出生背景不同,解决问题不同,自然说不到一块去,开战!可怜的程序员,两边都得罪不起,两边妥协。诞生了ORM(Object/Relation mapping)技术,用于使用面向对象的编程语言转换结构化数据,这实际上创建了一个可以在编程语言中使用的“虚拟对象数据库”。

Codd在关系数据库上面挖了个坑,把自己变成瓶颈,就像家里身体最不好的孩子,变成了父母的全部。互联网高并发的兴起导致这个孩子身体更差了,一切都得听他的,要不就休克给你看。

这种匹配难度被称为对象关系阻抗失配(Object–relational impedance mismatch),失配的原因非常复杂,我们有机会再详细说。

程序员天天在处理这种问题,但很少有人去思考为什么?怎么做?我们逐渐变成了不会解决问题、能机械化做好某件事情的工具。

就像饮料生产线上的扶瓶子的工人,当发现瓶子倒了就用手扶起来。老板发现当然是年轻人好用,机器厂家也在拼命研制不会倒的机器。

结果是大家看到的那样,我们利用ORM工具(也是别人开发的)实现转换,我们设计了贫血模型(Anemic domain model )。数据库国王全面战胜了面向对象的国王,程序员自此回到了1968年,生活在低效率年代。


博士聊IT,感兴趣,请加关注。

软件架构师必读:面向对象编程思想(OOP)的由来与本质

软件架构师必读2:一文带你理解面向对象(OOP)中类的本质

「博士聊IT」一文看懂编程的本质,程序员有前途么?

低代码无代码平台的未来在哪里?编程语言的进化史告诉你答案

七步成诗,软件是如何把人类思维翻译成机器代码的


#程序员##Java##程序#
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
对象与关系之间的矛盾:“阻抗失配”效应
50年长盛不衰,SQL为什么如此成功?
从程序员到软件设计师的过程
面向对象软件开发和过程(一): 代码是核心
Java经典书籍(程序员必备)
软件工程的3要素
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服