作者:手机用户2502911627_202 | 来源:互联网 | 2017-07-31 16:06
很多人开始学编程没多久就打算阅读linux的源代码,网上有不少高手都说真正掌握一个优秀都程序就是阅读它的源代码,linux又是如此的优秀,又是免费的,何不研究研究它的源代码。但真正动手到有点收获又谈何容易。
像linux这样的操作系统,postgresql这样的数据库,不用说其源代码都是精髓,看源代码一定能获得不少的收获。但它们包括的知识面是非常广的,很多知识点是交错联系的,如果没有名师的指点,你又不是一个绝对的天才,看源代码绝对一个很苦的差事。linux作为一个操作系统,包括文件系统,进程管理,内存管理,设备管理,网络管理等一系列的东西,而每一个系统下面又有很多小系统,小系统下面分得很细,各个组织之间又相互联系。举个例,文件系统上层是VFS,VSF下面是EXT2,EXT3,XFS,reiserfs等,每种文件系统在一同的情况有不同的性能,有的适于存储大文件,有的适于存储小文件,有的适于存储常更改的文件,有的文件系统删了文件能恢复,有的不能,文件系统又与进程管理有着千丝万缕的联系,岂止与进程,在linux下,实行一切皆文件,文件系统与所有linux上的都瓜葛不少,虽说有统一的接口,但内部仍有一些联系,你若先研究文件系统,进程管理不熟,得先研究进程,还有内存管理,这些都掺杂得很紧,函数内部互相调用,结构内互相引用,linux系统里面又自义了很多规则,很多全局变量,全局函数,市面上的书这些都介绍得不够,当你看了书,你可能有个大概的了解,但当你放开书,看代码时,代码不尽然像书上讲的那样,书上只是给你理出了一根线,沿着这根线你可能能走通,这种可能性都不是很大,当你离开这根线的时候,会很茫然。书上介绍的往往有点陈旧,虽说思想,理论是一样的,但实际操作起来,困惑不小。当你研究一个系统时,系统内包含了很多函数,函数内又包含了许多函数,你若想搞懂一个函数,又牵涉了许多函数。对于这种系统级别的源代码,你就算看懂了一些,但当你实际写自己的代码来代替原来的代码以测试自己是否真的懂了的时候,你会发现这更难了,看懂了与自己来写又是不同级别的难度。像linux这样庞大的系统,内部涉及很多算法,设计模式,以及兼容性代码,你若要看代码,又得对这些有很深的了解。一个初学者,或者一个之前对linux内核不是很了解的人又没有资深专家的指点,一个人在网上收集资料来了解内核是一个很难的事,没有几年的时间,谈得了小有成就都是件容易的事。阅读linux源代码并不是网上的高手说的那样简单,看源代码会看得让人一头雾水。
我建议普通程序员不要一动不动就说看linux源代码,也不要看见别人的文章写得那么有鼓动性,有文采就被鼓动去研究源代码,看源代码是件好事,但不是一件容易的事,可能裁在里面几个月没有一丝成就。
开源代码是个宝藏,而且是个免费的宝藏,里面的代码是思想的精髓,是代码中的极品,是高手的结晶,但不要动不动就去看源代码,看别人的代码不是件简单的事,弄清里面的思路也不是光看代码就能解决的,代码是思想的体现,是理论的表现形式,先对理论有一定的认识然后结合代码理解是最佳途径。
在这里我不是反对看源代码,看源代码的确有不少的好处,它能消除你对程序的漠生感,对程序设计,对理论知识有更深的领悟。我希望那些跟我一样,阅读程序源代码的人不要迷失在linux,postgresql如此庞大的系统的代码里面,当你找不到出路的时候,跳出这个圈,能看得更清楚。
关于阅读源代码,不要过早的钻进代码的细节中,在开始的时候,对代码有个大体的感觉,形成总体印象,把它们的逻辑搞清楚,根据自己的需要,再做决定是否要深入研究。不要茫目的一头扎进去。