跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 纯技术话题:程序,是算法重要还是数据结构重要?
未分類
2 12 月 2020

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

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

資深大佬 : abser 4

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

大佬有話說 (73)

  • 資深大佬 : 1rror

    这个我感觉不管说哪个更重要都有反驳的理由,两个缺一不可,讨论这个没啥意义阿。

  • 資深大佬 : Kiske

    走路,是左腿重要还是右腿重要

  • 資深大佬 : wszgrcy

    这个问题就像问吃早餐豆浆和油条哪个先吃一样……

  • 資深大佬 : aguesuka

    算法 ∪ 数据结构 ≠ 程序
    (算法 ∪ 数据结构) – 算法 ≠ 数据结构
    重要 (算法) => undefine excpetion!
    你问了一个不是很好的问题

  • 資深大佬 : lixiang2017

    程序=算法+数据结构

  • 資深大佬 : liuch

    这个问题…..
    左腿重要还是右腿重要?

  • 資深大佬 : tiedan

    算法+数据结构 = 程序

  • 主 資深大佬 : abser

    ![]( https://i.loli.net/2020/12/06/viIUcWMQrVN3mOq.png)

    源自 那谁 的博客思考

    https://www.codedump.info/post/20200605-how-to-read-code-v2020/

  • 主 資深大佬 : abser

    以下来自上面博客的引用:

    虽然说“程序设计=算法+数据结构”,然后我实际中的体会,数据结构更加重要。

    因为结构定义了一个程序的架构,结构定下来了才有具体的实现。好比盖房子,数据结构就是房子的框架结构,如果一间房子很大,而你并不清楚这个房子的结构,会在这里面迷路。而对于算法,如果属于暂时不需要深究的细节部分,可以参考前面“区分主线和支线剧情”部分,先了解其入口、出口参数以及作用即可。

    Linus 说: “烂程序员关心的是代码。好程序员关心的是数据结构和它们之间的关系。”

    因此,在阅读一份代码时,厘清核心的数据结构之间的关系尤其重要。这个时候,需要使用一些工具来画一下这些结构之间的关系,我的源码分析类博客中有很多这样的例子,比如《 Leveldb 代码阅读笔记》、《 Etcd 存储的实现》等等。

    需要说明的是,情景分析、厘清核心数据结构这两步并没有严格的顺序关系,不见得是先做某事再做某事,而是交互进行的。

    比如,你如果现在刚接手某个项目,需要简单的了解一下项目,可以先阅读代码了解都有哪些核心数据结构。理解了之后,如果不清楚某些情景下的流程,可以使用情景分析法。总而言之,交替进行直到解答你的疑问为止。

  • 資深大佬 : cmostuor

    @tiedan +1

  • 資深大佬 : flawless

    都不重要,业务最重要。

  • 資深大佬 : imn1

    这样说吧,接触算法的程序员并不多,做业务流程的是大部分,业务流程跟数据结构是紧密相关的
    做核心算法的,就算你想加到程序里面,恐怕也要申请,不是程序员本身就能决定的
    程序员能直接控制算法的,多是研究人员岗位,或者独立开发

    至于基础算法会不会常用,就看项目有没有各种条条框框限制了,模块内优化还是需要的

  • 資深大佬 : JeffGe

    《五官争功》

  • 資深大佬 : fline

    只有技术不好的人才纠结这种问题。。。

  • 資深大佬 : autoxbc

    程序 = 算法 + 数据结构 ×
    程序 = 算法 * 数据结构 √

  • 資深大佬 : charlie21

    写到一万行代码之前根本不需要考虑这个

  • 資深大佬 : Jooooooooo

    都不重要

    业务最重要

  • 資深大佬 : zion03

    记得之前看过 Linus 评价 Git 的数据结构很稳定,好的数据结构设计能使代码更容易维护。
    在工作中遇到的实际情况也是如此,算法只是程序的一小部分,随着需求的不断更迭,程序也需要不断的重构(当然,良好的设计模式能应对大部分需求的变更)。但如果数据结构出现了无法满足新需求的情况,重构起来会非常痛苦。

  • 資深大佬 : zzzzzzggggggg

    没有讨论的意义

  • 資深大佬 : wellsc

    程序=数据结构+算法,缺一不可

  • 資深大佬 : tiglapiles

    数据结构更重要,因为能用数据结构解决的问题就不要用算法解决

  • 資深大佬 : cccp2020

    程序=复制+粘贴

  • 資深大佬 : nicebird

    考虑这种东西完全没有意义,连这两个都搞不明白,不要当程序员了。

  • 資深大佬 : aonshuy

    我认为辩证法更重要

  • 資深大佬 : lijie0981

    其实我觉得设计模式比较重要

  • 資深大佬 : TangMonk

    英语重要

  • 資深大佬 : xuanbg

    @wszgrcy 肯定是油条泡一下豆浆再吃啊

  • 資深大佬 : agagega

    认真回答的话:大部分时候数据结构更重要。很多程序员可能用不到什么算法,但一定会接触到数据结构(比如三天两头就会有人吐槽的前后端接口格式!)

  • 資深大佬 : liberty1900

    目录结构更重要,笑

  • 資深大佬 : no1xsyzy

    上认为接触不到算法的,感觉是受了狭义算法和广义算法的迷惑。
    只有数据结构,没有(广义)算法,那你连操作数据结构都做不到,这个不叫程序,叫数据备份。
    就是一个 strcmp 也是(广义)算法。
    没有(广义)算法,你操作不了数据结构;没有数据结构,你(广义)算法操作啥?

    至于业务重要,其实大部分程序员的工作不是设计业务(这是世界或者社会的活,轮不到你区区一个智人种个体),而是理解业务,再将业务转化为数据结构和算法(也就是计算机听得懂的方式)。
    “业务”和“数据结构和算法”哪个重要?这个问题跟主题的问题也一样。

  • 資深大佬 : ggbdpq

    除去算法工程师之外,月薪 2 万以下不用考虑算法,这时候数据结构的重要性就出来了;年薪三四十万的可能就接触一些简单的算法。现在的很多码农还真搞不清楚算法和数据结构,23 那哥们太以全概偏或者以偏概全都是片面的和不对的。

    总结,面对技术来说,两者都重要;面对业务来说,数据结构更重要;面对薪资来说,老板认为哪个重要就重要。撇开上述的,当然是两者都重要,并没有最重要分区别。因为你写的每一行代码都是粗略的算法,或多或小都包含数据结构这方面的知识。

  • 資深大佬 : no1xsyzy

    @aguesuka 第三行没看懂……

  • 資深大佬 : linyuxin

    能赚钱就重要

  • 資深大佬 : namelosw

    算法是你想出来解决某些问题的一个解.

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

    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

    程序 = 搜索引擎+英语
    这才是对的

  • 資深大佬 : OneMan

    解决问题最重要

  • 資深大佬 : muzuiget

    怎么设计数据结构也是算法的一部分,虽然一般人觉得“算法”只是代码控制流。

  • 資深大佬 : rim99

    记得以前看过一个大牛的观点,就是说数据结构确定之后,已经决定了算法的效率的上下限。所以数据结构的设计更为重要些。

  • 資深大佬 : beichenhpy

    业务写不完了

  • 資深大佬 : geebos

    算法和数据结构两者不是孤立的,甚至我们有时候说算法就是在说算法和数据结构。恰当的算法配合恰当的数据结构就可以产生一个优秀的程序。比如 redis 里的 set 实现,hash table 的数据结构还要搭配 rehash 算法 set 才能发挥出最好的效果。个人认为把算法和数据结构拆开来比较没有意义,也许它们中某一个比另一个重要一些,但那又怎样呢,这对写出好的程序没有任何帮助。

  • 資深大佬 : ZRS

    这是个语文话题 和技术无关

  • 資深大佬 : akira

    数据库表结构设计 和 sql 哪个重要

  • 資深大佬 : niubee1

    互为表里,你非要拆开来说谁重要,要么是真不懂,要么是坏

  • 資深大佬 : mingl0280

    很莫名其妙的问题啊,两个哪个拆得开一样……

  • 資深大佬 : chenglushe

    业务最重要+1

  • 資深大佬 : jones2000

    数据结构重要, 程序员只是算法的搬运工.

  • 資深大佬 : pinocc012

    如果你写一个“hollo world”,两者都不重要

  • 資深大佬 : cedoo22

    算法 必定要针对不同的数据结构 有不同的实现,能分开嘛?

  • 資深大佬 : prime2015

    都不重要,生活最重要

  • 資深大佬 : raaaaaar

    根本就分不开,耦合度那么高,我问你怎么求树的直接前驱,这是不是数据结构的基本操作?那这是不是一个算法?
    我问你怎么堆排序,用到了堆,那它是不是个数据结构?

    如果是狭义上的那些算法,像什么排序,查找,贪心,动态规划,这些的确业务上不需要实现,但是如果你遇到一个你要看得懂,同样的,数据结构也是一样的,你读源码,你造轮子,不一样要接触这些东西吗?

  • 資深大佬 : kidlj

    数据结构是算法的一部分,瞎问问题。

  • 資深大佬 : taogen

    活着最重要

  • 資深大佬 : IvanLi127

    角度刁钻,它俩分不开,得配套使用。

  • 資深大佬 : lhx2008

    对于业务来说,只要测试,监控,压测都过了,再烂的代码也能玩的好好的

  • 資深大佬 : FS1P7dJz

    数据结构重要

    在目前大部分商业开发种,数据结构类似房的地基和框架,没这个你算法再牛逼,也成不了大气候

    说都重要的实际上就是再搅稀泥,来 v2 大家都知道主问的算法和数据结构指的是啥

  • 資深大佬 : ChrisLi1018

    算法难道不是用来操纵数据结构的吗?

  • 資深大佬 : jackky365

    很大程度上, 你使用什么样的数据结构,已经反映出了你的算法。

    两者是相辅相成的。

  • 資深大佬 : IssacTomatoTan

    我也觉得数据结构重点 好的结构可以更容易进行处理 而不需要过度转换 在牛逼的算法也是建立在能处理的结构上

  • 資深大佬 : snowydec

    你上学的时候这两个是两本书?

  • 資深大佬 : freenull

    两个难道不是一起的么

  • 資深大佬 : StopTheWorld

    最让我差异的是这种问题有这么多人回复,当然我回复了也是其中一员。

  • 資深大佬 : fhsan

    讨论这个问题应该放在合适的场景

  • 資深大佬 : securityCoding

    这种问题不应该被问出来的,算法和数据结构相辅相成.

    数据结构为算法服务,算法作用于特定的数据结构

  • 資深大佬 : hugo2lee

    数据结构就是人肉大脑设计出来的算法,装填数据的算法

  • 資深大佬 : wangchonglie

    数据结构是算法的基础, 数据结构是算法设计出来的, 就好比血与肉, 都重要。

  • 主 資深大佬 : abser

    @FS1P7dJz 数据结构重要

    在目前大部分商业开发种,数据结构类似房的地基和框架,没这个你算法再牛逼,也成不了大气候

    说都重要的实际上就是再搅稀泥,来 v2 大家都知道主问的算法和数据结构指的是啥

    明白人

    如果没有场景,为什么不能设立场景分析呢?
    如果问题不明朗,为什么不额外探究问题的新的可选答案呢?
    如果问题能够激发自己的思考,为什么不深入思考一下帮助自己进一步理解编程在做什么呢?

    我是站着这样的立场向自己提出的思考,分享这个问题希望大家也能获益。

  • 資深大佬 : Anarchy

    算法是一个比较大的概念,可以完全涵盖数据结构。或者问题可以转换为数据结构在算法中的地位。都单独起专有名词了当然是重要的了。

  • 資深大佬 : rotatefish

    好带哥

  • 資深大佬 : annielong

    还没到能比较的层次,目前接触到最多都是 spring 框架接入数据库表自动生成一切

  • 資深大佬 : Lemeng

    这个问题呢,额,宝妈,你喜欢老大还是老二只能喜欢一个

  • 資深大佬 : lllllIIIlll

    算法和数据结构没办法拆开来谈吧,还没有碰到两者任一单独出现的场景。

  • 資深大佬 : chengkai1853

    总不是看你写的是哪种工程。如果是系统这种算法比较多的,肯定算法重要啊。绝大多数情况(一般的软件),都是结构比较重要。毕竟写了那么多年,二叉树啥的算法都没手动写过。

  • 資深大佬 : fox0001

    需求最重要

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具