一.简述

这本书在业界的评价极高,被誉为开源运动的圣经,此书的作者为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相关推荐

  1. 《大教堂和集市》笔记

    1. Eric Raymond有一篇著名文章<大教堂和集市>(The Cathedral and the Bazaar). 他说,世界上的建筑可以分两种:一种是集市,天天开放在那里,从无到 ...

  2. 如何成为一名黑客 from Eric Raymond

    作者:Eric Raymond翻译 waterbird [AKA] ------什么是黑客? Jargon File中对"黑客"一词给出了很多个定义,大部分定义都涉及高超的编程技术 ...

  3. “我曾认为开源是有钱闲人的游戏,不要试图快速从中变现” | 对话《大教堂与集市》译者卫剑钒...

    作者 | 宋林飞  责编 | 何苗 受访嘉宾 | 卫剑钒 出品 | CSDN(ID:CSDNnews) 关注开源的人一定对<大教堂与集市>非常熟悉,随着这本书的中文版在国内发行,译者卫剑钒 ...

  4. “我曾认为开源是有钱闲人的游戏,不要试图快速从中变现” | 对话《大教堂与集市》译者卫剑钒

    作者 | 宋林飞 责编 | 何苗 受访嘉宾 | 卫剑钒 出品 | CSDN(ID:CSDNnews) 关注开源的人一定对<大教堂与集市>非常熟悉,随着这本书的中文版在国内发行,译者卫剑钒逐 ...

  5. 卫剑钒:《大教堂与集市》被过誉了吗?

    1997 年 5 月 27 日,开源运动的领导者之一 Eric S·Raymond 发表文章,阐述了两种不同的自由软件开发模式,并将其比喻为「大教堂模式」与「集市模式」.文章一经发表便引起轰动,随后在 ...

  6. 大咖访谈 | ​开源对安全是双刃剑——《大教堂与集市》中文译本作者卫剑钒...

    | 转载自:开源雨林 | 编辑:周韵诗 本期访谈阵容 嘉宾:卫剑钒,<大教堂与集市>中文译本作者,北京大学信息科学技术学院计算机系理学博士,中国金融学会金融科技专委会委员.长期从事信息科技 ...

  7. Eric Raymond对于几大开发语言的评价

    译者著: Eric Raymond是开源运动的领袖人物,对于UNIX开发有很深的造诣,主持开发了fetchmail.他的<大教堂与集市>被奉为开源运动的经典之作.下面对几大开发语言的评价非 ...

  8. 魔法大锅炉-Eric Raymond

    魔法大锅炉 -- 前言.目录 Eric Raymond (1999年六月) [AKA]rover HansB iasc等翻译 ------------------------------------- ...

  9. 本来面目——大教堂、集市,与作坊

    本文刊发在<程序员>杂志09年第三期上.讨论了三种不同背景下的软件工程方法.本文恢复了发表时(因为篇幅)删除掉的一些文字内容. 本来面目 --大教堂.集市,与作坊 一.两本书 ===== ...

最新文章

  1. iOS开发小技巧-修改SliderBar指针的样式(牢记这个方法,只能通过代码来修改)
  2. Emai乱码——解决的“迂回”战术
  3. 【Paper】2015_El H_Decentralized Control Architecture for UAV-UGV Cooperation
  4. swift 注意事项 (十六) —— 可选链
  5. ConcurrentHashMap源码学习
  6. (6)kendo UI使用基础介绍与问题整理——dropdownlist/基础问题整理
  7. PHP面向对象常见的关键字和魔术方法
  8. 三国佚事——巴蜀之危【递推】
  9. 关于在大网段中拆出小网段地址
  10. Flutter Swiper制作轮播效果
  11. dataframe 添加列表到一个单元格并解决报错ValueError: Must have equal len keys and value when setting with an...
  12. abaqus利用python实现部件合并_python脚本实现abaqus前处理2D多晶粒建模(附完整源码)-Voronoi多边形的生成...
  13. HDU 5608 function(莫比乌斯反演 + 杜教筛)题解
  14. APIcloud启动页
  15. php ddl,MySQL定义语言[DDL]
  16. new方法、定制属性、描述符、装饰器
  17. 2021-05-21
  18. 面试官:谈一下你对Vue组件化的理解
  19. 什么是5G LAN 5G LAN商用爆发推动5G创新应用 提速数字转型新引擎
  20. 洗礼灵魂,修炼python(67)--爬虫篇—cookielib之爬取需要账户登录验证的网站

热门文章

  1. 如何提高自己和员工的工作积极性
  2. 聚齐地产界最有话语权和决策权的人,首届中国房地产数字峰会来了|最全议程更新...
  3. napa与matlab,〖NAPA 北美摄影 - 观点与技巧〗- 不同人种肤色的调整
  4. 茶亦醉人何必酒,书能香我无须花
  5. 同行涉嫌数据抄袭、商业诋毁和人身攻击,甚至向我们的法人推销,你会怎么办?...
  6. 核电站数字化仪控系统与传统控制系统的比较
  7. 每日总结 11.24
  8. android 4.0新的特性(针对开发者)
  9. 用 Python 生成有“灵魂”的二维码
  10. 【知识图谱】将DB中数据构建成知识图谱