怎么理解“计算机科学中的每个问题都可以用一间接层解决”这句话? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
zaima
V2EX    程序员

怎么理解“计算机科学中的每个问题都可以用一间接层解决”这句话?

  •  
  •   zaima 2019-06-20 16:20:12 +08:00 7723 次点击
    这是一个创建于 2315 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言    2019-06-20 18:25:33 +08:00
    此句话是我在看《游戏引擎架构》这本书中所看到,书作者说是滑铁卢大学教授 Jay Black 的一句名言,译者 miloyip 在备注中指明此句应沿自 David John Wheeler。英文原句是“ All problems in computer science can be solved by another level of indirection.”。
    28 条回复    2020-12-21 17:54:56 +08:00
    yangzhezjgs
        1
    yangzhezjgs  
       2019-06-20 17:20:23 +08:00
    个人理解就是出现了旧软件无法解决的新问题,就造一个新的轮子。
    裸机无法解决多道并发问题和易用性问题操作系统。
    操作系统的文件系统无法解决数据持久化问题 关系数据库。
    关系数据库不够灵活 nosql。
    c 语言不支持面向对象 c++。
    c++太复杂了 java。
    要隔离应用但是又不想用虚拟机 docker。
    saluton
        2
    saluton  
       2019-06-20 17:21:08 +08:00
    请证明 P = NP
    Raisu
        3
    Raisu  
       2019-06-20 17:37:45 +08:00
    谁说的?
    undeflife
        4
    undeflife  
       2019-06-20 17:42:07 +08:00   6
    每个 css 样式问题都可以通过套一个 div 来解决
    huangzhe8263
        5
    huangzhe8263  
       2019-06-20 17:43:09 +08:00
    成功的在毕设答辩时用上了,效果不错
    其实可以参见计算机网络的七层,五层
    u823tg
        6
    u823tg  
       2019-06-20 17:44:59 +08:00
    分层思想在计算机里面很常见。
    jydeng
        7
    jydeng  
       2019-06-20 17:47:58 +08:00
    “这个 api 太难用了,我们再封装一层把。”
    “嗯,好用多了。”
    Vinty
        8
    Vinty  
       2019-06-20 17:55:03 +08:00
    计算机科学和软件工程并不是一回事,计算机科学的主要领域 密码学、信息论、数据结构、算法这些好像没一个能通过中间层解决的
    kcirtap
        9
    kcirtap  
       2019-06-20 18:06:57 +08:00 via iPhone
    把科学换成工程,还能讨论
    ai277014717
        10
    ai277014717  
       2019-06-20 18:10:49 +08:00
    没有什么问题不是封一层解决不了的,如果有那就再封一层
    TomatoYuyuko
        11
    TomatoYuyuko  
       2019-06-20 18:10:53 +08:00
    @undeflife #4 如果解决不了就套 2 层
    zaima
        12
    zaima  
    OP
       2019-06-20 18:18:57 +08:00
    @Raisu 此句话是我在看《游戏引擎架构》这本书中所看到,书作者说是滑铁卢大学教授 Jay Black 的一句名言,译者 miloyip 在备注中指明此句应沿自 David John Wheeler。英文原句是“ All problems in computer science can be solved by another level of indirection.”。
    mcfog
        13
    mcfog  
       2019-06-20 18:23:25 +08:00
    ---- 除了间接层数量过多的问题之外
    pi1ot
        14
    pi1ot  
       2019-06-20 18:35:35 +08:00
    指针,接口,索引,缓存,队列,助理,秘书
    libook
        15
    libook  
       2019-06-20 18:48:29 +08:00
    所有计算机问题都可以用两个思想来解决:分层和解耦。
    分层可以将整体复杂度分解到每个层中,使得每个层的复杂度相比以前的整体复杂度要低。
    解耦可以将问题和风险封锁在一个模块内,提升解决问题的效率,降低风险的影响范围。

    不过也要辩证去看,因为很多问题的解决方案都只是权衡之计,解决了一方面问题又出现了另一方面问题,最合理的方式是从实际出发,平衡各方面,选取最适合当前情况的方案。
    liuzhiyong
        16
    liuzhiyong  
       2019-06-20 18:55:03 +08:00 via Android
    我来说个最通俗易懂的:就是“圆环套圆环娱乐城”。一层套一层,大事化小,小事化了,就这么简单。
    Aruforce
        17
    Aruforce  
       2019-06-20 19:53:29 +08:00 via Android
    不断向高层抽象吧……
    russian
        18
    russian  
       2019-06-20 20:01:57 +08:00
    编译器就是你的 c++/java/python 和机器之间的中间层,没问题
    SuperMild
        19
    SuperMild  
       2019-06-20 20:05:04 +08:00
    这是一句正确的废话,相当于说一切问题都可以通过另一家外包公司来解决。

    一层套一层,到了最后,总要有一个 间接层 /公司 /人 来兜底啊,底层的东西总得有人做。
    gavindexu
        20
    gavindexu  
       2019-06-20 20:19:25 +08:00 via iPhone
    一个 SQL 写不出来的需求,
    可以再套一层
    deming
        21
    deming  
       2019-06-20 20:25:18 +08:00
    netty in action 中也提到了这句话。Java 原生的网络编程太难整了,所以,我们搞出了 netty。
    hoyixi
        22
    hoyixi  
       2019-06-20 21:36:44 +08:00
    我感觉不仅计算机科学,现实中也是,如果可以来一层,难度会降低。只不过现实中很多景不允许加一“层”


    单说计算机科学,本质原则是:简单地做最专业的事

    函数、类、指令等等,一些功能单元,越简单越好,然后该单元工作起来容错性、稳定性达到极致

    然后用这些单元的时候,根据情况包“层”~,

    怎么包,包完怎么组织这些“层”等等, 这学问归纳起来可以称之为: 面向对象技术,设计模式
    wr410
        23
    wr410  
       2019-06-20 21:43:43 +08:00
    因为你没有看到本质

    这个宇宙的工作模式,其实就和计算机系统一样,所以它们解决问题的方式都是互通的,只是你没有找到接口而已。
    Takamine
        24
    Takamine  
       2019-06-21 08:06:50 +08:00 via Android
    适配器转换器足够,我能键盘发电上网。:doge:
    halokings
        25
    halokings  
       2019-06-21 09:12:20 +08:00
    一件事我搞不定,那怎么解决?我可以找一个可以搞定的人
    troywinter
        26
    troywinter  
       2019-06-21 20:25:42 +08:00
    @Raisu 丹尼斯 - 里奇
    joyee
        27
    joyee  
       2019-06-27 07:02:02 +08:00
    我听说过的版本是,所有兼容问题都可以通过加一层抽象解决,所有性能问题都可以通过去掉一层抽象解决……
    tinxing
        28
    tinxing  
       2020-12-21 17:54:56 +08:00
    不要误导人哈, 这句话是 David Wheeler 说的, 本意也不是我们理解的那个意思.
    https://en.wikipedia.org/wiki/David_Wheeler_(computer_scientist)
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5511 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 07:08 PVG 15:08 LAX 00:08 JFK 03:08
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86