为什么要学Linux呢?工作中又不会写Linux程序,再说Linux内核博大精深,代码海量,关系错综复杂,学习Linux内核肯定要耗费大量的时间和精力,那为什么还要学呢?在说这个问题之前,先谈谈我对学习的看法。
在学习一个东西之前,出于保险起见,我们总是会询问别人的意见,而在这些意见中,总是会有人说学这个干什么,工作中又用不到。如果谁给了你这样的建议,那么你一定要小心,因为基本上可以断定他是一个不爱学习的人。有很多东西,不是因为你“感觉”有用才学它,而是学了之后才能知道它有用。
我上大学后学习了java语言,费了不少劲。基本的语法比较熟悉了之后,还是感觉到有些东西总是糊里糊涂,不够清晰,比如说不知道反射是怎样工作的。所以找了《深入Java虚拟机》来看,当我看了这本书之后,感觉到原来不清晰的地方都显得自然而然,知道了class文件结构是怎样的,类是怎样被加载的,指令是怎么样被执行的,方法是怎样被动态绑定的。这些知识对我有很大的帮助,假如我不学习Java虚拟机,只是单纯的写Java程序,即使写上很久,也不见得对Java的理解有多透彻。
说了这么多,只是想说学习是有用的,大大的有用。一个经验用5年并不等于有5年的工作经验,一个不学习的程序员是不会有什么发展机会的。所以,对于一个java程序员,还分不清对象和对象的引用,那么没错,你该学习了,该静下心来好好巩固一下基础了。
最后,来到正题。为什么学习Linux内核?
首先,对Linux有很深的兴趣和好奇心,我喜欢专研一下。从实用性出发,我可能一辈子都没有机会编写Linux内核,也可能一辈子都不会从事Linux驱动开发相关的工作,但是我知道它对我是有用的。能进一步加深对操作系统中概念和实现的理解,对底层的深入理解,能让我打下扎实的基础。一些新技术其实都是架构在基础的东西之上的。基础牢固,以后再学习什么新技术都会水到渠成。有人可能会反驳,说学习底层的东西没用,优秀的程序员应该专注于设计,项目管理或架构等上层的知识,我的观点是,设计,项目管理或架构等上层的知识和底层的知识一点都不冲突,不懂底层的人,基础不扎实,在上层也不会走的顺畅,设想一下,如果没有深厚的基础知识,你怎么能知道自己架构出来的东西能不能实现呢?