Linux 编程经典书籍推荐
2008年10月17日
成为一名精通 Linux 程序设计的高级程序员一直是不少朋友孜孜以求的目标。根据中华英才网统计数据,北京地区 Linux 程序员月薪平均为 Windows 程序员的 1.8 倍、Java 程序员的 2.6 倍, Linux 程序员年终奖金平均为 Windows 程序员的 2.9 倍。同时数据显示,随着工作经验的增长, Linux 程序员与 Windows 程序员的收入差距还有扩大的趋势。Denis 认为,要学好 Linux 环境下的编程,关键是要看对、选对、学会正确的书籍。可以说,如果你选对了 Linux编程的经典书籍,配合你在程序设计工作中的刻苦钻研,成为一名精通 Linux 程序设计的高级程序员并非一件可望不可及的事情。但如果各位程序员朋友没有选对正确的书籍,则你的职业生涯之路就可能面临坎坷。今天,水煮鱼向各位朋友推荐的这些书,有的是资深老前辈们当初向水煮鱼的推荐,还有的是 IBM 的内部培训指定参考书,它们都很值得各位朋友抽空认真一读。
为什么要学习 Linux 环境下的编程
Linux 是一个开放、灵活、跨平台的操作系统,上至庞大的数据中心,下至可放于掌心中的嵌入式设备,无处没有 Linux 的身影。更为重要的是, Linux 是一个与 Unix 既一脉相承又与时俱进的系统。可以说,上世纪70年代学习的 Unix 知识和技巧,在今天仍然大有用武之地,这与 Windows 平台的开发形成了鲜明的对比。程序员不用担心今天微软出一个 .net,明天又出一个 F#,使得自己过去学习的成果付之东流。
上个星期,水煮鱼与一位 Linux 项目经理聊天过程中,这位 Linux 项目经理告诉水煮鱼,他们项目的利润非常高,急需具备一定 Linux 编程知识的程序员。他说:“其实我们对程序员的编程技巧要求也并非很高,这是可以在工作中培训和提高的,关键是很多程序员连基本的 Linux 编程思想都不了解,我怎么聘用他们呢?我们去大学招聘的时候,给本科应届生开出 8000 元的月薪,但是就是很难招到人。我拿一些经典书籍中一些经典例子来考他们,他们基本上都是一问三不知。其实,如果他们能回答上一半的问题,我还是很愿意考虑是否聘用他们的。而对于项目相关部分的专业知识,我们有专业的内部培训,并不担心这个问题,关键是看应聘者是否具备 Linux 编程的基本思想。”
水煮鱼认为,这位项目经理朋友提到的问题还是很有代表性的。其实很多程序员朋友,只要能掌握这些书中的基础知识,是很容易脱颖而出的。事实上,项目经理他们也都很忙,并没有空去自己设计高难度的面试题目,而是直接采用经典书籍中的经典例子。
《UNIX环境高级编程》(第2版),史蒂文斯著
《UNIX环境高级编程》,推荐指数:★★★★★
《UNIX环境高级编程》是 Unix/ Linux 程序员案头必备的一本书籍。可以说,Linux 程序员如果没有读过这本书,就好像基督教徒没有读过圣经一样,是很难让人理解的。这本书概括了 Linux 编程所需的一切理论框架、主要系统函数、多进程编程、乃至 Linux 网络通信。对于初学者,如果你能将《操作系统》这门课程结合着这本书来学习,试着用 Linux 程序实践《操作系统》这门书中讲的进程间通信、进程调度、进程同步等内容,相信这将是一个一举两得的事情。哦,忘了告诉大家,上次 CNN 采访 Google 总裁佩林的时候,水煮鱼看到佩林的书架上就有这本书的英文版,可见它真的是一本全球开发者必备的一本书。
《深入理解 Linux 内核》(第三版) ,博韦等著
《深入理解 Linux 内核》,推荐指数:★★★★
学习 Linux ,就要学习 Linux 的精华。而 Linux 的精华,则在于 Linux 的内核。《深入理解 Linux 内核》就是一本辅助学习 Linux 内核的经典书籍。有的初学者,在没有人指导的情况下,就钻入 Linux Kernel代码的海洋中埋头苦学,结果学了半天仍然是一头雾水。当然了,在大师指导下学习就不一样了。本书以最新的 Linux 2.6 版架构为基础,分门别类地向初学者介绍了 Linux 内核的架构、编程思想、以及功能模块。相信你在本书的指导下学习,对于你读懂 Linux 操作系统的精华部分,会取得事半功倍的效果。事实上,不少知名公司招聘的题目里面,很多就出自这本书,可见它真的是论述 Linux 内核的经典书籍。
《Linux 设备驱动程序》,科波特著
《Linux 设备驱动程序》,推荐指数:★★★
程序开发,高薪在 Linux ; Linux 程序员,高薪在驱动开发。可以说,水煮鱼见过的 Linux 驱动程序员,薪水在万元以下的,一个都没有。普遍观点认为, Linux 驱动开发很难学,这并不正确。初学者认为 Linux 驱动开发很难学,关键在于其没有选对正确的入门书籍。《 Linux 设备驱动程序》这本书,过去已经有多位 Linux 项目经理向水煮鱼推荐过,你要想学MOD编程,想挑战高薪职位,这本书读一读是很有必要的。当然,这本书不是一本针对初学者的书籍,初学者应首先学习前面提到的《UNIX环境高级编程》再看这本书,你才能真正的学懂学好 Linux 驱动开发。
《嵌入式 Linux 应用开发完全手册》,韦东山著
《嵌入式 Linux 应用开发完全手册》,推荐指数:★★★
要说 Linux 应用最广泛的地方,那一定是无处不在的嵌入式设备了,《嵌入式 Linux 应用开发完全手册》就是一本教会您怎样开发 Linux 嵌入式系统软件的一本好书。水煮鱼与本书作者韦东山老师曾有过一面之缘,当时韦老师正在写作这本书。这本书综合了常见的嵌入式开发经验技巧,以及常见的嵌入式系统应用,系统移植,调试及异常处理等,内容非常丰富,是中文 Linux 领域难得的一本好书。嵌入式处理器种类繁多,韦老师着重讲了目前国内最常用的ARM系统,实用性很强,是国内嵌入式程序员不容错过的一本工具书。
《人月神话》(32周年中文纪念版),布鲁克斯著
《人月神话》,推荐指数:★★★★★
水煮鱼上面为大家推荐了几本 Linux 编程经典书籍,但要问编程的最终目的是什么,那一定还是要应用到实际项目中。做项目,那就一定离不开《人月神话》这本书。《人月神话》的作者布鲁克斯,是水煮鱼所在公司的超级大牛人,也是图灵奖的获得者。去年,他到中国访问的时候曾经表示,《人月神话》这本书,浓缩了项目实践中的正反两方面经验,是项目经理和系统分析师必读的一本书。水煮鱼认为,各位年轻的朋友,最终还是会要管项目的,与其你临时再学习,还不如早点接触这方面的知识比较好。可以说,Linux 的项目,对开发者的要求都很高,大家不要去跟 Windows 程序员学一些不好的习惯,特别是项目实施方面的一些不好的习惯,而应该深入体会大师的书籍。目前,《人月神话》的32周年纪念版已经上市了,有志于成为项目经理和产品经理的人,不应该错过这本做项目的圣经。
总结
古人云:“生而知之者,上也;学而知之者,次也;困而学之,又其次也;困而不学,民斯为下矣。”水煮鱼认为,正如古人所言,对于成功的 Linux 程序员,勤奋苦读的结果,将为您的 Linux 学习之路锦上添花。对于还没有入门的投资者,尽快熟读一两本入门的 Linux 书籍,对于你少走弯路是很重要的。对于已经进入项目,但还不能熟练掌握 Linux 开发的程序员,越早补习自己缺乏的东西,您将越早受益。对于基础薄弱,又拒绝学习的程序员,或许“民斯为下矣”就将是您惨淡的结局。
严禁其它网站转载本文,否则向相应联盟投诉。
好书推荐
- 最佳 CSS 书籍推荐
- Linux 编程经典书籍推荐
- JavaScript 入门最佳书籍
- 搜索引擎优化 SEO 的最佳书籍
43 条评论 添加你的评论 →






1. 开发者 | 2008:10:17 - 21:40:17 | #
我就是搞Linux开发的,除了第四本没有看过外,其它的都看过的。他们现在就在我手边上,哈哈。
2. ham | 2009:05:27 - 08:43:13 | #
这位大哥,你QQ多少呀??小弟现在也在做Linux通信方面的开发,小弟的Q是313060737,以后有什么问题,还望大哥能赐教,谢谢啦!
3. Alex | 2008:10:17 - 21:46:01 | #
请问水煮鱼,我现在帮导师做一个Linux嵌入式项目,导师叫我看《深入理解 Linux 内核》,但是我看不懂,是不是有必要先看《UNIX环境高级编程》熟悉一下概念再看内核?
PS:我这是第一次做Linux项目
4. Denis | 2008:10:17 - 21:53:35 | #
一般还是要先学《UNIX环境高级编程》,再看《深入理解 Linux 内核》,这样是比较循序渐进的学习办法。Linux编程和Windows编程有很大的思路差异,不要急于求成,要慢慢来。
5. 胡戈戈 | 2008:10:17 - 23:11:47 | #
还一头雾水
6. Dianso | 2008:10:17 - 23:28:49 | #
什么也不会啊
7. 程序王 | 2008:10:17 - 23:41:20 | #
都是好书,我看过其中三本。学习之后确实感觉自己在Linux开发方面的能力大有提高。
我毕业两年,现在拿12000一个月,Linux嵌入式开发,还不错吧,嘿嘿。
8. mg12 | 2008:10:17 - 23:50:05 | #
看到这些, 我发现自己错过了很多, 因为兴趣广泛, 什么都懂了一些却不能精通. 不由地唏嘘一下.
还在读书的朋友切记, 早定方向早得道, 赶紧买本书吧…
9. evan | 2008:10:18 - 11:47:24 | #
同唏嘘
10. levin | 2009:05:04 - 09:15:06 | #
同感!
11. 流星 | 2008:10:18 - 01:39:21 | #
完全不懂技术……哎
12. foelin | 2008:10:18 - 02:21:35 | #
正学习linux中~~
thank you quite a lot~~
13. 8016 | 2008:10:18 - 05:44:31 | #
有空看一下,现在Linux什么都不懂,唉
14. ZZ | 2008:10:18 - 10:03:53 | #
很好……
15. gowers | 2008:10:18 - 10:12:03 | #
不错,谢谢鱼的推荐
16. 沙渺 | 2008:10:18 - 12:55:05 | #
上了大学再看8
17. 时 | 2008:10:18 - 15:11:05 | #
不错,有空看看
18. birder | 2008:10:18 - 17:27:52 | #
早几年,能有你这样这篇文章就好了
19. You Xu | 2008:10:18 - 22:29:06 | #
UNIX Programming Environment
Software Tools 以及 The Art of Unix Programming 也都是好书. 设备驱动和内核分析的太偏内核了, 可能实际开发中用不到太多.
20. jianfei | 2008:10:19 - 17:03:46 | #
Linux书一本没看过啊 非常喜欢O’R出的书
21. 菠菜 | 2008:10:20 - 14:06:52 | #
回去先把我藏在机子里的ubantu装了。
22. daniel | 2008:10:22 - 13:36:58 | #
高级版的 。。。 我还在初级状态 。。。
23. LD | 2008:10:25 - 13:39:13 | #
我还掏钱买过两本 内核和人月,不过那是年前了,目前比较实际…………
24. shanghuiji | 2008:10:26 - 11:47:57 | #
我作为一个LINUX 的初学者,现在学习LINUIX的系统管理,不知学习UNIX 环境下的高级编程需多长时间
本人现为一高中学历者,决心学习LINUX 下的编程,我一旦决定的事,撞了南墙都不返
25. 阿J | 2008:11:04 - 10:27:23 | #
是不是有点多呀
26. Ant | 2008:11:15 - 15:18:17 | #
好久没去中图,昨天去无意中看到人月神话放在架子上,就买了一本,回来当小说看,哈哈。
27. Cocoa | 2008:11:28 - 11:26:12 | #
做了两年的windows开发,基本上没接触过linux,如何转向linux开发,除了上述的书外还需要些什么条件,大师们告诉点经验,帮助我少走些弯路,Thank you!
28. 彬 | 2008:11:29 - 20:15:54 | #
我正处在Linux学习的初级阶段,感谢水煮鱼的一番推荐,我现在感觉这几本书非读不可了
29. 宣伟 | 2009:01:07 - 20:15:36 | #
水煮鱼 你推荐的书我打算去买。。 我现在是一个大一的学生 学习软件技术的。 不知道您能否推荐几本! 多谢
30. Denis | 2009:01:07 - 21:08:24 | #
软件技术是一个很大的概念,是编程,还是软件工程,还是项目管理,你首先要自己确定一个目标。
31. ham | 2009:05:27 - 08:39:06 | #
水煮鱼大师说的没错,一个人的精力毕竟有限,要让我们有限的精力创造出最大的价值,首先得有一个比较明确的方向,别什么都想学,结果什么都没学精,现在是一个信息爆炸的时代,真可谓是活到老,学到老,特别是对软件开发这块.
32. 宣伟 | 2009:01:07 - 20:19:33 | #
请您一个邮件的时间把您推荐给我的书籍发送到我的邮箱 谢谢
33. 静水深流 | 2009:01:07 - 20:57:29 | #
第三本应该是比较适合初学者的吧?。。
34. 卡卡 | 2009:01:10 - 08:51:11 | #
我现在是初学的,有什么初级的么!
35. Rat2 | 2009:01:30 - 11:47:46 | #
突然发现链接里面拼错了……
36. 达达 | 2009:02:05 - 04:29:44 | #
要在linux平台上开发一个基于postfix的邮件系统,需要具备那些linux编程的知识,请推荐一些书籍,谢谢
37. 小楷 | 2009:03:05 - 16:07:18 | #
谢谢
38. 王畅 | 2009:03:09 - 17:01:48 | #
这些书听都没听过,我现在是大一的学生,才刚刚接触linux,能否介绍几本初级教程
39. rain | 2009:04:12 - 13:34:52 | #
路过学习了
开源linux GNU
倾力支持
40. 天空 | 2009:05:04 - 11:03:20 | #
正在想如何入手去学习apache呢,看来可以找几本书来参考参考了。
41. karl | 2009:12:20 - 09:35:11 | #
这几本书不错。准备近期看一下
42. sp | 2010:01:20 - 23:14:30 | #
我想浅学一下 linux什么书比较好
了解 会用就可以了
43. geek | 2010:01:23 - 18:01:06 | #
多谢推荐,终于有奋斗目标了!