作者:知乎
来源:http://dwz.date/eYck
在知乎上看到这个问题,有些答案写得很好,很有意思,分享给大家。
知乎网友晓磊的回答:
算法像是单兵的作战能力和武器装备,设计模式像打仗列的阵型。只是单挑的话,阵型就不重要了(叫单例模式也可以吧);如果是群斗,请参考戚家军是如何用鸳鸯阵吊打单兵作战能力爆表的日本武士;如果上升到产品成败的战略高度,不好意思,除非能开挂做到《硅谷传奇》里男猪脚那个牛逼的压缩算法,同时还要开主角光环才行个人建议先学好算法,会养成一个工程师必须具备的心态:不断优化自己程序的效率,低效一点都无法容忍。
妥协的事情等到开始工作后再慢慢做吧。最最不济,学好算法,面试的时候也是极有用的.....至于设计模式,学也只是摸到皮毛,这需要大量的实践经验才可以。很多人在写了n年代码,直到开始带团队单挑项目后,才发现23种设计模式是这么牛逼闪闪和有用。
知乎网友 Intopass
的回答:
算法是如何去造更好的砖块,钢筋,水泥。
设计模式是如何使用这些组件去盖房子。
对于C程序员他们一般喜欢从砖头开始造起。
对于Java程序员他们一般喜欢用别人造的砖。
对于新手来说,积累经验是最重要的,研究理论不如边干边想。
Sisyphus
的回答:
算法和设计模式归根结底代表了两种编程思维。一种编程方式强调透明的数据结构和算法,另外一种强调继承多态等OO特性。前者修改逻辑容易而扩展数据类型难,后者扩展类型容易而修改逻辑困难。
均各有利弊,当然这仅限于OO编程语言中,放到其他语言中讨论可能不太适合,比如说FP。一切都是对象只是神话,在合适的时候选用合适的工具最重要。
超有才华的母猿
的回答:
算法更基础,而设计模式需要有了一定的实战经验,才能理解它给你在代码架构设计中带来的收益。而从现在的大学计算机课程设计来看,《数据结构与算法》这门课必然会有,而《设计模式》则不一定有。它就像中小学的性教育,很重要,却不被重视。
简单地说:算法实则是更加基础的东西,对于初学者来说可以一开始就学习。但设计模式,则是需要更多实战经验才能够有用。
推荐阅读