纯技术话题:程序,是算法重要还是数据结构重要?

2020-12-06 12:02:44 +08:00
 abser

我认为这个话题有助于自己找到自己看重程序的那一部分。

7407 次点击
所在节点    程序员
73 条回复
mascteen
2020-12-06 16:19:22 +08:00
数据结构更重要,因为能用数据结构解决的问题就不要用算法解决
cccp2020
2020-12-06 16:23:06 +08:00
程序=复制+粘贴
nicebird
2020-12-06 16:26:02 +08:00
考虑这种东西完全没有意义,连这两个都搞不明白,不要当程序员了。
aonshuy
2020-12-06 18:09:42 +08:00
我认为辩证法更重要
lijie0981
2020-12-06 18:16:43 +08:00
其实我觉得设计模式比较重要
TangMonk
2020-12-06 18:53:16 +08:00
英语重要
xuanbg
2020-12-06 18:55:25 +08:00
@wszgrcy 肯定是油条泡一下豆浆再吃啊🐶
agagega
2020-12-06 18:59:25 +08:00
认真回答的话:大部分时候数据结构更重要。很多程序员可能用不到什么算法,但一定会接触到数据结构(比如三天两头就会有人吐槽的前后端接口格式!)
liberty1900
2020-12-06 18:59:30 +08:00
目录结构更重要,笑
no1xsyzy
2020-12-06 19:12:39 +08:00
楼上认为接触不到算法的,感觉是受了狭义算法和广义算法的迷惑。
只有数据结构,没有(广义)算法,那你连操作数据结构都做不到,这个不叫程序,叫数据备份。
就是一个 strcmp 也是(广义)算法。
没有(广义)算法,你操作不了数据结构;没有数据结构,你(广义)算法操作啥?

至于业务重要,其实大部分程序员的工作不是设计业务(这是世界或者社会的活,轮不到你区区一个智人种个体),而是理解业务,再将业务转化为数据结构和算法(也就是计算机听得懂的方式)。
“业务”和“数据结构和算法”哪个重要?这个问题跟主题的问题也一样。
ggbdpq
2020-12-06 19:17:06 +08:00
除去算法工程师之外,月薪 2 万以下不用考虑算法,这时候数据结构的重要性就出来了;年薪三四十万的可能就接触一些简单的算法。现在的很多码农还真搞不清楚算法和数据结构,23 楼那哥们太以全概偏或者以偏概全都是片面的和不对的。

总结,面对技术来说,两者都重要;面对业务来说,数据结构更重要;面对薪资来说,老板认为哪个重要就重要。撇开上述的,当然是两者都重要,并没有最重要分区别。因为你写的每一行代码都是粗略的算法,或多或小都包含数据结构这方面的知识。
no1xsyzy
2020-12-06 19:26:20 +08:00
@aguesuka 第三行没看懂……
linyuxin
2020-12-06 19:51:11 +08:00
能赚钱就重要
namelosw
2020-12-06 19:53:13 +08:00
算法是你想出来解决某些问题的一个解.

数据结构是算法用得比较多之后内化出来的一个模型. 重视数据结构的代码比不重视数据结构的代码清晰易懂好维护, 不过数据结构一般不会让你做出之前不能做到的事情. 你可以把数据结构看作某些算法的沉淀.

Linus, Rob Pike 很多人都说过类似的问题, 这里引用一个 Eric Raymond: http://www.catb.org/esr/writings/taoup/html/ch01s06.html#id2878263
大意是人很难理解简单的过程逻辑, 但是却能理解很复杂的数据结构.

对比一下一个 50 行的 if else for 循环, 和一个 50 行的 class.

或者一个不太恰当的比喻:
只注重算法≈把逻辑全扔到 controller 里: 随着 use case 的增多代码会很难读且有很重复.
重视数据结构≈把逻辑逐渐沉淀到 model 层, 然后想要理解代码的人着重看一看 model 就很快能理解, 而维护代码的人经常能直接用上 model 里已有的很多东西.
skypyb
2020-12-06 19:54:54 +08:00
程序 = 搜索引擎+英语
这才是对的🐶
OneMan
2020-12-06 20:01:25 +08:00
解决问题最重要
muzuiget
2020-12-06 20:11:45 +08:00
怎么设计数据结构也是算法的一部分,虽然一般人觉得“算法”只是代码控制流。
rim99
2020-12-06 20:19:34 +08:00
记得以前看过一个大牛的观点,就是说数据结构确定之后,已经决定了算法的效率的上下限。所以数据结构的设计更为重要些。
zm8m93Q1e5otOC69
2020-12-06 20:38:51 +08:00
业务写不完了
geebos
2020-12-06 20:41:40 +08:00
算法和数据结构两者不是孤立的,甚至我们有时候说算法就是在说算法和数据结构。恰当的算法配合恰当的数据结构就可以产生一个优秀的程序。比如 redis 里的 set 实现,hash table 的数据结构还要搭配 rehash 算法 set 才能发挥出最好的效果。个人认为把算法和数据结构拆开来比较没有意义,也许它们中某一个比另一个重要一些,但那又怎样呢,这对写出好的程序没有任何帮助。

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

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

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

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

© 2021 V2EX