博客
关于我
顶级 Linux 开发者推荐的编程书籍 | Linux 中国
阅读量:312 次
发布时间:2019-03-03

本文共 2018 字,大约阅读时间需要 6 分钟。

熠熠生辉的 C 语言

Linux 是上世纪 90年代问世的,与之相伴的还有许多基础功能的开源软件。那个时代的开发者使用的工具和语言,反映了当时的技术印记——C语言。

尽管如今 C语言已经不再流行,但对于许多资深开发者来说,它是他们在实际开发中使用的第一个语言。这一点在他们推荐的书单中也得到了体现。Torvalds曾表示:“你不应该再选用我那个时代使用的语言或者开发方式。”他从 BASIC 转向机器码,然后是汇编语言和 C语言,认为这些语言已经不再适用于现代开发。

尽管如此,他也承认 C语言的价值。他认为,Linux是用 GNU C语言写的,C语言的简单语法和适应性是其最大的优点。但他也提醒说,从 C语言入门会面临很大的挑战。与之相比,现代开发者可能更倾向于选择其他语言,但这并不意味着 C语言已经没有价值。

在这方面,K&R 的《C 编程语言,第二版》是 Torvalds 推荐的书籍之一。他认为这本书简洁而深刻,对于有编程背景的开发者来说,是了解 C语言的绝佳选择。许多顶级 Linux 开发者也对这本书表示认可,包括 Wim Coekaerts、Alan Cox 和 Pete Garner。

此外,Jeremy Allison 推荐了《21st Century C: C Tips from the New School》,并强调学习 C语言的重要性。他还建议阅读《Expert C Programming: Deep C Secrets》和《Programming with POSIX Threads》。

如果不选 C 语言,那选什么?

Linux 开发者推荐的书籍自然是他们认为适合当今开发项目的语言工具。这也反映了开发者自身的个人偏好。例如,Jeremy Allison认为年轻的开发者应该学习 Go语言和 Rust语言。

不过,Torvalds 提出了一种不同的观点。他认为,语言本身的选择并不如基础架构重要。他建议开发者从现有的基础架构入手,例如 Java 或 Kotlin,或者选择游戏开发引擎,因为它们通常有自己的脚本语言。

在这方面,Pete Garner 运用了自己的经验。他在读完了 K&R 之后,还阅读了 W. Richard Steven 的《Unix Network Programming》和《TCP/IP Illustrated, Volume 1: The Protocols》。即使经过 30 年,这本书仍然被认为是必读之作。

Coekaerts 也是一位忠实的 Bach 的粉丝。他认为《The Design of the Unix Operation System》是理解 UNIX 系统设计的重要书籍之一。James Bottomley 也曾用 Bach 的知识研究 Linux 内核。

软件设计知识永不过时

Stevens 强调,所有开发者都应该在学习语法之前,先研究如何设计。《The Design of Everyday Things》是他的最爱。Coekaerts 喜欢 Kernighan 和 Rob Pike 合著的《The Practice of Programming》。这本书即使在 Coekaerts 进行时也未出版,他也表示会推荐给每一个人。

无论何时,当你问一个长期从事开发工作的开发者他最喜欢的计算机书籍时,你迟早会听到一个名字和一本书:Donald Knuth 的《The Art of Computer Programming, Volumes 1-4A》。尽管 Hohndel 认为这本书的价值在今时今日可能不如以前,但它仍然是开发者必读之作。

读代码。大量的读。

编程书籍能教会你很多,但别忘了开源社区提供的学习机会。《Code Reading: The Open Source Perspective》有许多代码实例,展示了如何解决编程问题(以及如何让你陷入麻烦)。Stevens 认为,Unix 源代码是最好的“书”。

Cox 更加强调实践。他从《Mastering machine code on your ZX81》和 Honeywell L66 B 编译器手册中学习了如何编写机器码。他认为,最好的学习方法是和一群人一起解决共同关心的问题,并从中学到快乐。

现在你准备好尝试一下硬核 Linux 开发了吗?

Greg Kroah-Hartman 推荐了 Steve Oualline 的《Practical C Programming》和 Samuel Harbison 与 Guy Steels 合著的《C: A Reference Manual》。接下来请阅读《HOWTO do Linux kernel development》,你已经准备好启程了。

最后,别忘了大量编码,祝你在跟随顶级 Linux 开发者脚步的道路上好运相随。

转载地址:http://nial.baihongyu.com/

你可能感兴趣的文章
Objective-C实现特征脸算法(附完整源码)
查看>>
Objective-C实现状态模式(附完整源码)
查看>>
Objective-C实现狄克斯特拉算法(附完整源码)
查看>>
Objective-C实现狄克斯特拉算法(附完整源码)
查看>>
Objective-C实现猜数字游戏(附完整源码)
查看>>
Objective-C实现猜数字算法(附完整源码)
查看>>
Objective-C实现猴子爬山算法(附完整源码)
查看>>
Objective-C实现环形缓冲区(附完整源码)
查看>>
Objective-C实现生产者和消费者问题(附完整源码)
查看>>
Objective-C实现生产者消费者问题(附完整源码)
查看>>
Objective-C实现生成 Mandelbrot 曼德勃罗集图像算法 (附完整源码)
查看>>
Objective-C实现生成崩溃dump文件 (附完整源码)
查看>>
Objective-C实现生成数组的所有不同排列算法(附完整源码)
查看>>
Objective-C实现生成正态分布数据(附完整源码)
查看>>
Objective-C实现生成随机高斯分布(附完整源码)
查看>>
Objective-C实现用 PIL 改变对比度算法(附完整源码)
查看>>
Objective-C实现用二维数组实现矩阵的转置(附完整源码)
查看>>
Objective-C实现用半正弦公式计算两个坐标之间的距离算法 (附完整源码)
查看>>
Objective-C实现用卡方解密凯撒算法(附完整源码)
查看>>
Objective-C实现用蒙特卡洛方法计算圆周率PI算法(附完整源码)
查看>>