ninja_ken  

一个程序员如果在五六年前说自己不碰或者不懂开源,应该还不足为奇。今天,一个程序员如果没有用过github等代码托管平台,可能让人怀疑TA是不是个假程序员。如今借鉴和引用开源项目已经变成了许多计算机编程人员工作中的日常,甚至很多公司在招聘JD里清楚写明“有开源项目经验优先”。有时自己从开源世界看到如此丰富多彩的组件、工具和文档,不禁感叹开源世界的强大力量,它完全可以称得上跨地域全球协作的一个典范。
从今年6月份开始,自己陆陆续续投入了不少时间和精力去阅读LevelDB项目的源码。最初感觉是晦涩难懂,后来渐渐摸出来一些蛛丝马迹,从点开始突破,把点慢慢连成线,到现在读源码时已开始感觉如同平日工作里的代码一般。LevelDB作者是谷歌著名程序员Sanjay Ghemawat和Jeff Dean,总代码量并不多,去除test代码和第三方仓库依赖(googletest和benchmark),只有不到1万2千行。虽然如此,作为自己第一个精读的(C++)开源项目,前后零零总总投入了至少几十个小时(我想应该不足一百),深感并不轻松。在阅读代码的过程中,我参考了《极客时间》App上《许式伟的架构课》(作者七牛云CEO许式伟)71节“如何阅读别人的代码”中的一些指导建议,受益匪浅。
常言道,“万事开头难”,研读LevelDB代码的意义也正在于此,从0到1。记得大约从去年下半年开始,我试着去探索开源项目,当时粗读了boltdbspd日志框架,虽然开了些眼界,但只是粗读,也没输出任何架构性的文档或者总结,所以现在对其中原理和细节大多已经遗忘。去年八月份,我在github上面提交了自己的第一个PR,现在依然能想起当时的那种欣喜劲儿(傻傻的,哈),甚至还专门发了一条朋友圈去mark一下。代码改动虽小,甚至可以说是细枝末节,可对自己而言,是第一次的尝试,是0的突破。
计算机编程作为一个行当,特别适合自由探索,它不需要专门的实验室,也不需要各种器材,只要你能静下心、坐得住,愿意花时间去了解和研究,那么一台连接Internet的普通PC就是你所需要的全部,一个广袤的开源世界触手可及。

posted on 2022-12-06 13:49  ninja_ken  阅读(32)  评论(0编辑  收藏  举报