读《Python源码剖析》

238 阅读4分钟

大概是去年的这个时候,项目开始不再像以前那么忙,相近年龄段的同事陆续离职。他们分享了各自的面试经历,有一个共通点是:“感觉自己这几年真的没学到什么东西,出去面试都感觉自己好水,全都是在写逻辑。”

我与同事们做的事情是一样的,我也只会写逻辑(写逻辑的意思是,为游戏实现量身定制的各种功能。例如玩家花钱抽奖,获奖后给一个酷炫的效果)。

走的人多了,老大找留下来的人儿挨个聊天。到我的时候,老大提出建议:“平时有时间,多在技术深度上做些积累。”

很明显,我在技术深度上是欠缺的。我想破破局——给自己增加一点深度。

什么是技术深度呢?其实我说不出来所以然,作为一个游戏程序员,老大的建议是让我去看渲染。很久以前,我看过渲染,也跟着教程LearnOpenGL做完了所有示例。随着时间流逝,这教程中的内容,并无机会应用在项目中,慢慢的,兴致也就淡了。到现在,我连渲染管线的流程都模糊了。

所以,我并没有去看渲染,而是看视频,一门《设计模式》课程后,又将侯捷老师的所有课程看完。之后重拾公众号的更新,思考公众号应该展示哪些内容过程中,确定了一个方向——Python源码,我要对Python的理解多一些;并能将这理解,用自己的语言讲述出来。

为什么选定Python呢?因为我发现,对我来说,不管何种技能,必须得理论结合实践才能一直坚持下去,才会有进步;我爱打篮球,看了无数教导改善投篮姿势的视频,但练的太少,姿势依然没调整完毕。

看侯捷老师的C++视频,于当时确确实实的领悟到许多,但在半年之后,有些概念又开始模糊。我并没有一直使用C++,这忘记,是肯定会慢慢发生的。

而Python呢?是我一直在使用的语言。理想的情况是,我用Python实现功能,每敲下一段Python代码,都会触发我想一下底层原理,咦?不太记得;嗯,快翻翻笔记、看看源码。以此巩固。

由此,我从Python源码开始,向深度进发。

--

公司的KM上有关于Python源码的帖子。

未碰源码,想看源码。我想看看大佬们是如何阅读的,便去翻这些帖子。以讲述PyTypeObject的那一篇举例,概览两遍过后,我选择在脑子最清醒的时刻,把眼睛睁得大大的,集中注意力去看第三遍,也是刚过文章一半,越往后,越晦涩。

下载了源码,在vs2019中阅读,从程序入口出发,使用F12,到解释器,到内存分配……研读近一月(三十天计划,每日半小时到一小时),很多内容看的云里雾里,笔记中许多问号。

我感到效率低下,接着好几天在网上搜索相关内容,惊喜发现一本《Python源码剖析》。技术书籍的阅读,会耗时许多,这本书,从20年12月中旬开始,到今年5月中旬结束,花近5个月的时间阅读完毕。

书中内容一共分为三部分,Python内建对象、Python虚拟机与Python高级话题。

  • 内建对象部分,我比对着源码进行,书中出现的代码,我要在源码中找到对应位置,先跟一遍,再回书籍。能够理解书中内容,经常“恍然大悟”、“原来如此”、“作者好厉害”。
  • 虚拟机部分,找到代码位置,但跟的少了,更多的只是跟着书籍走。看书感受只剩“原来是这样的啊”。
  • 到高级话题,只找到文件,简单看看整体结构。全程只看书,但是会有些力不从心。笔记中出现最多的是:“啊。先放放吧,查阅一下先。啊,我要搞懂这个,得先弄懂那个。”

三部分阅读下来,能够感受到自己的知识储备是不够用的。经过整理,书籍成了我的另一本字典。需要了解的点,就翻到对应位置去阅读。只是许多内容,距离真正的理解,还差着许多知识点(未使用过的Python基础模块、词法、语法、线程、进程、锁等),期待融会贯通的那天。

--

某天,老大发现我在看源码,便与我分享了一下他看源码的想法:“感觉看源码得带着一个目标去,如果没有目的,看起来没意思,很容易就放弃了。”

我当时的回答是:“嗯,确实是这样的。现在我有一个目标,我的目标是,写好多的博客。”

这一篇读书笔记,被最近一个月的许多见闻推到了现在。它算是我许多博客的“序”,我将从字节码开始,一篇一篇地写。

引用链接

  1. 超棒的OpenGL教程LearnOpenGLlearnopengl-cn.github.io/#