google chrome浏览器的源代码是非常庞大的,为了较快的进入学习状态,有必要事先对一些知识点进行说明,这里不是要详细说明里面的细节,而是从概念层次阐明一些注意事项。这里谈到的东西也不一定说非要事先把这些东西搞得很明白才能去学习源代码,主要还是先给大家一个心理准备。当然如果你最终要在细粒度的层次掌握源代码细节,那么这些知识点必须非常清楚,不过这可以结合源代码的时候再针对性的来澄清这些知识点。
由于chrome源代码包含方方面面的技术非常之多,根据个人喜好可能针对性的对某些技术感兴趣,那么可以针对性的进行学习。大的原则是理论和实践相结合,chrome包含的代码就是各种规范、理论的具体实践实现。
基础知识
基础知识是任何技术方面都应该掌握的领域无关的通用知识。我认为主要包括“语言基础”和“系统基础”两大类。
语言基础知识
整个chrome源代码包括webkit内核、v8引擎全部用c++语言编写。那么作为语言基础的c++语言就必须是精通的水平才可能流畅的看明白里面的代码。我一直认为c++是有史以来最复杂的语言(可参考孟岩文章关于C++复杂性的零碎思考),是典型的魔幻语言,我曾经也痴迷去深究c++一些高级技巧,后来某天突然发现这种深究、这种玩法除了增加理解上的复杂性,对实际问题似乎并没有带来任何好处。后来看到一篇文章(请看孟岩文章Ruby 1.9不会杀死Python),才明白原来自己的性格是喜欢简约风格的语言,从此不再去钻牛角尖玩语言技巧。对于语言问题每个人都有自己的看法和偏好,但显然,不喜欢归不喜欢,但在现实中,我们有时候又必须去面对我们不太喜欢的东西(当然并不是说我讨厌c++),拿语言来说,这种情况下对于喜欢简约风格的程序员最理智的办法就是以一种简约的方法去使用复杂的c++。千万不要在实际应用中为了技巧而技巧,这样会非常丑陋别扭,因为你根本没有真正明白什么时候该合理的使用这些技巧。好在chrome源代码里面的c++语言技巧绝不是为了故弄玄虚,在chrome里面作者们为我们展示了如何恰到好处的使用这些技巧来解决实际问题&#