不会算法不懂数据结构不明原理的程序员能走多远?

2015-07-08 10:07:56 +08:00
 muyege

RT,大专没教数据结构,算法也没学过,工作3年了,现在学还来得及不?有学习路线推荐吗?

13781 次点击
所在节点    程序员
69 条回复
muyege
2015-07-08 17:48:52 +08:00
@anjianshi 这个屌
beimenjun
2015-07-08 17:57:01 +08:00
看了更新,天了噜,学习数据结构看谭浩强。

另外楼主如果觉得@anjianshi 的这个言论很有道理的,不多说了,只能祝顺利了。
hitmanx
2015-07-08 18:25:06 +08:00
数据结构和算法我感觉还是很重要的,倒不一定说要自己实现一个红黑树之类的,而是对于它基本有个概念。举个简单的例子,比如什么场景下适合用std::map,什么情况下用std::tr1::unordered_map,两者背后的数据结构分别是什么,常见操作的复杂度分别是多少,占用空间又是多少。如果应用得当,在一些场景下,程序效率提高几十倍都是很有可能的。

像我们这种非科班出身的,肯定没在学校里学过这门课,不过其实自学也不难。如果英文可以的话,我强烈推荐<Algorithms>这本书(现在好像是第四版),里面每种常见的数据结构都有极为详细的介绍,配以大量的详细到令人发指的图,看起来就像单步调试一样清晰。我当初就是看的这本书入的门,另外coursera上有作者的同名课程视频教程。
kzzhr
2015-07-08 18:27:49 +08:00
你看西游记或者金庸小说,真正叼的都是靠内功,比如太上老君的牛鼻环,比如段誉的六脉神剑。拿个大锤或者大砍刀的妖怪都是一下死一片的。
数据结构和算法就算内功部分。
chmlai
2015-07-08 18:31:25 +08:00
不远.
justahappy
2015-07-08 18:36:51 +08:00
你去博客园看看那些写.net的, 算法功底都比较差,学历比较低,见啥喷啥,只会windows,你觉得这类人能走多远。
zhicheng
2015-07-08 19:45:13 +08:00
能走多远取决于你想走多远,别拿不会做借口。以前混的不好的同学经常问我,不会英语和数学能不能学会编程。我就纳闷了,既然知道自己不会英语和数学,为什么不去学一下。
tracebundy
2015-07-08 19:57:40 +08:00
刷题
akira
2015-07-08 20:02:54 +08:00
随便找一本大学的数据结构与算法的教材,看完就差不多了。
muyege
2015-07-08 20:14:39 +08:00
@zhicheng 说的好!我检讨~
ericls
2015-07-08 20:26:22 +08:00
可以边用边学啊 何必呢
unionx
2015-07-08 20:59:46 +08:00
感觉只要能把代码写得比较清楚,就能走挺远的
osto
2015-07-08 22:33:42 +08:00
不会算法也可以走远,
但会了会走得比较飘逸(智商优越的幻觉)
以楼主提问的水平推测,学了对平时工作是没啥直接作用的.
等你要面试集中学学即可.
推荐roadmap直接刷leetcode, 不会再查书.
等你leetcode都刷过了, 足以秒杀国内90%的程序员..
到时候你也知道针对工作需要学到什么程度了和如何按需学习了
chairuosen
2015-07-08 22:48:35 +08:00
你可以做一个前端
wudikua
2015-07-08 22:52:43 +08:00
刚毕业得会,以后的话就靠你做过的事来炫吧
miss417
2015-07-08 23:02:41 +08:00
要想做的深入,会一点算法是必须的,懂得原理则是必须的。
sivacohan
2015-07-08 23:25:14 +08:00
其实你翻书看看,就会发现算法没有你想的那么难。专注于一点来攻破效果很好。
其实算法真正的难点是什么时间选择什么算法。以最简单的排序算法来举例。算法的时间复杂度其实是严重依赖于数据的有序性的,对于不同语言,稳定排序和不稳定排序的表现也不同。
关注于问题的解决,然后再关注问题解决方法的优化,比单纯的刷题,刷算法有意义的多。
而且,到目前而言,我遇到的问题,也没有超出排序,查找,压缩。
worldcao
2015-07-08 23:25:56 +08:00
@anjianshi 有理
ChiangDi
2015-07-08 23:28:26 +08:00
学一段时间就好了。
insaneguy
2015-07-08 23:32:41 +08:00
感觉身边搞过 ACM-ICPC 的人学东西都很快,而且逻辑分析能力都很强,这应该和他们进行过的算法训练有关吧。

我是大二下学期才算正式接触编程的(非计算机专业),当时跟一个老师做C++相关的项目,连栈(stack)是什么都不知道,也不知道时间复杂度、空间复杂度为何物,经常想到哪写到哪,结果就是写出来的东西乱七八糟,根本完不成老师布置的任务。大三选修了计算机学院的“数据结构基础”课程,发现对提高自己编程能力很有帮助。大部分时候虽然不会自己去实现数据结构和算法,但清楚什么场景下应该选取哪种数据结构和算法才能更好地解决问题。

英文好的话直接去 coursera 上课,配合<Algorithms>这本书一起看:
https://www.coursera.org/course/algs4partI
https://www.coursera.org/course/algs4partII

中文的资源我看过计蒜客的<程序设计竞赛入门>(http://www.jisuanke.com/course/8),讲解+练习的形式,比较基础,但感觉入门很合适的。

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

https://tanronggui.xyz/t/204129

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

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

© 2021 V2EX