0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

顶级Linux开发者必不可少的编程阅读书籍

西西 作者:工程师飞燕 2018-11-25 10:47 次阅读

Linux,毫无争议的属于 21 世纪的操作系统。虽然 Linus Torvalds 在建立开源社区这件事上做了很多工作和社区决策,不过那些网络专家和开发者愿意接受 Linux 的原因还是因为它卓越的代码质量和高可用性。Torvalds 是个编程天才,同时必须承认他还是得到了很多其他同样极具才华的开发者的无私帮助。

就此我咨询了 Torvalds 和其他一些顶级 Linux 开发者,有哪些书籍帮助他们走上了成为顶级开发者的道路,下面请听我一一道来。

熠熠生辉的 C 语言

Linux 是在大约上世纪 90 年代开发出来的,与它一起问世的还有其他一些完成基础功能的开源软件。与此相应,那时的开发者使用的工具和语言反映了那个时代的印记,也就是说 C 语言。可能C 语言不再流行了,可对于很多已经建功立业的开发者来说,C 语言是他们的第一个在实际开发中使用的语言,这一点也在他们推选的对他们有着深远影响的书单中反映出来。

Torvalds 说,“你不应该再选用我那个时代使用的语言或者开发方式”,他的开发道路始于 BASIC,然后转向机器码(“甚至都不是汇编语言,而是真真正正的‘二进制’机器码”,他解释道),再然后转向汇编语言和 C 语言。

“任何人都不应该再从这些语言开始进入开发这条路了”,他补充道。“这些语言中的一些今天已经没有什么意义(如 BASIC 和机器语言)。尽管 C 还是一个主流语言,我也不推荐你从它开始。”

并不是他不喜欢 C。不管怎样,Linux 是用GNU C 语言写就的。“我始终认为 C 是一个伟大的语言,它有着非常简单的语法,对于很多方向的开发都很合适,但是我怀疑你会遇到重重挫折,从你的第一个‘Hello World’程序开始到你真正能开发出能用的东西当中有很大一步要走”。他认为,用现在的标准,如果作为入门语言的话,从 C 语言开始的代价太大。

在他那个时代,Torvalds 的唯一选择的书就只能是 Brian W. Kernighan 和 Dennis M. Ritchie 合著的《C 编程语言,第二版C Programming Language, 2nd Edition》,它在编程圈内也被尊称为 K&R。“这本书简单精炼,但是你要先有编程的背景才能欣赏它”,Torvalds 说到。

Torvalds 并不是唯一一个推荐 K&R 的开源开发者。以下几位也同样引用了这本他们认为值得推荐的书籍,他们有:Linux 和 Oracle 虚拟化开发副总裁 Wim Coekaerts;Linux 开发者 Alan Cox;Google 云 CTO Brian Stevens;Canonical 威廉希尔官方网站 运营部副总裁 Pete Graner。

如果你今日还想同 C 语言较量一番的话,Samba 的共同创始人 Jeremy Allison 推荐《C 程序设计新思维21st Century C: C Tips from the New School》。他还建议,同时也去阅读一本比较旧但是写的更详细的《C 专家编程Expert C Programming: Deep C Secrets》和有着 20 年历史的《POSIX 多线程编程Programming with POSIX Threads》。

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

Linux 开发者推荐的书籍自然都是他们认为适合今时今日的开发项目的语言工具。这也折射了开发者自身的个人偏好。例如,Allison 认为年轻的开发者应该在《Go 编程语言The Go Programming Language》和《Rust 编程Rust with Programming Rust》的帮助下去学习 Go 语言和 Rust 语言。

但是超越编程语言来考虑问题也不无道理(尽管这些书传授了你编程技巧)。今日要做些有意义的开发工作的话,要从那些已经完成了 99% 显而易见工作的框架开始,然后你就能围绕着它开始写脚本了, Torvalds 推荐了这种做法。

“坦率来说,语言本身远远没有围绕着它的基础架构重要”,他继续道,“可能你会从 Java 或者 Kotlin 开始,但那是因为你想为自己的手机开发一个应用,因此安卓 SDK 成为了最佳的选择,又或者,你对游戏开发感兴趣,你选择了一个游戏开发引擎来开始,而通常它们有着自己的脚本语言”。

这里提及的基础架构包括那些和操作系统本身相关的编程书籍。 Garner 在读完了大名鼎鼎的 K&R 后又拜读了 W. Richard Steven 的《Unix 网络编程Unix Network Programming》。特别是,Steven 的《TCP/IP 详解,卷1:协议TCP/IP Illustrated, Volume 1: The Protocols》在出版了 30 年之后仍然被认为是必读之书。因为 Linux 开发很大程度上和和网络基础架构有关,Garner 也推荐了很多 O'Reilly 在Sendmail、Bash、DNS以及IMAP/POP等方面的书。

Coekaerts 也是 Maurice Bach 的《UNIX 操作系统设计The Design of the Unix Operation System》的书迷之一。James Bottomley 也是这本书的推崇者,作为一个 Linux 内核开发者,当 Linux 刚刚问世时 James 就用 Bach 的这本书所传授的知识将它研究了个底朝天。

软件设计知识永不过时

尽管这样说有点太局限在威廉希尔官方网站 领域。Stevens 还是说到,“所有的开发者都应该在开始钻研语法前先研究如何设计,《设计心理学The Design of Everyday Things》是我的最爱”。

Coekaerts 喜欢 Kernighan 和 Rob Pike 合著的《程序设计实践The Practic of Programming》。这本关于设计实践的书当 Coekaerts 还在学校念书的时候还未出版,他说道,“但是我把它推荐给每一个人”。

不管何时,当你问一个长期从事于开发工作的开发者他最喜欢的计算机书籍时,你迟早会听到一个名字和一本书:Donald Knuth 和他所著的《计算机程序设计艺术(1-4A)The Art of Computer Programming, Volumes 1-4A》。VMware 首席开源官 Dirk Hohndel,认为这本书尽管有永恒的价值,但他也承认,“今时今日并非极其有用”。(LCTT 译注:不代表译者观点)

读代码。大量的读。

编程书籍能教会你很多,也请别错过另外一个在开源社区特有的学习机会:《代码阅读方法与实践Code Reading: The Open Source Perspective》。那里有不可计数的代码例子阐述如何解决编程问题(以及如何让你陷入麻烦……)。Stevens 说,谈到磨炼编程技巧,在他的书单里排名第一的“书”是 Unix 的源代码。

“也请不要忽略从他人身上学习的各种机会。” Cox 道,“我是在一个计算机俱乐部里和其他人一起学的 BASIC,在我看来,这仍然是一个学习的最好办法”,他从《精通 ZX81 机器码Mastering machine code on your ZX81》这本书和 Honeywell L66 B 编译器手册里学习到了如何编写机器码,但是学习威廉希尔官方网站 这点来说,单纯阅读和与其他开发者在工作中共同学习仍然有着很大的不同。

Cox 说,“我始终认为最好的学习方法是和一群人一起试图去解决你们共同关心的一些问题并从中找到快乐,这和你是 5 岁还是 55 岁无关”。

最让我吃惊的是这些顶级 Linux 开发者都是在非常底层级别开始他们的开发之旅的,甚至不是从汇编语言或 C 语言,而是从机器码开始开发。毫无疑问,这对帮助开发者理解计算机在非常微观的底层级别是怎么工作的起了非常大的作用。

那么现在你准备好尝试一下硬核 Linux 开发了吗?Greg Kroah-Hartman,这位 Linux 内核稳定分支的维护者,推荐了 Steve Oualline 的《实用 C 语言编程Practical C Programming》和 Samuel harbison 与 Guy Steels 合著的《C 语言参考手册C: A Reference Manual》。接下来请阅读如何进行 Linux 内核开发HOWTO do Linux kernel development,到这时,就像 Kroah-Hartman 所说,你已经准备好启程了。

于此同时,还请你刻苦学习并大量编码,最后祝你在跟随顶级 Linux 开发者脚步的道路上好运相随。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11314

    浏览量

    209773
  • C语言
    +关注

    关注

    180

    文章

    7605

    浏览量

    137051
收藏 人收藏

    评论

    相关推荐

    【《软件开发珠玑》阅读体验】+ 心得

    ,《软件开发珠玑》是一本值得每个软件开发者阅读的书籍。它教会了我们如何了解需求、设计、项目管理,如何与团队合作以及如何持续学习和进步。在未来的软件开发生涯中,我将继续秉承书中的理念,努
    发表于 06-23 17:56

    关于学习Linux 编程的基本经典书籍推荐

    个一举两得的事情。哦,忘了告诉大家,上次 CNN 采访 Google 总裁佩林的时候,水煮鱼看到佩林的书架上就有这本书的英文版,可见它真的是一本全球开发者必备的一本书。《深入理解 Linux 内核
    发表于 10-31 11:00

    做振动监测的,必不可少的基础知识!

    做振动监测的,必不可少的基础知识!
    发表于 03-23 09:53

    stm32用户使用手册,学习32必不可少的资料

    stm32用户使用手册,学习32必不可少的资料
    发表于 04-14 15:10

    杰出内核开发者华生平回顾

    追思心中璀璨的明星:杰出内核开发者
    发表于 07-22 15:58

    汽车车型开发必不可少的CAE解析

    汽车车型开发必不可少的CAE分析
    发表于 03-01 06:37

    学习嵌入式linux编程开发应该要必备什么条件呢

    嵌入式linux是嵌入式开发必不可少的一份子,在科技高速发展的今天,嵌入式已然已经成为了最热门的威廉希尔官方网站 之一了。对于想要学习好嵌入式的学员来说,现在学习好linux是很有必要的,因为这个是
    发表于 12-22 07:04

    大数据分析,半导体威廉希尔官方网站 必不可少?

    进行大数据分析时,半导体威廉希尔官方网站 是必不可少的。虽然存储器本身的威廉希尔官方网站 开发也很重要,但对于大数据分析,使存储器物尽其用的控制器和中间件的威廉希尔官方网站 似乎更加重要。
    发表于 01-21 08:47 1739次阅读

    物联网发展中必不可少的RFID威廉希尔官方网站

    中国智造向5G时代智能发展,RFID是必不可少的应用威廉希尔官方网站
    的头像 发表于 08-20 10:03 3673次阅读

    要成为鸿蒙开发者,应该学习哪些编程语言

    据了解,鸿蒙系统是基于Linux开发的,源码是C语言。那么,作为一名开发者,如何帮助鸿蒙系统构建生态呢?在以往安卓、苹果系统构建过程,有哪些可以值得借鉴的地方呢?要成为鸿蒙开发者,应该
    的头像 发表于 09-24 12:06 1.3w次阅读

    新手必看!掌握PLC威廉希尔官方网站 阅读手册是必不可少的技巧

    掌握PLC威廉希尔官方网站 阅读手册是必不可少的,特别当新产品出来后,只有手册是一手资料。除了新产品学习需要查看手册,工作中接触到了任何设备,手册都是最专业、最全面的资料。很多人不喜欢看手册,觉得手册难懂,今天给
    的头像 发表于 10-23 09:56 2742次阅读
    新手必看!掌握PLC威廉希尔官方网站
<b class='flag-5'>阅读</b>手册是<b class='flag-5'>必不可少</b>的技巧

    开发工作中必不可少的5个工具

    前不久Twitter上有一个帖子,只选五种你生活中不可或缺的工具,下面就是在我的开发工作中必不可少的5个工具。
    的头像 发表于 11-07 10:01 2402次阅读

    汽车车型开发必不可少的CAE分析资料下载

    电子发烧友网为你提供汽车车型开发必不可少的CAE分析资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
    发表于 04-07 08:50 12次下载
    汽车车型<b class='flag-5'>开发</b><b class='flag-5'>必不可少</b>的CAE分析资料下载

    涂鸦开发者大会即将开幕,赋能开发者打造IoT发展新引擎

    6月29日,首场TUYA开发者大会将在深圳拉开序幕!‍‍‍‍‍TUYA开发者大会是涂鸦继全球智能化商业峰会、全球硬科技开发者大会后,面向全球开发者举办的又一场备受瞩目的IoT领域
    的头像 发表于 06-12 10:15 711次阅读
    涂鸦<b class='flag-5'>开发者</b>大会即将开幕,赋能<b class='flag-5'>开发者</b>打造IoT发展新引擎

    华为云 classroom 赋能|tookIT 助力开发者上云

    对于资深程序员而言,IDE 是必不可少的,它好比是剑客手中的宝剑,IDE 帮助程序员更快更丝滑的去编程,同时插件就是这把剑上的各种 Buff,为宝剑赋能,提供更好的升级打怪
    的头像 发表于 08-31 15:26 513次阅读
    华为云 classroom 赋能|tookIT 助力<b class='flag-5'>开发者</b>上云