本文主要是介绍《大教堂与集市》[美] Eric Raymond,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一.简述
这本书在业界的评价极高,被誉为开源运动的圣经,此书的作者为Eric Raymond,是美国的一位软件开发人员。此人在1996年接管了开源电子邮件软件“popclient”的开发,并将其重命名为Fetchmail,之后不久,他于1997年发表了一篇名为《大教堂与集市》的文章,此文描述了他对开源软件开发的看法,以及为什么使用“集市”的开发模式。同年五月,他在年度Linux Kongress上发表相关论文,后来他将论文扩展成书,于是,《大教堂与集市》诞生了。
二.摘抄与思考:
顾名思义,该书主要围绕两点讲述:“大教堂”的开发模式,和“集市”的开发模式,在这过程中,作者也提到了不少关于黑客文化,开源软件开发与管理的看法。
1.Linux最重要的特点不是技术上的,而是社会学上的。在Linux被开发出来之前,所有人都认为,如果软件复杂到操作系统这样的程度,就必须要有一个精心协作的团队,团队要比较小,而且紧密互动,不管是以前还是现在,这都是很典型的开发模式。商业软件、FSF ?20世纪80年代开发的如大教堂般宏伟的自由软件以及从Lynne Jolitz最初的386BSD分裂出来的freeBSD/netBSD/OpenBSD这些项目,都是使用这种模式开发的
2.好的软件作品,往往源自于开发者的个人需要。按说这是显而易见的(正如老话说“需要是发明之母”),但太多的软件开发人员并不需要也不热爱他们正在开发的软件,他们把编程当差事,为的只是拿薪酬
3.在你第一次把问题解决的时候,你往往并不了解这个问题,第二次你才可能知道怎么把事情做好。所以,如果你想做对事情,至少要再做一次
4.或者可能因为一些难以消除的严重bug导致用户群流失,Linus也在所不惜,他相信 ? 8.如果有足够多的beta测试 ? [1]和合作开发者,几乎所有问题都会很快显现,然后自然有人会把它解决。或者说得更通俗一些:“只要眼睛多,bug容易捉。”我把它称为“Linus定律”
5.Linus 定律道出了大教堂模式和集市模式最关键的区别:在大教堂建筑者看来,bug 是棘手的、难以发现的、隐藏在深处的,要经过几个人数月的全心投入和仔细检查,才能有点信心说已经剔除了所有错误。而发布间隔越长,倘若等待已久的发布版本并不完美,人们的失望就越发不可避免。对集市模式而言则完全不同,在上千名合作开发者热切钻研每个新发布版本的情况下,你可以假定bug 是浅显易找的,或者至少可以很快变得浅显易找。所以你会频繁发布以获取更多的修正,其副作用是良性的:即便发布中有些小问题,你也不会损失太多
6.Brooks(《人月神话》的作者)曾经在非正式场合说过:“对于一个被广泛使用的软件,其维护成本通常是开发成本的40%或者更多。令人惊奇的是,这个成本受到用户数的严重影响,用户越多,发现的bug就会越多。”“用户越多,bug越多”是因为增加用户就会增加程序检验的方式。当用户是合作开发者时,这种效应会被放大,每个着手去发现bug的人,都会有不同的视角,并使用各自略微不同的捕捉方法和分析工具。
7.传统软件开发在组织结构上的根本问题 ? Brooks 定律一语道破:“在一个已经延期的项目上增加人手,只会让项目更加延期。”更为一般地讲, Brooks 定律指出,随着开发人员数目的增长,项目复杂度和沟通成本按照人数的平方增加,而工作成果只会呈线性增长 ? Brooks 定律是建立在经验基础上的,人们发现, bug 很容易集中在不同人写的代码的交互接口上,沟 ?/ 协调的开销会随开发者间接口数的增加而增多,也就是说,问题规模和开发人员间的沟通路径数相关,即和人数的平方相关(更精确地讲,应该是 N( N- 1)/ 2 ? N 代表开发者数目)
8.聪明的数据结构配上愚笨的代码,远比反过来要好得多
9.设计上的完美不是没有东西可以再加,而是没有东西可以再减。”当你的代码变得既好又简单,你就知道你做对了
10.我想,一个协调者是否拥有卓越的原创设计能力,并不是项目成败的决定性因素,但他是否能识别出别人的优秀创意,则一定是最关键
11.集市项目启动要求:
11.1 . 一定水准的设计和编码能力
11.2 .很好的人际交往和沟通能力
11.3 .事先需要一个项目原型
12.闭源世界不能赢得一场与开源社区之间的不断演化的军备竞赛,因为后者可以在一个问题上投入比前者多几个数量级的熟练技术工时
13.从历史上看,黑客文化中最引人注目和最有组织的部分,都是既狂热又反商业化的,Richard M.Stallman(RMS)创立的自由软件基金会, 20世纪80年代早期开始,支持了大量的开源项目,包括Emacs和GCC——它们至今仍然是互联网开源世界的基础,而且看起来将继续保持这个地位
14.人类对社会地位的竞争有一种天生的内驱力,它通过进化根植于人心。灵长类整个历史 90%都处于农业尚未被发明的年代,我们的祖先生活在小型的游牧型狩猎采集群体中,位居高位的个体(即那些能够最有效组成联盟并说服他人与自己合作的人)获得最健康的伴侣和最好的食物,对地位的驱动力会以不同的方式表达,并主要取决于生活必需品的稀缺程度 . 从这个角度看,“编程乐趣”是对自我实现或自我超越需求的满足,这种高层次需求只有在低层次需求(包括生理安全、归属感、同侪尊重)被最低程度满足后,才会持续地表现出来。所以,“编程乐趣”要在一定社会环境下才能成为个体的主要动机,而“声誉竞争”可能对该环境提供起到了至关重要的作用 ?
15. 如何称为一个黑客?
15.1. 定义:有一堆关于“黑客”这个术语的定义,大多数都涉及“技术高超”、“热衷于解决问题”和“突破极限”这样的特点。
15.2 精神:黑客精神并不局限在软件文化中。人们会把黑客态度用在其他事情上,比如电子或音乐。事实上,对任何科学和艺术,在其最高水平的活动中都可以发现黑客精神。
15.3 黑客与骇客的区别:两者最根本的区别是:黑客搞建设,骇客搞破坏
15.4. 相信自由,互相帮助,追求卓越,保持学习。
15.5. 要有学习的信心和解决问题的勇气:比如,当你没有完整的知识去解决一个问题的时候,也要去解决这个问题,在这个解决问题的过程中你会从中学习,也会因为学习而或者知识去解决下一个问题。
15.6. 创造性的大脑是有限资源,不要重复造轮子。无聊和乏味是有害的,好好利用你的头脑去解决有趣的问题
15.7. 自由是好事情
15.8. 态度不能代替能力。要想成为黑客,你必须养成这些态度。但只凭态度并不会让你成为黑客,就像只凭态度不会让你成为冠军运动员或摇滚明星一样。要成为一名黑客,你需要智慧、实践、投入和努力
15.9. 学习编程,Python是一个很好的入门语言。然后融会贯通,要懂得快速上手其他语言。学习C, List等优秀语言。
15.10. 达到黑客的精神境界:写作,阅读科幻小说,禅修,学习乐器,鉴赏音乐等。
这篇关于《大教堂与集市》[美] Eric Raymond的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!