这本书有一个长长的中文名字:《只是为了好玩:Linux之父林纳斯自传》,所以博客标题我就用英文书名了。

  读罢此书,不禁想起一位长者的名言:“一个人的成功当然要靠自我奋斗,但也要考虑历史的进程”。可以说Linux到的成功不完全是Linus有意为之,但在Linus身上(如同我之前读过的理查德·斯托曼的传记《若为自由故》一样),我能看到那个时代所有伟大黑客的特质。那些所有计算机天才共有的,又或者Linus独有的,感谢上大学来读过的书,让我都有所洞见。

  1.良好的熏陶

  从冯·诺依曼到林纳斯,无不在少年时代就接受了良好的技术熏陶,冯·诺依曼自不必说,林纳斯也是从十岁起就帮着自己的外祖父(赫尔辛基大学的一个统计学教授)输入计算机程序,大多数人到了大学才接触计算机编程,相比之下,林纳斯这类人已经领先我们十年身位了。想想我们10岁的时候,又在干什么呢。十年意味着他们有足够的试错机会,而留给一个20岁程序员的试错机会就不多了。自古英雄出少年,其实还是很有道理的。

  单就拿冯·诺依曼和林纳斯来说,他们虽然都是计算机领域的大师,但童年也后很多不同之处。冯·诺依曼出身家境优渥的犹太家庭,自幼接受良好的家庭教育,而那个时代的匈牙利教育也堪称现代教育的典范,培育了无数诺奖获得者,而林纳斯除了外祖父是统计学教授外,和普通家庭没什么两样,但正是这个良好的启蒙以及自由的成长环境,让他有足够的空间肆意生长。而不是把时间浪费在应试教育上。

  2.黑客精神

  不想多解释什么是真正的黑客,一个黑客当然要像斯托曼那样,用他亘古绝今的编程匠艺为计算机世界带来GCCEmacs这样伟大的作品,又或者是GPL这样非凡的创造,以一己之力推动时代的巨轮。林纳斯身上当然也有这些品质,但他更像一个现实的人,他说自己很懒惰,所以才有了Linux开创性的协作开发方式。他对钱不感兴趣。相比于其他两位大佬,盖茨很伟大,但他对基尔代尔做的事情可真不地道;乔布斯更像是一个伟大的推销员,一直都是。

  黑客的懒惰是指他们不愿意花时间在无聊重复的事情上,又或者用技术改变自己不满意的现状。在林纳斯身上,这种懒惰尤为典型,他不愿修补Linux的每一个补丁,所以开源了Linux,让全世界优秀的程序员一起来开发,他受够了集中式版本管理系统的弊端,所以开发了Git这个分布式代码版本管理系统。Linux或Git,二得其一,即可名扬天下,林纳斯一个人就做了。

  3.一个我的观点

  没有人说,书里也没有提及。但我不记得哪本书里面看过。芬兰(以及很多东欧国家)的人均阅读量高居世界前列,很大程度上跟东欧的气候有关,尤其是冬天,天气寒冷,白天很短,几乎没有什么户外运动的消遣,再适合林纳斯这样的黑客鼓捣电脑不过了。所以我看,东欧以及俄罗斯盛产黑客和伟大的数学家,和这一地区的气候也不无关系。

  4.这是编程的好时代吗

  值得一提的是,美国,尤其是硅谷(车库文化和斯坦福大学)一直是计算机世界前进的重要动力,但是,在遥远的东欧,远离技术中心的芬兰(或许这么说也不准确,诺基亚曾是这个国家的骄傲,芬兰是电子通信的先驱),林纳斯却凭一己之力缔造了Linux帝国的开端。堪称奇迹,看看我们这个时代,信息爆炸,获取方便,传闻牛顿提出三大定律的时候,已经掌握了那个时代所有的知识,而近一百年来,知识以指数形式爆炸增长,虽然信息变多了,但有用信息的比例一定增加了吗,我不知道。

  林纳斯提到了那本把他“推向生命巅峰的书”:《操作系统:设计与实现》,我上大学以来,目前已经借了200多本书,很多没仔细看,但仔细看过也不算少了,可能超过一些人大学四年的借书量(而我还有一年半时间来继续提高这数字),但我必须承认,我还没遇到那本会改变我生命轨迹的书,至少现在没觉得。某种程度上,我们被信息淹没了。对于阅读量高于平均水平的我来说,感受尤为深刻。

  这是,编程的好时代吗?那个时代肯·汤普森弄个说明手册也要高兴好一阵,盖茨甚至到垃圾桶去找资料文档,信息甚至匮乏,但他们的丰功伟绩却令后人难以望其项背了。不过话又说回来,林纳斯最后还是去了美国,去了硅谷,确实,他怎么能把一辈子浪费在赫尔辛基呢。就像现在的中国,多少人奔向北上广深杭这样的大城市,谁会喜欢人多嘴杂空气差呢,但只有在这样的一线城市,才能看到最牛的技术、遇见最强的人。我记得大一选修的时候,一个老师说过,“人这一辈子,一定要去北上广这样大城市生活过才算完整”。不一定是为了情怀,而是拥有格局。格局真的很重要,记得从农村初中录取到县城最好的中学之后,我看到了前所未有的差距,如果不努力爬更高的山,渡更宽的河,那么你的眼界就已经注定了这一生只能庸庸碌碌。

  其实,零零散散还有很多感想,奈何文笔拙劣。以书中一段话结束吧:

  他是Linux和Git的缔造者,它是一个传统的黑客,与沃兹一样,少年成名,崇尚自由,一生只为寻找欢笑,他,是一名真正的程序员。

  

《Just for Fun》读后感的更多相关文章

  1. 《DevOps软件架构师行动指南》读后感

    从软件架构师视角讲解了引入DevOps实践所需要拥有的技术能力,涵盖运维.部署流水线.监控.安全与审计以及质量关注,这是本书一开始内容简介的开头,本书的作者是伦恩·拜斯(Len Bass).英戈·韦伯 ...

  2. nodejs开发指南读后感

    nodejs开发指南读后感 阅读目录 使用nodejs创建http服务器; supervisor的使用及nodejs常见的调式代码命令了解; 了解Node核心模块; ejs模板引擎 Express 理 ...

  3. DevOps:软件架构师行动指南(文摘)

    第一部分 背景 第1章 DevOps是什么 第二部分 部署流水线 第三部分 横切关注点 第四部分 案例研究 第五部分 走向未来

  4. 2020年DevOps工程师入门指南

    DevOps兴起于2010年代,到现在DevOps已经在行业中拥有了一席之地,并在继续发展壮大. 有兴趣成为一名DevOps工程师吗?如果想要成为一名DevOps工程师,需要做到以下五点: 要有开发者 ...

  5. 5月29日 Java性能调优指南 读后感

    并行垃圾收集器 串行垃圾收集器 并发标记清除(CMS)垃圾收集器 Garbage First(G1)垃圾收集器 没有深入的学习G1的原理,只是看了大概的思想; SA工具:待学习

  6. 敏捷开发、DevOps相关书籍——书单

    自己瞎整理的一些书单,都是豆瓣评分比较高的书,可以作为选择的一个参考. 书名 豆瓣链接 持续交付:发布可靠软件的系统方法 https://book.douban.com/subject/6862062 ...

  7. 有奖试读—Windows PowerShell实战指南(第2版)

    为什么要学PowerShell? Windows用户都已习惯于使用图形化界面去完成工作,因为GUI总能轻易地实现很多功能,并且不需要记住很多命令.使得短时间学会一种工具成为可能. 但是不幸的是,GUI ...

  8. [转载]你所不了解的DevOps

    DevOps开发运维训练营 一旦建立了创新的文化,即使那些并非科学家或者工程师的人——诗人.演员.记者——也能以团体的形式,接受科学文化的意义.他们信奉创新文化的概念.他们以促进这种文化的方式投票.他 ...

  9. 给 DevOps 初学者的入门指南

    当我们谈到 DevOps 时,可能讨论的是:流程和管理,运维和自动化,架构和服务,以及文化和组织等等概念.那么,到底什么是"DevOps"呢? 什么是DevOps 随着软件发布迭代 ...

  10. CI Weekly #3 | 关于微服务、Docker 实践与 DevOps 指南

    CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...

随机推荐

  1. 全球首个实战类微信小程序开发教程

    小木学堂专注于企业实战开发和经验传授,所以微信小程序诞生这么大的事怎么能不带着大家一起学习学习呢,所以小木学堂讲师连夜赶工学习并实战开发了微信小应用的第一个程序,并录制了课程现免费分享给大家.这个速度 ...

  2. Golang Web开发时前端出现谜之空白换行的坑

    在使用Golang做Web开发时,有时候渲染出来的模板在前台显示时会出现一些奇怪的空白换行,具体特征就是查看css样式表并没有相关定义的空白部分. 分析: 查看出现问题页面的网页源代码,复制空白换行部 ...

  3. [Deprecated!] Android开发案例 - 微博正文

    Deprecated! 更好的实现方式: 使用 android.support.design.widget.CoordinatorLayout. 本文详细介绍如何实现如下图中的微博正文页面效果, 其中 ...

  4. JQuery plugin ---- simplePagination.js API

    CSS Themes "light-theme" "dark-theme" "compact-theme" How To Use Step ...

  5. WPF CheckBox样式 ScrollViewer样式 WrapPanel、StackPanel、Grid布局

    本节讲述布局,顺带加点样式给大家看看~单纯学布局,肯定是枯燥的~哈哈 那如上界面,该如何设计呢? 1.一些布局元素经常用到.Grid StackPanel Canvas WrapPanel等.如上这种 ...

  6. android 获取网络类型名称2G 3G 4G wifi

    首先工程Manifest文件要引用: <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" ...

  7. android 关闭多个或指定activity

    打开了.activityA,B,C,D,...然后到E一起关闭前面所有activity(转自:http://blog.csdn.net/lengguoxing/article/details/4214 ...

  8. 在使用EF时调用DBFUNCTION扩展方法时,发生ENTITYCOMMANDEXECUTIONEXCEPTION 异常的解决办法

    System.Data.Entity.Core.EntityCommandExecutionException : An error occurred while executing the comm ...

  9. Linux 信号(二)—— signal 函数

    弗洛伊德认为:要解决这些苦恼,当事人就要通过回忆并理解自己早期的童年经历,来获得对潜意识冲突的顿悟.弗洛伊德的疗法被称为“精神分析” (psychoanalysis),在 20 世纪的很长一段时间被心 ...

  10. Java程序设计求出岁数

    题目:我年龄的立方是个4位数.我年龄的4次方是个6位数.这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次,求出我今年几岁. 直接拷贝运行就可以了. public class Age { ...