为什么我们需要阅读优秀开源软件代码

学习别人的编程思想
服务器君一共花费了480.757 ms进行了4次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议

计算机程序是由代码零件拼装起来的机器,当我们想自己造一架机器的时候,难免会想看看其他机器是怎么拼的,特别是那些经由历代高手匠人修善,在实践考炼中表现优秀的机器。我们会惊奇,它为什么这么快?为什么这么小?为什么这么稳定?为什么能承受这么高的负载?

所幸的是,有相当多这类程序都开放了源代码——它们也正是因此才得以在众多聪明头脑的协作下逐步达到今天的高度。开放源代码,这意味着我们可以拆开每一颗螺钉,走近每一个零件,观察每一个动作,触摸每一根链条,转动每一个齿轮(阅读代码,运行,调试)。我们可以像孩子一样拆散它们,然后再拼到一起,可以摆弄它们的位置(修改)。在清楚一些时,我们可以把其中的一些零件用自己制作的替换掉(实验),还可以把零件卸下来安在自己的机器里(复用)。

当然,最初我们很可能会被慎密而复杂的结构搞晕,但一旦开始渐渐理清它们的关系,我们会首先为那些按高品质行业标准打造的标准零件的规范赞不绝口(代码规范,软件包构建,接口设计),接着为那特殊零件赏心悦目的精湛工艺而惊叹(语言技巧,数据结构/算法的设计、选择和实现,细节处理),然后为它们各司其职的明确分工和合理的安排而心服口服(模块化设计,接口设计,代码组织结构),其间我们会不断得到零件上友好简洁的标注的帮助(注释和可读性)。我们甚至会偶然为匠人们的幽默而捧服。有时我们会感到,那些聪明的家伙在对我们微笑,用带着一点挑衅却又友好的语气说道:"嘿,怎么样?我的代码写得不错吧?你能写得更好么?"

渐渐地,我们理解了我们所见到的又小又快又稳定又强壮的背后,有着怎样的神奇,并且发现这复杂之中所蕴含的简单。我们会感受到匠人们对高质量的不懈追求,看到他们怎样遵守和实践那些我们听说过的"玄乎"原则和哲学,并为他们付出的努力而动容。

后来,我们会发现诸多不完美,其中有些被证明是我们理解的问题,但有些确实需要改进,那么就动手吧,这时,我们可以恭喜一下自己——我们已经跟上了这些聪明黑客的节奏,并且开始融入其中。

如果我们对历史版本进行考古,会有更多发现,我们会看到今天我们面前的强壮青年经历过怎样的幼稚,看到他的成长轨迹。这时将会明白,罗马不是一天建成的,更不是一个人建成的,那些代码中包含的是大量黑客多年积累的努力和智慧,每一次修改和重构都吸取了上一版本的教训。今天宏伟光鲜的罗马城下,压着无数旧代码的尸体,而大师们也是在经历这些风雨后才成为大师。所以,优秀的开源软件代码所示范的手段,是历史之浪淘出的黄金(也有些带有古董的痕迹,但不影响代码的质量)。如果我们不去吸取这些血泪浇灌的营养,或许就免不了重流前人流过的血泪了。

总结一下,通过阅读优秀的开源软件代码,我们能够

  • 可以修改、重写后通过运行、调试进行实验
  • 找到可复用的代码用在自己的项目中
  • 学到代码编写、软件包构建等工程规范
  • 学到语言技巧,数据结构/算法的设计、选择和实现,以及细节处理方法
  • 学到模块化设计方法和良好规范的代码组织方法
  • 学到良好的编程风格和注释规范
  • 理解编程理论和原则
  • 了解软件发展规律,吸取前人经验教训
  • 对它们进行改进
  • 当然,还有最不重要,也是最重要的:

  • 满足好奇心

本文地址:http://www.nowamagic.net/librarys/veda/detail/1229,欢迎访问原出处。

不打个分吗?

转载随意,但请带上本文地址:

http://www.nowamagic.net/librarys/veda/detail/1229

如果你认为这篇文章值得更多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 加入收藏

大家都在看

阅读一百本计算机著作吧,少年

很多人觉得自己技术进步很慢,学习效率低,我觉得一个重要原因是看的书少了。多少是多呢?起码得看3、4、5、6米吧。给个具体的数量,那就100本书吧。很多人知识结构不好而且不系统,因为在特定领域有一个足够量的知识量+足够良好的知识结构,系统化以后就足以应对大量未曾遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了。如果我的知识结构体系足以囊括面试官的大部分甚至吞并他的知识结构体系的话,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官,但是在知识结构体系以及心理上我们就居高临下。

所以,阅读一百本计算机著作吧,少年!

《深入理解MySQL核心技术》 Sasba Pacbev (作者), 李芳 (译者), 于红芸 (译者), 邵健 (译者)

《深入理解MySQL核心技术》:从公共可用性的意义上讲,MySQL源代码是开放源代码,但如果对其不了解,则实质上,它对于您来说是封闭的。MysQL开发团队的前成员Sasha Pachev通过《深入理解MySQL核心技术》给出了MySQL 5的全面指南,揭示了这一强大数据库的内部运作。您将直奔MySQL核心技术,了解各种数据结构和各种方便的功能的运作情况,了解如何添加新的存储引擎和配置选项等。 《深入理解MySQL核心技术》从结构概况讲起,在这一部分解释了MysQL的不同组件是如何协同工作的。接着将学习设置有效的可编译代码副本的步骤,然后使用基本架构添加自己的配置变量和存储引擎。

更多计算机宝库...