# 黑客与画家(10万册纪念版) > 保罗·格雷厄姆 ## 2 黑客与画家 > 同样,黑客可以通过观看优秀的程序学会编程,不是看它们的执行结果,而是看它们的源代码。开源运动最鲜为人知的优点之一,就是使得学习编程变得更容易了。 > 正确的合作方法是将项目分割成严格定义的模块,每一个模块由一个人明确负责。模块与模块之间的接口经过精心设计,如果可能的话,最好把文档说明写得像编程语言规范那样清晰。 > 程序必须写得能够供人们阅读,偶尔供计算机执行。 > 我们看到这种模式反复出现。在一种新的媒介刚刚诞生的时候,人们热情高涨、兴奋不已,短短几代人就探索清楚了这种媒介的大部分可能性,把它的能量发挥到极致。编程目前好像就处在这个阶段。 > 唯一有效的外部考核就是时间。经过岁月的洗礼,优美的东西生存发展的机会更大,丑陋的东西往往会被淘汰。 > 黑客搞懂“计算理论”(theory of computation)的必要性,与画家搞懂颜料化学成分的必要性差不多大。一般来说,在理论上,你需要知道如何计算“时间复杂度”和“空间复杂度”(time and space complexity);如果你要写一个解析器,可能还需要知道状态机(state machine)的概念;除此以外,并不需要知道特别多的理论。这些可比画家必须记住的颜料成分少很多 > 真正竞争软件设计的战场是新兴领域的市场,这里还没有人建立过防御工事。只要你能做出大胆的设计,由一个人或一批人同时负责设计和实现产品,你就能在这里战胜大公司。 > 。即使上了大学,黑客学习编程依然主要通过自己写程序 > 同样,黑客可以通过观看优秀的程序学会编程,不是看它们的执行结果,而是看它们的源代码。开源运动最鲜为人知的优点之一,就是使得学习编程变得更容易了。 💭 照葫芦画瓢。 ## 效率 > 让性能分析器自动运行可能是一个好主意。它自动告诉程序员每个部分的性能,而不是非要等到程序员手动运行后才能知道 ## 外部因素 > 编程语言还需要有一本介绍它的书。这本书应该不厚,文笔流畅,而且包含大量优秀的范例。 ## Blub困境 > 如果在开发的程序必须与另一个程序紧密配合,那么可能最好还是使用后者的开发语言 ## 13 书呆子的复仇 > 如果所有编程语言都一样,为什么答案变了?进一步说,为什么Java语言的设计者要如此麻烦地去创造一种新语言呢 ## 目标客户 > 非IT公司的内部系统管理员没有行业竞争压力,日久天长就会变得工作效率低下、不负责任 > 大公司付出的高价之中,很大一部分是商家为了让大公司买下这个商品而付出的费用。(如果国防部花1 000美元买一个马桶座圈,部分原因是要让国防部买下它本身就需要花很多钱。) ## 9 设计者的品味 > 只有在成为某个领域的专家之后,你才会听到心里有一个细微的声音说:“这样解决太糟糕了!一定有更好的选择 ## 1 为什么书呆子不受欢迎 > 那么我要说,我觉得最难的部分,其实是意识到你该做什么。 ## 关注用户 > 如果你写过互联网软件,会发现“后退”按钮是设计中最费脑筋的问题之一,很有意思)。 ## 为什么不尝试一下 > 微软公司的恐怖之处在于,它大到可以开发任何软件,就像一座能够行走的大山 ## 平装版译者序 > 这时,“黑客”这个词不仅是第一流能力的象征,还包含着求解问题过程中产生的精神愉悦或享受 > 对于黑客来说,关着的门就是一种挑衅,而锁着的门则是一种侮辱。……黑客相信,只要有助于改进现状、探索未知,人们就应该被允许自由地使用各种工具和信息。 > 对于黑客来说,关着的门就是一种挑衅,而锁着的门则是一种侮辱。……黑客相信,只要有助于改进现状、探索未知,人们就应该被允许自由地使用各种工具和信息。 💭 唉,我又想到了docker在国内被屏蔽无法访问。 > 阮一峰 2010年12月25日,写于上海 💭 阮一峰其人 :https://coolshell.me/articles/who-is-ryf.html ## 技术的杠杆效应 > 如今,确实有很多人非常有钱,完全不必再去工作,他们之所以还在工作,不是因为感到社会压力,而是因为无所事事使人感到孤独和消沉。 ## 时间 > 一种编程语言要想变得流行,最后一关就是要经受住时间的考验。没人想用一种会被淘汰的语言编程,这方面已经有很多前车之鉴了。所以,大多数黑客往往会等上几年,看看某一种新语言的势头,然后才真正考虑使用它。 ## 11 一百年后的编程语言 > 随着技术的发展,每一代人都在做上一代人觉得很浪费的事情。 > 应用软件运行速度提升的关键在于有一个好的性能分析器帮助指导程序开发。 ## 可测量性和可放大性 > 要致富,你需要两样东西:可测量性和可放大性。你的职位产生的业绩应该是可测量的,否则你做得再多,也不会得到更多的报酬。此外,你还必须有可放大性,也就是说你做出的决定能够产生巨大的效应。 ## 保罗·格雷厄姆其人其事 > 在线日历网站Kiko是该领域的先锋,后来由于谷歌推出同类产品而被迫把源码放到eBay上拍卖,卖出了25.8万美元 > 保罗·格雷厄姆有一套完整的创业哲学,他的创业公式是:(1)搭建原型;(2)上线运营(别管bug);(3)收集反馈;(4)调整产品;(5)成长壮大。 > 在线日历网站Kiko是该领域的先锋,后来由于谷歌推出同类产品而被迫把源码放到eBay上拍卖,卖出了25.8万美元 💭 互联网产品,如果利润足够大,大公司下场的话,小公司就只能喝点汤,可能汤都喝不到 😂 ## 财富的老爹模式 > 当我们说一些工作报酬过高,另一些工作报酬过低,我们的真实想法到底是什么?在自由竞争的市场经济中,价格由买家的需求决定。如果人 > 当我们说一些工作报酬过高,另一些工作报酬过低,我们的真实想法到底是什么?在自由竞争的市场经济中,价格由买家的需求决定。如果人 💭 前提是公开透明。贵州省烟草专卖局(公司)2024年公开招聘公告发布于今年5月11日,其中,云岩区局(分公司)和南明区局(分公司)的卷烟客户服务部客户经理岗位各招聘1人,并要求“体育教育、运动训练等相关专业”,而且备注“特长生,具有篮球或足球国家二级运动员以上资格者优先”。值得注意的是,卷烟客户服务部客户经理岗共招聘7人,除上述两个岗位外,其余5个岗位的要求均是“统计学、经济学、金融学等相关专业”。为何招聘客户经理却要求体育教育方面的专业,甚至特长生优先?8月2日,贵州省烟草专卖局相关工作人员回应澎湃新闻称,“这是企业当时根据实际的岗位需要,自主确定的人才需求。”面对公众的质疑,对方表示没有更多详细的解释。https://www.sohu.com/a/798229484_121123809 ## 15 设计与研究 > 其中有一点是正确的,那就是如果你正在设计某种新东西,就应该尽快拿出原型,听取用户的意见。 ## 向心力 > 使用一种不常见的语言会出现的问题我想到了三个:你的程序可能无法很好地与使用其他语言写的程序协同工作;你可能找不到很多函数库;你可能不容易雇到程序员。 ## 财富和权力 > 从那时到现在,两件事情发生了变化。第一个变化是法律。在相当长的历史时期内,你的财富得不到保护,统治者和他的手下可以设法将它占为己有。但是,变化首先发生在中世纪的欧洲。新兴的商人和制造业者开始在城市中崛起,他们团结起来对抗当地的封建领主。人类历史上第一次出现强盗无法夺走平民血汗钱的情况。这对第二个变化起到了巨大的推动作用,甚至可能是第二个变化发生的主要原因。这第二个变化就是工业化的来临 > 从那时到现在,两件事情发生了变化。第一个变化是法律。在相当长的历史时期内,你的财富得不到保护,统治者和他的手下可以设法将它占为己有。但是,变化首先发生在中世纪的欧洲。新兴的商人和制造业者开始在城市中崛起,他们团结起来对抗当地的封建领主。人类历史上第一次出现强盗无法夺走平民血汗钱的情况。这对第二个变化起到了巨大的推动作用,甚至可能是第二个变化发生的主要原因。这第二个变化就是工业化的来临 💭 《中华人民共和国宪法》第十三条 公民的合法的私有财产不受侵犯。 国家依照法律规定保护公民的私有财产权和继承权。 国家为了公共利益的需要,可以依照法律规定对公民的私有财产实行征收或者征用并给予补偿。 ## 笑脸相迎? > 我还没想好 ## 金钱问题 > 我认为,如果公开收取软件的订阅费,而不是让用户购买软件的所有权,操作起来会更自然、更简便。“订报纸模式”正是互联网软件天然的收费模式。 ## 工作是什么 > 你早上起床,来到一个新的地点,也是几幢建筑物,开始做你正常情况下没兴趣做的事情。仅有的区别就是,上班的日子不如上学的日子有趣,但是有人付钱给你,而不是你付钱给学校。 ## 公理的不同意见 > 我想提出一种相反的观点:现代社会的收入差距扩大是一种健康的信号。技术使得生产率的差异加速扩大,如果这种扩大没有反映在收入上面,只有三种可能的解释:(a)技术革新停顿了;(b)那些创造大部分财富的人停止工作了;(c)创造财富的人没有获得报酬。 > 我想提出一种相反的观点:现代社会的收入差距扩大是一种健康的信号。技术使得生产率的差异加速扩大,如果这种扩大没有反映在收入上面,只有三种可能的解释:(a)技术革新停顿了;(b)那些创造大部分财富的人停止工作了;(c)创造财富的人没有获得报酬。 💭 经济不均(也称为贫富差距、经济不平等和国民收入不均等)是指一个群体里面每个人之间的经济资产(财富)及收入的分配不均等。该用词一般是指一个社会里面个人或群体之间的收入差距,也可用以指出国际贫富不均。贫富差距问题跟经济平等、平等机会及平等结果的概念有关。 人们对观察贫富差距的道德意义和实际作用都有分歧,这种不平等是否应该存在?假如社会需要存在一定的不平等,差距到什么程度就超出“必要”的范围?人们应该用什么方法改变不平等的程度?贫富差距有被赞赏为必要和有好处的[1],亦同时被指责为一个愈来愈大的社会问题[2]。 2016年的一项元分析发现,“不平等对经济增长的影响是负面的,这点在欠发达国家比富裕国家更为显著”,尽管不平等对经济增长的平均影响并不显著。该研究还发现,财富、土地和人力资本的不平等对经济增长的影响比收入不平等危害更大[3]。 贫富不均在不同的社会和不同的历史时期会有变化;不同的经济结构或体系(例如资本主义或社会主义)、在战争期间和和平以后、个人在创造财富的能力上的差异,都影响着贫富不均的产生。贫富不均亦可用以描述在一个时期之内不同行业的收入或财富,以至一个人一生的收入和财富状况[4]。现时有多种经济指数去量度贫富差距。在各种收入差距指标当中,较常用的是基尼系数。 ## 守口如瓶 > 我就鼓励自己在心里默默思考那些最无法无天的想法。你的思想是一个“地下组织”,绝不要把那里发生的事情一股脑说给外人听。“格斗俱乐部”的第一条规则,就是不要提到格斗俱乐部。 > 我就鼓励自己在心里默默思考那些最无法无天的想法。你的思想是一个“地下组织”,绝不要把那里发生的事情一股脑说给外人听。“格斗俱乐部”的第一条规则,就是不要提到格斗俱乐部。 💭 避免交浅言深。 ## 代码之城 > 因为保证Unix系统安全的关键之一就是不运行那些不需要的东西,以降低服务器被侵入的可能性。 ## 开放源码 > 只是如果你要我安装没有源码的软件,我会非常犹豫。普通的消费者也许不需要看到他们使用的文字处理器的源码,但是在非常强调软件可靠性的情况下,出于强烈的工程需求的考虑,会要求开放源码。 💭 还有一部分原因是安全需求。比如密码管理软件必须开源,否则不使用。 ## 书评 每个行业,都有那几本行业相关的闲书。至于我对“闲书”的定义则是,看完没啥感触,翻一翻打发时间的书籍。这类闲书,适合茶余饭后,简单翻一翻。 这本书,对于我而言,是本闲书。 这本书的作者,是二十年前美国计算机行业中的大佬。而我是身处当前国内计算机行业中的菜鸟。两者没有什么共同语言。 文中有三分之一的部分是创业。我没能力,没钱,没想法,去创业,那八成是脑子不灵光了,哈哈。 文中有三分之一是在讲一个好的编程语言,lisp是好的编程语言。计算机专业的三大浪漫,计算机系统,编译原理,图形学。其中的编译原理是去设计一门语言。而我当年的本科课程教材,是授课教师自己编写的薄薄的一本垃圾教材。工作后,也不用编译原理。所以我的编译原理储备约等于零。我不关心哪个编程语言好,当前用的合适就行。 所以,这本书,我的个人评价是“不行”。一方面是时代背景不同了。一方面是菜鸟程序员接触不到书中的内容。