近期一直在读Linux内核源代码,对程序语言这个东西,有了一些更深的感触和认识。
大家都知道,Linux内核源代码是用C语言写的,C是一个面向过程的语言,但在整个Linux Kernel里面,你所能感触的,几乎全是面向对象的感觉。可以说近乎所有的代码,无论巨细,都是以一种面向对象的方式写出来的。但C语言毕竟不是一种面向对象的语言,所以硬是以一种面向对象的方式去写程序,带来的一个问题就是对象之间的关系特别杂乱。如果在读代码之前没有对相关部分的概念层次有所把握,深入到代码后就感觉难以理清各个对象之间的关系,即使少部分代码,也会让人感觉力不从心。实际上,Linux内核源代码的编写有一些固定的套路,当你熟悉了这套路之后,这种困扰就会慢慢的减少,阅读的速度和质量也会随之提升。
我对C++语言不是很熟练,但读了一些Linux源代码后,对C++,或者说对面向对象编程的认识,就感觉彻底深入了一个层次。在读Linux源代码的时候,你会深深的感悟到面向对象这个东西是多么的有必要,名称空间等是多么的美好…这真的是一种程序设计思想的东西。当然C++也有一些不足之处,用它来写一个桌面OS的内核还是不行的。