读算法导论

2014-07-12 11:10:42 +08:00
 jianzong
因为我是转行做程序员的,所以想自学补充一些计算机基础知识。经计算机系的同学指点以及Quora指教,发觉算法导论是本好教材。

只是看起来实在太慢了,年初给自己定的目标是半年内至少看完一本(一共三本)。但是因为工作时间少,导致前面看的后面就忘了,对许多知识点也只是有个模糊印象。

其实我觉得算法还挺有意思的,大家有没有更好的学习方法建议呢。
6320 次点击
所在节点    问与答
30 条回复
hitigon
2014-07-12 11:22:10 +08:00
算法导论不是只有一本么……
roamlog
2014-07-12 11:24:11 +08:00
如果想补基础的话,我更推荐去啃这本 http://book.douban.com/subject/5333562/

数据结构看这本可能会更容易一些 http://book.douban.com/subject/6424904/
freedomSky
2014-07-12 11:27:14 +08:00
如果只是想短时间入门,没必要整本的看《算法导论》(当然也要看你的就业方向)。
选择一门语言(c?python?Go?java?),写点儿简单的代码,对编程有点感性的认识,
然后数据结构、数据库、网络、操作系统搞起,这些熟悉一下基本入门了。
jianzong
2014-07-12 11:28:08 +08:00
@hitigon 对。。暴露了我把它分开三本了。。。
jsonline
2014-07-12 11:29:18 +08:00
你读算法导论是想做游戏开发么?
现在Web开发、客户端开发都用不到算法导论。
我这周也在读这本书,我已经做 Web 开发三年了。
我倒是推荐初学者先看看C语言、数据结构这些。
尤其是《代码大全》《软件沉思录》这两本书,能纠正国内程序员很多错误而又根深蒂固的理念!
fangzhzh
2014-07-12 11:29:27 +08:00
也许你需要一个老师....
jianzong
2014-07-12 11:30:44 +08:00
@freedomSky 嗯现在以及从事编程工作差不多一年了,写的是iOS和ruby。上半年看了鸟哥的私房菜把linux一些基本知识看了,觉得虽然很多知识日常工作中用不到,但是却能从多个层面加深对手上问题的理解。所以力所能及情况下,我比较倾向与更多地了解一些“基础”、“底层”的东西。
jsonline
2014-07-12 11:31:55 +08:00
学C语言能让你对「软件是如何操作内存」有一个初步的了解。随便买一本畅销的、美国人写的C语言教程就好。
虽然我现在主要写 JS/HTML/CSS,但我依然庆幸自己学的第一门语言是 C 语言,而不是 C++/Java 之类的高级(搞基?)语言
jianzong
2014-07-12 11:32:38 +08:00
@fangzhzh 的确,如果当初本科选读计算机就好了。。其实想过申请国外的cs master的,可是好像大部分都需要本科是计算机专业的。
jianzong
2014-07-12 11:33:28 +08:00
@roamlog 嗯我去了解下这两本书
jianzong
2014-07-12 11:36:10 +08:00
@jsonline 我对游戏开发不太感冒,目前我也是web开发和iOS开发,只是觉得在计算机领域要深入下去,恐怕还是要把一些基础概念啃下来。虽然目前暂时能够胜任手上工作,但是运用高级语言的时候不能了解其后的原理,实在让我心惊惊。等会将大家推荐的书都补充到主题补充里面去:)
jianzong
2014-07-12 11:38:31 +08:00
@jsonline 兄台有没有使用过learn C the hard way?我年初的时候也想了解下C语言,好像很多人推荐这个。话说现在我已经学了几门高级语言(iOS、ruby、javascript),学C语言的话,还必要重新学C么。
jsonline
2014-07-12 11:38:32 +08:00
@fangzhzh 其实我心里一直有一个偏见:靠老师教来学编程的人,其实是不适合做程序员的。
当然,只是我的偏见。
jsonline
2014-07-12 11:44:27 +08:00
@jianzong 这就是我说的问题,如果一个程序员的入门语言比较高级(你列的几个都是),但是他又没有一个学过低级语言的朋友交流的话,很容易在使用高级语言一段时间后发现后劲不足。因为他会觉得和计算机之间隔着一层东西,无法深入。
如果你已经熟悉C语言的指针的话,其实就没比较再学一边了,继续看算法导论就很好,可以深入了解数据结构、以及一些精巧的算法。

如果你不熟悉C语言是如何操作内存的话,你可以试着用C把几个著名的排序算法都实现一边,边做边学。

没必要像新手一样把一本书一页一页地看完。
jsonline
2014-07-12 11:45:17 +08:00
更正:……其实就没必要再学一遍了……
jianzong
2014-07-12 11:50:15 +08:00
@jsonline 嗯,那看来我就不从头学了,把C的几个关键问题看一遍,算法导论慢慢看就好。谢谢你的建议:)
hitigon
2014-07-12 11:51:45 +08:00
三大课:操作系统,编译器,网络
外加:算法(含数据结构)
可选:计算机原理/架构
jsonline
2014-07-12 11:52:44 +08:00
@hitigon 操作系统方面你有什么书籍推荐?
66450146
2014-07-12 11:56:38 +08:00
算法导论是一本非常特别的书。它既是一本教材,也是一本工具书,就看你怎么读它了。

如果你把它当作一本教材,那就像上学的时候一样,一章一章看下去(有一些可以跳过),一个概念一个概念弄明白,刷掉课后习题。这本书的课后习题很棒!

如果你把它当作一本工具书,那就先翻一遍对整本书有个粗略的印象,然后把最近用得上的代码实现一遍保存下来待查阅就可以了。

无论是哪一种读法,只要用心坚持,都会对自己的算法分析能力有很大的提高,这是一本好书
allenforrest
2014-07-12 11:57:48 +08:00
@jsonline Unix 操作系统设计

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

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

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

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

© 2021 V2EX