我认为这个话题有助于自己找到自己看重程序的那一部分。
1
1rror 2020-12-06 12:08:24 +08:00 1
这个我感觉不管说哪个更重要都有反驳的理由,两个缺一不可,讨论这个没啥意义阿。
|
2
Kiske 2020-12-06 12:11:38 +08:00 30
走路,是左腿重要还是右腿重要
|
3
wszgrcy 2020-12-06 12:11:52 +08:00 via Android
这个问题就像问吃早餐豆浆和油条哪个先吃一样……
|
4
aguesuka 2020-12-06 12:14:53 +08:00 via Android 1
算法 ∪ 数据结构 ≠ 程序
(算法 ∪ 数据结构) - 算法 ≠ 数据结构 重要 (算法) => undefine excpetion! 你问了一个不是很好的问题 |
5
lixiang2017 2020-12-06 12:15:20 +08:00 via Android
程序=算法+数据结构
|
6
liuch 2020-12-06 12:16:08 +08:00
这个问题.....
左腿重要还是右腿重要? |
7
tiedan 2020-12-06 12:17:42 +08:00
算法+数据结构 = 程序
|
8
abser OP |
9
abser OP 以下来自上面博客的引用:
虽然说“程序设计=算法+数据结构”,然后我实际中的体会,数据结构更加重要。 因为结构定义了一个程序的架构,结构定下来了才有具体的实现。好比盖房子,数据结构就是房子的框架结构,如果一间房子很大,而你并不清楚这个房子的结构,会在这里面迷路。而对于算法,如果属于暂时不需要深究的细节部分,可以参考前面“区分主线和支线剧情”部分,先了解其入口、出口参数以及作用即可。 Linus 说: “烂程序员关心的是代码。好程序员关心的是数据结构和它们之间的关系。” 因此,在阅读一份代码时,厘清核心的数据结构之间的关系尤其重要。这个时候,需要使用一些工具来画一下这些结构之间的关系,我的源码分析类博客中有很多这样的例子,比如《 Leveldb 代码阅读笔记》、《 Etcd 存储的实现》等等。 需要说明的是,情景分析、厘清核心数据结构这两步并没有严格的顺序关系,不见得是先做某事再做某事,而是交互进行的。 比如,你如果现在刚接手某个项目,需要简单的了解一下项目,可以先阅读代码了解都有哪些核心数据结构。理解了之后,如果不清楚某些情景下的流程,可以使用情景分析法。总而言之,交替进行直到解答你的疑问为止。 |
11
flawless 2020-12-06 12:43:23 +08:00
都不重要,业务最重要。
|
12
imn1 2020-12-06 13:21:50 +08:00
这样说吧,接触算法的程序员并不多,做业务流程的是大部分,业务流程跟数据结构是紧密相关的
做核心算法的,就算你想加到程序里面,恐怕也要申请,不是程序员本身就能决定的 程序员能直接控制算法的,多是研究人员岗位,或者独立开发 至于基础算法会不会常用,就看项目有没有各种条条框框限制了,模块内优化还是需要的 |
13
JeffGe 2020-12-06 13:33:22 +08:00 via Android 4
《五官争功》
|
14
fline 2020-12-06 13:52:34 +08:00 2
只有技术不好的人才纠结这种问题。。。
|
15
autoxbc 2020-12-06 14:03:38 +08:00 2
程序 = 算法 + 数据结构 ×
程序 = 算法 * 数据结构 √ |
16
charlie21 2020-12-06 14:49:44 +08:00 via iPhone
写到一万行代码之前根本不需要考虑这个
|
17
Jooooooooo 2020-12-06 14:50:27 +08:00
都不重要
业务最重要 |
18
zion03 2020-12-06 14:51:22 +08:00 1
记得之前看过 Linus 评价 Git 的数据结构很稳定,好的数据结构设计能使代码更容易维护。
在工作中遇到的实际情况也是如此,算法只是程序的一小部分,随着需求的不断更迭,程序也需要不断的重构(当然,良好的设计模式能应对大部分需求的变更)。但如果数据结构出现了无法满足新需求的情况,重构起来会非常痛苦。 |
19
zzzzzzggggggg 2020-12-06 14:53:51 +08:00
没有讨论的意义
|
20
wellsc 2020-12-06 14:55:58 +08:00
程序=数据结构+算法,缺一不可
|
21
mascteen 2020-12-06 16:19:22 +08:00 via Android 1
数据结构更重要,因为能用数据结构解决的问题就不要用算法解决
|
22
cccp2020 2020-12-06 16:23:06 +08:00 via iPhone 1
程序=复制+粘贴
|
23
nicebird 2020-12-06 16:26:02 +08:00
考虑这种东西完全没有意义,连这两个都搞不明白,不要当程序员了。
|
24
aonshuy 2020-12-06 18:09:42 +08:00
我认为辩证法更重要
|
25
lijie0981 2020-12-06 18:16:43 +08:00
其实我觉得设计模式比较重要
|
26
TangMonk 2020-12-06 18:53:16 +08:00 via iPhone
英语重要
|
28
agagega 2020-12-06 18:59:25 +08:00 via iPhone 1
认真回答的话:大部分时候数据结构更重要。很多程序员可能用不到什么算法,但一定会接触到数据结构(比如三天两头就会有人吐槽的前后端接口格式!)
|
29
liberty1900 2020-12-06 18:59:30 +08:00 via Android
目录结构更重要,笑
|
30
no1xsyzy 2020-12-06 19:12:39 +08:00 1
楼上认为接触不到算法的,感觉是受了狭义算法和广义算法的迷惑。
只有数据结构,没有(广义)算法,那你连操作数据结构都做不到,这个不叫程序,叫数据备份。 就是一个 strcmp 也是(广义)算法。 没有(广义)算法,你操作不了数据结构;没有数据结构,你(广义)算法操作啥? 至于业务重要,其实大部分程序员的工作不是设计业务(这是世界或者社会的活,轮不到你区区一个智人种个体),而是理解业务,再将业务转化为数据结构和算法(也就是计算机听得懂的方式)。 “业务”和“数据结构和算法”哪个重要?这个问题跟主题的问题也一样。 |
31
ggbdpq 2020-12-06 19:17:06 +08:00 1
除去算法工程师之外,月薪 2 万以下不用考虑算法,这时候数据结构的重要性就出来了;年薪三四十万的可能就接触一些简单的算法。现在的很多码农还真搞不清楚算法和数据结构,23 楼那哥们太以全概偏或者以偏概全都是片面的和不对的。
总结,面对技术来说,两者都重要;面对业务来说,数据结构更重要;面对薪资来说,老板认为哪个重要就重要。撇开上述的,当然是两者都重要,并没有最重要分区别。因为你写的每一行代码都是粗略的算法,或多或小都包含数据结构这方面的知识。 |
33
linyuxin 2020-12-06 19:51:11 +08:00 via Android
能赚钱就重要
|
34
namelosw 2020-12-06 19:53:13 +08:00 2
算法是你想出来解决某些问题的一个解.
数据结构是算法用得比较多之后内化出来的一个模型. 重视数据结构的代码比不重视数据结构的代码清晰易懂好维护, 不过数据结构一般不会让你做出之前不能做到的事情. 你可以把数据结构看作某些算法的沉淀. 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 里已有的很多东西. |
35
skypyb 2020-12-06 19:54:54 +08:00 1
程序 = 搜索引擎+英语
这才是对的🐶 |
36
OneMan 2020-12-06 20:01:25 +08:00
解决问题最重要
|
37
muzuiget 2020-12-06 20:11:45 +08:00
怎么设计数据结构也是算法的一部分,虽然一般人觉得“算法”只是代码控制流。
|
38
rim99 2020-12-06 20:19:34 +08:00 1
记得以前看过一个大牛的观点,就是说数据结构确定之后,已经决定了算法的效率的上下限。所以数据结构的设计更为重要些。
|
39
uselessVisitor 2020-12-06 20:38:51 +08:00 via Android
业务写不完了
|
40
geebos 2020-12-06 20:41:40 +08:00
算法和数据结构两者不是孤立的,甚至我们有时候说算法就是在说算法和数据结构。恰当的算法配合恰当的数据结构就可以产生一个优秀的程序。比如 redis 里的 set 实现,hash table 的数据结构还要搭配 rehash 算法 set 才能发挥出最好的效果。个人认为把算法和数据结构拆开来比较没有意义,也许它们中某一个比另一个重要一些,但那又怎样呢,这对写出好的程序没有任何帮助。
|
41
ZRS 2020-12-06 21:40:41 +08:00 via iPhone
这是个语文话题 和技术无关
|
42
akira 2020-12-06 21:58:29 +08:00
数据库表结构设计 和 sql 哪个重要
|
43
niubee1 2020-12-06 22:03:25 +08:00
互为表里,你非要拆开来说谁重要,要么是真不懂,要么是坏
|
44
mingl0280 2020-12-06 22:20:57 +08:00 via Android
很莫名其妙的问题啊,两个哪个拆得开一样……
|
45
chenglus 2020-12-06 22:38:15 +08:00
业务最重要+1
|
46
jones2000 2020-12-06 22:50:30 +08:00 1
数据结构重要, 程序员只是算法的搬运工.
|
47
pinocc012 2020-12-06 22:57:23 +08:00
如果你写一个“hollo world”,两者都不重要
|
48
cedoo22 2020-12-06 23:25:28 +08:00
算法 必定要针对不同的数据结构 有不同的实现,能分开嘛?
|
49
prime2015 2020-12-06 23:38:51 +08:00
都不重要,生活最重要
|
50
raaaaaar 2020-12-06 23:49:49 +08:00 via Android 1
根本就分不开,耦合度那么高,我问你怎么求树的直接前驱,这是不是数据结构的基本操作?那这是不是一个算法?
我问你怎么堆排序,用到了堆,那它是不是个数据结构? 如果是狭义上的那些算法,像什么排序,查找,贪心,动态规划,这些的确业务上不需要实现,但是如果你遇到一个你要看得懂,同样的,数据结构也是一样的,你读源码,你造轮子,不一样要接触这些东西吗? |
51
kidlj 2020-12-07 00:17:06 +08:00 via iPhone
数据结构是算法的一部分,瞎问问题。
|
52
taogen 2020-12-07 00:38:22 +08:00 via Android
活着最重要
|
53
IvanLi127 2020-12-07 00:56:25 +08:00 via Android
角度刁钻,它俩分不开,得配套使用。
|
54
lhx2008 2020-12-07 00:59:52 +08:00 via Android
对于业务来说,只要测试,监控,压测都过了,再烂的代码也能玩的好好的
|
55
FS1P7dJz 2020-12-07 01:05:04 +08:00 1
数据结构重要
在目前大部分商业开发种,数据结构类似楼房的地基和框架,没这个你算法再牛逼,也成不了大气候 说都重要的实际上就是再搅稀泥,来 v2 大家都知道楼主问的算法和数据结构指的是啥 |
56
ChrisLi1018 2020-12-07 08:05:56 +08:00 via iPhone
算法难道不是用来操纵数据结构的吗?
|
57
jackky365 2020-12-07 08:37:33 +08:00
很大程度上, 你使用什么样的数据结构,已经反映出了你的算法。
两者是相辅相成的。 |
58
IssacTomatoTan 2020-12-07 08:45:03 +08:00 via Android
我也觉得数据结构重点 好的结构可以更容易进行处理 而不需要过度转换 在牛逼的算法也是建立在能处理的结构上
|
59
snowydec 2020-12-07 08:51:39 +08:00
你上学的时候这两个是两本书?
|
60
freenull 2020-12-07 09:18:16 +08:00
两个难道不是一起的么
|
61
StopTheWorld 2020-12-07 09:23:42 +08:00
最让我差异的是这种问题有这么多人回复,当然我回复了也是其中一员。
|
62
fhsan 2020-12-07 09:38:56 +08:00
讨论这个问题应该放在合适的场景
|
63
securityCoding 2020-12-07 09:54:08 +08:00
这种问题不应该被问出来的,算法和数据结构相辅相成.
数据结构为算法服务,算法作用于特定的数据结构 |
64
hugo2lee 2020-12-07 10:04:01 +08:00
数据结构就是人肉大脑设计出来的算法,装填数据的算法
|
65
wangchonglie 2020-12-07 11:00:27 +08:00
数据结构是算法的基础, 数据结构是算法设计出来的, 就好比血与肉, 都重要。
|
66
abser OP @FS1P7dJz 数据结构重要
在目前大部分商业开发种,数据结构类似楼房的地基和框架,没这个你算法再牛逼,也成不了大气候 说都重要的实际上就是再搅稀泥,来 v2 大家都知道楼主问的算法和数据结构指的是啥 明白人 如果没有场景,为什么不能设立场景分析呢? 如果问题不明朗,为什么不额外探究问题的新的可选答案呢? 如果问题能够激发自己的思考,为什么不深入思考一下帮助自己进一步理解编程在做什么呢? 我是站着这样的立场向自己提出的思考,分享这个问题希望大家也能获益。 |
67
Anarchy 2020-12-07 12:13:41 +08:00 via Android
算法是一个比较大的概念,可以完全涵盖数据结构。或者问题可以转换为数据结构在算法中的地位。都单独起专有名词了当然是重要的了。
|
68
rotatefish 2020-12-07 12:20:08 +08:00 1
好带哥
|
69
annielong 2020-12-07 13:58:48 +08:00
还没到能比较的层次,目前接触到最多都是 spring 框架接入数据库表自动生成一切
|
70
Lemeng 2020-12-07 14:47:38 +08:00
这个问题呢,额,宝妈,你喜欢老大还是老二只能喜欢一个
|
71
lllllIIIlll 2020-12-07 16:04:07 +08:00
算法和数据结构没办法拆开来谈吧,还没有碰到两者任一单独出现的场景。
|
72
chengkai1853 2020-12-07 16:20:30 +08:00
总不是看你写的是哪种工程。如果是系统这种算法比较多的,肯定算法重要啊。绝大多数情况(一般的软件),都是结构比较重要。毕竟写了那么多年,二叉树啥的算法都没手动写过。
|
73
fox0001 2020-12-07 19:08:54 +08:00 via Android
需求最重要
|