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