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

2019-06-20 16:20:12 +08:00
 zaima
6681 次点击
所在节点    程序员
28 条回复
yangzhezjgs
2019-06-20 17:20:23 +08:00
个人理解就是出现了旧软件无法解决的新问题,就造一个新的轮子。
裸机无法解决多道并发问题和易用性问题————操作系统。
操作系统的文件系统无法解决数据持久化问题 ————关系数据库。
关系数据库不够灵活—————— nosql。
c 语言不支持面向对象—————— c++。
c++太复杂了—————— java。
要隔离应用但是又不想用虚拟机———— docker。
saluton
2019-06-20 17:21:08 +08:00
请证明 P = NP
Raisu
2019-06-20 17:37:45 +08:00
谁说的?
undeflife
2019-06-20 17:42:07 +08:00
每个 css 样式问题都可以通过套一个 div 来解决 🐶
huangzhe8263
2019-06-20 17:43:09 +08:00
成功的在毕设答辩时用上了,效果不错
其实可以参见计算机网络的七层,五层
u823tg
2019-06-20 17:44:59 +08:00
分层思想在计算机里面很常见。
jydeng
2019-06-20 17:47:58 +08:00
“这个 api 太难用了,我们再封装一层把。”
“嗯,好用多了。”
Vinty
2019-06-20 17:55:03 +08:00
计算机科学和软件工程并不是一回事,计算机科学的主要领域 密码学、信息论、数据结构、算法这些好像没一个能通过中间层解决的
kcirtap
2019-06-20 18:06:57 +08:00
把科学换成工程,还能讨论
ai277014717
2019-06-20 18:10:49 +08:00
没有什么问题不是封一层解决不了的,如果有那就再封一层
TomatoYuyuko
2019-06-20 18:10:53 +08:00
@undeflife #4 如果解决不了就套 2 层
zaima
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
2019-06-20 18:23:25 +08:00
---- 除了间接层数量过多的问题之外
pi1ot
2019-06-20 18:35:35 +08:00
指针,接口,索引,缓存,队列,助理,秘书
libook
2019-06-20 18:48:29 +08:00
所有计算机问题都可以用两个思想来解决:分层和解耦。
分层可以将整体复杂度分解到每个层中,使得每个层的复杂度相比以前的整体复杂度要低。
解耦可以将问题和风险封锁在一个模块内,提升解决问题的效率,降低风险的影响范围。

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

一层套一层,到了最后,总要有一个 间接层 /公司 /人 来兜底啊,底层的东西总得有人做。
gavindexu
2019-06-20 20:19:25 +08:00
一个 SQL 写不出来的需求,
可以再套一层👻

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

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

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

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

© 2021 V2EX