黑客与画家#
Paul Graham
我们就有了找出“不能说的话”的第三种方法:将当代观念与不同时期的古代观念diff[5]一下
还有第四种寻找“不能说的话”的方法:寻找那些一本正经的卫道者,看看他们到底在捍卫着什么。
就是因为这个原因,大多数成年人故意让孩子对世界有一个错误的认识。最鲜明的例子之一就是圣诞老人。我们觉得,小孩子相信圣诞老人,真是太可爱了。我本人其实也是这样想。但是,扪心自问,我们向孩子灌输圣诞老人的神话,到底是为了孩子,还是为了我们自己?
我还想到了第五种方法,可以找出“不能说的话”,那就是去观察禁忌是如何产生的。
为对比之下,旧的流行会显得很荒唐。从钟摆波动的一端望
如果自己就是潮水的一部分,怎么能看见潮流的方向呢?你只能永远保持质疑。问自己,什么话是我不能说的?为什么?
在我看来,一个人们拥有言论自由和行动自由的社会,往往最有可能采纳最优方案,而不是采纳最有权势的人提出的方案。
“反抗政府的精神,”杰弗逊写道,“在某些场合是如此珍贵,我希望它永远保持活跃。”
保罗·格雷厄姆有一套完整的创业哲学,他的创业公式是: (1)搭建原型 (2)上线运营(别管bug) (3)收集反馈 (4)调整产品 (5)成长壮大
盗版实质上是一种价格歧视,只不过针对的是最底层的消费者。
管理企业其实很简单,只要记住两点就可以了:做出用户喜欢的产品,保证开支小于收入。只要做到这两点,你就会超过大多数创业公司。随着事业的发展,你自己就能琢磨出来其他的诀窍。
。这里有一个守恒定律:如果你想赚100万美元,就不得不忍受相当于100万美元的痛苦
金钱不是财富,而只是我们用来转移财富所有权的东西。所以,虽然在某些特定的情况下(比如某个家庭当月的收入),你能用来与他人交换的金钱数量是固定不变的,但是大多数情况下,世界上可供交换的财富不是一个恒定不变的量。人类历史上的财富一直在不停地增长和毁灭(总体上看是净增长)。
大公司最大的困扰就是无法准确测量每个员工的贡献。大多数时候它只是在瞎猜。在大公司中,你只要一般性地努力工作,就能得到意料之中的薪水。你不能明显无能或懒惰,但是谁也没觉得你会把全部精力投入工作
要致富,你需要两样东西:可测量性和可放大性。你的职位产生的业绩,应该是可测量的,否则你做得再多,也不会得到更多的报酬。此外,你还必须有可放大性,也就是说你做出的决定能够产生巨大的效应。
有一个办法可以发现是否存在可放大性,那就是看失败的可能性。因为收入和风险是对称的,所以如果有巨大的获利可能,就必然存在巨大的失败可能。
根据理查德·斯托尔曼的说法,黑客行为必须包含三个特点:好玩、高智商、探索精神。只有其行为同时满足这三个标准,才能被称为“黑客”。另一方面,它们也构成了黑客的价值观,黑客追求的就是这三种价值,而不是实用性或金钱。
但创业是有一些潜规则的,其中一条就是很多事情由不得你。
都是一样的:你能吃多少苦,我们就能吃多少苦。 另一条潜规则是,创业的付出与回报虽然总体上是成比例的,但是在个体上是不成比例的。
另一条潜规则是,创业的付出与回报虽然总体上是成比例的,但是在个体上是不成比例的。
(1)使用计算机以及所有有助于了解这个世界本质的事物都不应受到任何限制。任何事情都应该亲手尝试。 (Access to computers—and anything that might teach you something about the way the world works—should be unlimited and total. Always yield to the Hands-On Imperative!) (2)信息应该全部免费。 (All information should be free.) (3)不信任权威,提倡去中心化。 (Mistrust Authority—Promote Decentralization.) (4)判断一名黑客的水平应该看他的技术能力,而不是看他的学历、年龄或地位等其他标准。 (Hackers should be judged by their hacking, not bogus criteria such as degrees, age, race, or position.) (5)你可以用计算机创造美和艺术。 (You can create art and beauty on a computer.) (6)计算机使生活更美好。 (Computers can change your life for the better.
正如逻辑学的“奥卡姆剃刀”原则所说,简单的解释就是最好的解释。
一个社会需要有富人,这主要不是因为你需要富人的支出创造就业机会,而是因为他们在致富过程做出的事情。我在这里谈的不是财富从富人流向穷人的那种扩散效应(trickle-down effect),也不是说如果你让亨利·福特致富,他就会在下一场宴会雇用你当服务员,而是说如果你让他致富,他就会造出一台拖拉机,使你不再需要使用马匹耕田了。
一上来就跟你讨论sex。相反,倒是你已经认识的熟人可能会这样做。所以,白名单有助于避免这些邮件的误判。但是问题是,人们一般都有好几个Email地址,一封从陌生地址发来的邮件并不必然意味着来自一个你不认识的陌生人。一个老朋友突然用一个全新的地址写信给你可不是罕见情况,对于黑客尤其如此。所以,白名单并不会降低误判的风险。 不过,某种意义上,统计学过滤器其实内嵌了白名单
并非所有的艰苦都是值得的。世界上有有益的痛苦,也有无益的痛苦。你需要的是咬牙向前冲刺的痛苦,而不是脚被钉子扎破的痛苦。
写实的目的不是为了给生活留下一模一样的记录,而是为你的思想提供一个咀嚼点:你的眼睛看着某样东西,你的手就代表你的思想,画出一些比较有意思的内容。 模仿大自然也是工程学的有效方法。
单单是无法容忍丑陋的东西还不够,只有对这个领域非常熟悉,你才可能发现哪些地方可以动手改进。你必须锻炼自己。只有在成为某个领域的专家之后,你才会听到心里有一个细微的声音说:“这样解决太糟糕了!一定有更好的选择。”不要忽视这种声音,要培育它们。优秀作品的秘诀就是:非常严格的品味,再加上实现这种品味的能力。
编译器处理的高级语言代码又叫做源码
为就被称为“缓冲区溢出攻击”。在这种攻击中,还有其他方
空间[3]比较小,另一个原因是它的突变不是随机的。语言的设计者们总是有意识地借鉴其他语言的设计思想。
对速度的追求是人类内心深处根深蒂固的欲望
编程语言设置字符串似乎就是一个过早优化的例子
虽然有些令人难为情,但是我必须承认,就是因为这个原因,在Viaweb创业期间我从来没有公开谈论过Lisp语言。我们对新闻媒体闭口不谈Lisp,如果你在我们的网站上搜索Lisp,只会发现我在个人介绍中提到过两次,那是我写的两本关于Lisp的书。这是故意的,创业公司对竞争对手应该越保密越好。如果他们不知道(或者不关心)我们的软件用什么语言开发,我就要把这个秘密保持下去
衡量语言的编程能力的最简单方法可能就是看代码数量。
因为你知道,总的来说,你的经理其实不关心公司是否真的能获得成功,他真正关心的是不承担决策失败的责任。所以对他个人来说,最安全的做法就是跟随大多数人的选择。
一种语言必须是某一个流行的计算机系统的脚本语言(scripting language),才会变得流行。Fortran和Cobol是早期IBM大型机的脚本语言。C是Unix的脚本语言,后来的Perl和Python也是如此。Tcl是Tk的脚本语言,Visual Basic是Windows的脚本语言,(某种形式的)Lisp是Emacs的脚本语言,PHP是网络服务器的脚本语言,Java和JavaScript是浏览器的脚本语言
人们真正注意到你的时候,不是第一眼看到你站在那里,而是发现过了这么久你居然还在那里。
黑客搞懂“计算理论”(theory of computation)的必要性,与画家搞懂颜料化学成分的必要性差不多大。一般来说,在理论上,你需要知道如何计算“时间复杂度”和“空间复杂度”(time and space complexity);如果你要写一个解析器,可能还需要知道状态机(state machine)的概念;除此以外,并不需要知道特别多的理论。这些可比画家必须记住的颜料成分少很多。
科学界的每一个人,暗地里都相信数学家比自己聪明。我觉得,数学家自己也相信这一点。最后的结果就是科学家往往会把自己的工作尽可能弄得看上去像数学。
黑客如何才能做自己喜欢的事情?我认为这个问题的解决方法是一个几乎所有创作者都知道的方法:找一份养家糊口的“白天工作”(day job)
黑客的出发点是原创,最终得到一个优美的结果;而科学家的出发点是别人优美的结果,最终得到原创性。
如果黑客只是一个负责实现领导意志的技术工人,职责就是根据规格说明书写出代码,那么他其实与一个挖水沟的工人是一样的,从这头挖到那头,仅此而已。
正确的合作方法是将项目分割成严格定义的模块,每一个模块由一个人明确负责。模块与模块之间的接口经过精心设计,如果可能的话,最好把文档说明写得像编程语言规范那样清晰。
程序的结构与解释》[16]一书的卷首语: 程
程序写出来是给人看的,附带能在机器上运行。
这就是找出“不能说的话”的第一种方法:判断言论的真伪。
关注“异端邪说”,是找出“不能说的话”的第二种方法