V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
otakustay
V2EX  ›  随想

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

  •  
  •   otakustay · 2016-02-10 08:59:26 +08:00 · 3634 次点击
    这是一个创建于 3213 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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