软件工程始终强调抽象和封装,然而依赖底层源码进行优化依旧是主流手段

2016-02-10 08:59:26 +08:00
 otakustay

标题说的应该就是一个事实,比如有必要研究安卓源码吗? - Kaede 的回答 - 知乎,互联网上同样充斥着各种基于源码的分析和优化实践

然而从工程的角度而言,无论是 OO 还是 FP ,无论是 SOA 还是单机部署,我们设计的目标始终是封装实现,面向接口

从其它的角度上而言,面向源码的优化必然无法得到来自源码生产者的保证,任何大大小小版本都可能在无意间让原本辛苦挖掘而来的优化手段付诸东流

这是硬件未能跟上时代,还是工程学的缺陷,还是世界本应如此?

3453 次点击
所在节点    随想
13 条回复
yangff
2016-02-10 09:08:13 +08:00
因为语言的表达能力不够,提供的信息不足,只能用一些比较脏的手法强行表意。
windsandy
2016-02-10 09:09:24 +08:00
软件工程的目的是为了复用,是为了造轮子
而不是为了性能,在某种程度上,甚至还会影响性能
所以,是鱼和熊掌的关系!
laoyuan
2016-02-10 09:18:32 +08:00
(资源的)缺乏是我们所处系统的基调,所以我们只能在各种妥协当中去寻找一个平衡。。。人生、社会、婚姻莫不如是,何况软工
bcxx
2016-02-10 09:21:21 +08:00
好像这是两个不同层面的东西吧…… 一个追求的是大规模开发下的开发效率,一个是追求的是大规模、大强度使用下资源利用率提升 这不是很好的问题分类吗?怎么上升到工程学的缺陷了。就好比说汽车产业始终强调零件标准化,但优化引擎依旧是主流手段一样(并没有转折关系啊)
vghdjgh
2016-02-10 09:37:47 +08:00
你贴的链接的意思是,阅读源码可以更好地理解编程模型、思想、抽象、所调用的接口,没有提到优化。
不读源码的话,也可以通过阅读相应的文档来获得这种理解。
软件工程是对的,确实不应该依赖模型未定义行为,也不应该依赖未公开的接口(私有 API )。
这样之后,如果还是遇到性能瓶颈,或者不能实现的功能,这算是所用的模型的缺陷。
这时最好换模型,不得已的话,读源码,用一些比较脏的方式来实现。
hqs123
2016-02-10 09:41:58 +08:00
很抽象不懂,收藏先
vghdjgh
2016-02-10 09:44:13 +08:00
当现有模型的缺陷越积越多,会有新的模型出现的,逐渐替代现有的模型,可能是语言、框架、思想、模式、系统,技术就这样逐渐进步了。
otakustay
2016-02-10 09:45:38 +08:00
@vghdjgh 但我依旧觉得模型牺牲工程效率等向性能妥协是很悲惨的事,如果哪一天能耗不再是问题,硬件计算能力足够强大,我们是不是可以只关注如何更高效的生产了
vghdjgh
2016-02-10 10:09:02 +08:00
@otakustay 确实很悲惨。
如果只有硬件够了,也不行,模型的缺陷也会有影响,可能连脏的方式都没有,例如你写 java 时就没办法内嵌汇编、在 web app 中没办法使用 native 系统接口
yangtukun1412
2016-02-10 10:40:25 +08:00
@otakustay 我相信无论硬件发展到何种程度,总会有需求要把硬件性能压榨到极致
haython
2016-02-10 13:33:30 +08:00
软件一直落后硬件好多年
chemzqm
2016-02-10 14:01:57 +08:00
以前的一个笑话,网站访问速度比去年快了 30%,老板以为是员工努力工作的成果,但其实完全是浏览器升级优化的结果。
越接近底层,优化的空间越大,效果越明显,例如 http2
ddou
2016-02-21 19:29:04 +08:00
面向对象强调抽象和封装主要是为了应对业务的多变。优化的目的更多是以性能改进为目的。两者不冲突的吧?所谓 OO 的那些原则在一些场景下并不适用。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/255965

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX