入门 编程 内核 工具 其他[转]

入门类

一直认为,在一个系统上学习开发之前,首先需要熟悉这个系统的使用。鉴于天朝的国情,绝大部分人第一个
接触的操作系统就是Windows,因此对于这绝大部分人来说,如果要学习Linux开发,学会使用这个系统都是
必不可少的一个环节。
现在的Linux初学者是幸福的,随着Linux桌面环境越来越易用,入门一个新的系统是非常容易的事情。虽然命
令行对于提高工作效率更加有效,但我们完全可以把熟悉命令的过程放到日常使用中进行。无论学习什么知识,
在实践中学习都是高效而且有趣的。在这个阶段,我们也未必一定需要书籍。现在很多Linux发行版的Wiki写
得都非常详细,在使用某一种发行版时找到相应的Wiki阅读查询就可以了。而且,桌面环境变化太快,关于桌
面的介绍类书籍几乎都没有必要看,这类书籍大多刚一出版就过时了。
那入门类书籍里哪些比较有价值呢?我比较推荐涉及的技术相对比较稳定的书。比如,Linux基本的体系结构
和命令一般都是经久不变的,甚至从上古时期的Unix开始就没太多变化,这类书籍讲解的知识也是以后大幅
提高我们的生产力的基础。比如《 鸟哥的Linux私房菜》,比如《 Unix Power Tools
(中译名是“UNIX超级工具”),或者是为Linux+认证考试准备的《 Linux+ Study Guide》。当然,这一类书籍
其实都不必精读,快速浏览之后作为工具书备查就可以了。

编程类

类Unix系统的编程书籍里,最经典的莫过于简称为APUE的《 Advanced Programming in the UNIX Environment
(中译名是“Unix环境高级编程”),这本书被广大Unix程序员(包括Linux)捧为“圣经”。借用葛大爷的
广告词:“这就像进馆子一样,一条街上,哪家人多我进哪家”。APUE对类Unix系统的编程接口讲解的
非常全面详细,对于这本书,我们不仅要精读,还应该放在案头常备。
但是,APUE对于Linux编程初学者似乎稍深了一点,而且很多细节在Linux中并不会用到。讲述Linux编程的书籍里,《 Advanced Linux Programming》应该更加适合初学者。不要被书名中的“Advanced”吓到,书里的内容还是很
容易理解的。看完这本书再看APUE应该效果会更好。
如果要开发GUI程序,上面两本书就无能为力了。在Linux世界里,最常用的GUI Toolkit是GTK+和QT。
GTK+的书籍并不多,在线文档只适合查阅,并不是一个完整的学习体系。《 Foundations of GTK+ Development
是其中很不错的一本书,喜欢GTK+的开发者可以拿来作为入门书籍。
相对来说,QT的书籍就很丰富了,这和QT具有良好的跨平台能力有很大关系,QT的书籍并不只是写给Linux程序员
看的,在Windows和MAC OSX下同样可以使用QT开发程序。比较值得一看的QT类书籍有
,这三本都比较适合QT初学者阅读。另外,《 Advanced Qt Programming》会介绍到QT一些比较高级的用法
,适合有一定QT基础的读者阅读。

内核类

对于Linux内核或者设备驱动的开发者,最全面最直接的学习资料一定是Linux内核代码及其文档。Linux内核的
发布周期很短,相关书籍的出版完全跟不上脚步。但随着内核代码的日益庞大,学习曲线越来越陡峭,入门者
又非常需要书籍来作为指导,这确实是非常矛盾的事情。所幸,很多Linux内核技术作家也是很勤奋的,经常
会更新自己的作品。就像Robert Love,以2.6内核为蓝本的《 Linux Kernel Development》已经更新到第三版了。
LKD是非常适合内核初学者阅读的一本好书,对它的评价可以引用陈莉君老师的译者序:
相对于 Daniel P. Bovet 和 Marco Cesati 的内核巨著《 Understand the Linux Kernel 》,它少了五分细节
,相对于实践经典《 Linux Device Drivers 》,它多了五分说理。可以说,本书填补了 Linux 内核理论
和实践之间的鸿沟,“一桥飞架南北,天堑变通途”。
谢谢陈老师,她的译者序帮我引出了另外要谈到的两本经典书籍,对,就是《 Understanding the Linux Kernel
和《 Linux Device Drivers》。对于这两本书,如果要挑它们的缺点,我只能说,内容有点老,很多知识点都需要
更新了,除此之外,我要说的是,是它们把我带上了内核驱动开发这条路上来,当然,还有LKD。
最近,我又发现一本分析Linux内核的优秀书籍,就是《 Professional Linux Kernel Architecture》。这本书我
目前正在读,写得非常好,而且因为此书相对较新(只是相对,2.6.24内核在现在看来也很老了),没有看过
ULK的同学可以直接看这本书。

工具类

工欲善其事,必先利其器。进行Linux开发,相关工具还是需要熟练使用的。比如,GNU Tool Chain、自动
构建工具、编辑器、版本控制工具等等。
这里有一本包罗万象的书,叫做《 Handbook of Open Source Tools》,书中介绍了各种各样的开源工具,可称
之为开源技术的总决式。这本书试图面面俱到,因此并不深入,粗读即可。
GNU Tool Chain参考Redhat的《 The GNUPro Toolkit》已经足够了,如果单独把makefile拎出来,还可以参考
自动构建工具可以参考《 Autotools》。如果您准备使用cmake,推荐cjacker的《 Cmake实践》。
Mastering CMake》据说是cmake的权威书籍,但一直无缘得见啊。
说到编辑器,在Linux里最著名的莫过于Vim和Emacs,关于这两者的背景,可以去看看
为何Emacs和Vim被称为两大神器》。我几乎没用过Emacs,曾经在当当做活动时花9块钱买了一本
学习GNU Emacs》,有这本书作为Emacs的入门我想应该够了。Vim是我经常使用的编辑器之一
(另一个是Kate,最初喜欢上Kate的原因之一就是它提供了Vim编辑模式),相关的书籍有两本值得
一读:《 A Byte of Vim》和《 Hacking Vim 7.2》,但是对于初学者,首先跟着Vim自带的vimtutor练习
效果会更好。
Linux下的版本控制工具很多,有传统的Subversion,也有现在非常流行分布式工具如Git等。Subversion
可以参考这本《 Version Control with Subversion》,Git可以参考《 Version Control with Git
或者《 Git Internals》或者《 Pro Git》。

其它

除了以上几个类别,还有一些书籍值得推介。
比如《 The Art of Unix Programming》,主要介绍了Unix系统领域中的设计开发哲学、思想文化体系以及社群
文化等,覆盖面非常广。书中的一些内容和 《Revolution OS》有相似之处,大家可以自己印证一下。对于这
本书,我们也完全可以把它当做小说或者历史书来看,可以躺在床上看,也可以瘫在沙发上看,或者像 怪怪
样坐在马桶上看,总之,不必一定要端坐在书桌前。
Computer Systems: A Programmer's Perspective》很多人都推荐过,这是一本非常经典的计算机体系方面
的教材。CSAPP的内容基础全面,讲解简明扼要,易于理解,仔细读完之后对理清计算机体系结构甚至是
Linux内核都非常有帮助的。虽然中文名被译为《深入理解计算机系统》(这个译名很不贴切),但相比
之下,为什么会让人感觉国内的同类教材更加“深奥”呢?也许,这就是作者功力的差距吧。

转载于:https://www.cnblogs.com/abacuspix/archive/2012/10/25/2738735.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值