黑客与画家
黑客与画家
Duokan Reading Notes
黑客与画家
【美】Paul Graham/著 阮一峰/译
2014-07-22 08:38:24
文艺复兴时期的代表人物阿尔伯蒂有一句名言:“任何一种艺术,不管是否重要,如果你想要在该领域出类拔萃,就必须全身心投入。”
注: 专注的力量
2014-07-22 08:45:44
《蝇王》
2014-07-22 22:11:30
表面上,学校的使命是教育儿童。事实上,学校的真正目的是把儿童都关在同一个地方,以便大人们白天可以腾出手来把事情做完。
注: 学校的真正意义
2014-07-22 22:16:05
文艺复兴时期的学徒是整天劳碌的牧羊狗,而今天的青少年则是神经兮兮、供人玩耍的哈巴狗。他们的疯狂源于到处都是一片可怕的无聊
注: 到出了青少年的真正
2014-07-22 22:19:05
最好的情况下,那些事情也不过是遥远的将来我们可能从事的实际工作的练习。它所面向的目标是如此遥远,以至于当时我们都不知道自己练习这些到底是为了干什么。更常见的情况是,那些事情不过是一系列随意设置的绳圈,你被要求一个个跳过去。你在学习中遇到的文字都是专为考试而设计的,目的就是为了出题,而不是为了讲清楚问题。(南北战争的三个主要原因是……等到考试的时候,就会有一道题:请列出南北战争的三个主要原
2014-07-22 22:19:29
逃离这种空虚生活的唯一方法,就是向它屈服。
2014-07-22 22:21:11
以前的青少年似乎也更尊敬成年人,因为成年人都是看得见的专家,会传授他们所要学习的技能。如今的大多数青少年,对他们的家长在遥远的办公室所从事的工作几乎一无所知。他们看不到学校作业与未来走上社会后从事的工作有何联系(实际上,还是有那么一点点联系)。
2014-07-22 22:26:33
在真实世界中形成的团体,一般来说,都存在某个共同目标,团体的领导者往往由最善于实现目标的人担任
2014-07-22 22:32:11
宫廷中的等级关系就完全是另一回事了。这种类型的团体贬低了每一个成员的人格
2014-07-22 22:38:38
校园生活的两大恐怖之处——残忍和无聊——也是出于同样的原因。
2014-07-22 23:36:20
那是因为你对成年人不再具有经济价值(与工业社会以前的时期相比),所以他们把你扔在学校里,一关就是好几年,根本没有真正的事情可做
2014-07-22 23:47:57
黑客搞懂“计算理论”(theory of computation)的必要性,与画家搞懂颜料化学成分的必要性差不多大。
2014-07-22 23:50:25
你把整个程序想清楚的时间点,应该是在编写代码的同时,而不是在编写代码之前,这与作家、画家和建筑师的做法完全一样。
2014-07-22 23:55:20
大学和实验室强迫黑客成为科学家,企业强迫黑客成为工程师。
2014-07-23 00:01:54
大公司为了避免设计上的灾难,选择了减少设计结果的标准差
注: 大公司设计的产品只要不是太差,利润就不是问题
2014-07-23 00:03:29
开发优秀软件的方法之一就是自己创业。
2014-07-23 00:05:19
会遇到两个问题。一个是自己开公司的话,必须处理许许多多与开发软件完全无关的事情。
注: 创业遇到两个问题
2014-07-23 00:05:45
创业的另一个问题是赚钱的软件往往不是好玩的软件,两者的重叠度不高。
注: 第二个问题
2014-07-23 00:09:05
“白天工作”的意思是,你有一份为了赚钱的工作,还有一份为了爱好的工作。
注: day job
2014-07-23 00:13:51
如果你不爱一件事,你不可能把它做得真正优秀,要是你很热爱编程,你就不可避免地会开发你自己的项目
注: 爱她就要抽时间干她
2014-07-23 08:29:59
开源运动最鲜为人知的优点之一,就是使得学习编程变得更容易了
2014-07-23 08:34:08
坚持一丝不苟,就能取得优秀的成果。
2014-07-23 08:39:19
判断一个人是否具备“换位思考”的能力有一个好方法,那就是看他怎样向没有技术背景的人解释技术问题
2014-07-23 08:41:21
《计算机程序的结构与解释》一书的卷首语:
程序写出来是给人看的,附带能在机器上运行。
2014-07-24 08:37:47
well-adjusted
2014-07-24 08:48:51
因为过去与现在之间的变化往往不是因为对错,而是因为社会观念变了
2014-07-25 00:20:24
为什么要去找出“不能说的话”
2014-07-25 00:28:49
训练自己去想那些不能想的事情,你获得的好处会超过所得到的想法本身。
2014-07-25 01:02:05
如果你能“远远地”跳出传统思维,提出让别人一听就脑袋轰一声炸开的惊人观点,那么你就在“小小地”跳出传统思维方面不会有任何困难。要知道,人们把后面的这种情况称为“创新”。
注: 找出不能说的话,小心的提出,谓之创新
2014-07-25 01:06:08
与笨蛋辩论,你也会变成笨蛋。
注: 不要变成笨蛋
2014-07-25 01:09:27
“搏击俱乐部”的第一条规则,就是不要提到搏击俱乐部
2014-07-25 08:54:42
讨论一个观点会产生更多的观点,不讨论就什么观点也没有
2014-07-26 10:21:29
所谓“流行”(传统观念也是一种流行),本质上就是自己看不见自己的样子。否则就不会有流行了。对于那些被流行抓住的人,流行就不再是流行,而是应该要做的正确事情
注: 流行的本质
2014-07-26 12:16:20
如果你想要清晰地思考,就必须远离人群。但是走得越远,你的处境就会越困难,受到的阻力也会越大,因为你没有迎合社会习俗,而是一步步地与它背道而驰
2014-07-26 12:30:17
某些年轻程序员注意到了知名黑客的怪癖,就会模仿,好使自己显得更聪明。这种装出来的不服从再加上故作姿态挑毛病的态度,不仅仅令人恼火,而且实际上会延缓创新的进程。
注: 工作中身边就有这样的人,可以找找
2014-07-27 22:35:56
保证Unix系统安全的关键之一就是不运行那些不需要的东西,降低服务器被侵入的可能性。
2014-07-27 22:48:27
质量监控人员(Quality Assurance
注: 质量监控人员—QA的全称
2014-07-27 22:58:48
互联网软件的发布规则是:它运行不了,你就无法发布;一旦它能运行了,你就可以立刻发布。
注: 有bug,不要紧,不影响主体功能运行就可以发布,但是如果涉及明确日期的优惠活动,快到期活动有大bug,主体又可以运行又如何呢?
2014-07-27 23:12:00
早一点发现bug就不容易形成复合式bug,也就是互相影响的两个bug。
注: 复合式bug是最难发现的,也是最危险的bug之一
2014-07-27 23:14:43
传统的方法是:“把软件彻底拆开,将所有bug统统清理干净。”这样做难免产生一大堆的复合式bug。
注: 有些bug可能被解决了,会让软件出现更严重的bug
2014-07-27 23:44:45
如果你想致富,应该怎么做?我认为最好的办法就是自己创业,或者加入创业公司。几百年来,这一直是致富的可靠途径
2014-08-15 21:16:20
远端上的一点。这里有一个守恒定律:如果你想赚100万美元,就不得不忍受相当于100万美元的痛苦。比如,你终生
2014-08-15 21:17:10
如果创业那么轻松,那么所有人就都去创业了
2014-07-29 00:49:57
公司不过是一群人在一起工作,共同做出某种人们需要的东西。真正重要的是做出人们需要的东西,而不是加入某个公司。
2014-08-16 10:00:55
程序员全力开发一个崭新的软件,要比让他常规地维护和更新一个现有的软件能创造更多价值,这等于开辟了一个新的收入来源
2014-07-29 00:54:51
要致富,你需要两样东西:可测量性和可放大性。
2014-07-29 00:55:43
如果你有一个令你感到安全的工作,你是不会致富的,因为没有危险,就几乎等于没有可放大性。
2014-07-29 08:33:25
你听说过Philo Farnsworth这个人吗?他是电视机的发明者,可是没有人知道他,因为他的公司没有从电视机上面赚到钱。赚到钱的公司是RCA,发明电视机给Philo Farnsworth带来的后果就是一场长达10年的专利诉讼。
注: 专利壁垒
2014-07-29 08:38:28
财富就是人们需要的东西,如果没人使用你的软件,可能不是因为你的推广活动很失败,而是因为你没有做出人们需要的东西。
2014-07-29 08:38:46
你必须时刻牢记的最基本的原则就是,创造人们需要的东西,也就是创造财富
9 设计者的品味
2014-08-04 22:25:46
专家的做法是先完成一个早期原型,然后提出修改计划,最后把早期原型扔掉。
注: 这就是专家
2014-08-04 22:28:49
犯错误是很正常的事情。你不要把犯错看成灾难,要勇于承认、勇于改正
2014-08-04 22:30:13
好设计是能够复制的设计
2014-08-04 22:37:02
你最后发展出来的风格是自然而然形成的
2014-08-04 22:42:20
好设计常常是大胆的设计
2014-08-04 22:43:01
今天的实验性错误就是明天的新理论
2014-08-04 22:45:13
优秀作品的秘诀就是:非常严格的品味,再加上实现这种品味的能力。
11 一百年后的编程语言
2014-09-16 23:02:12
对于大多数程序,速度不是最关键的因素,所以你通常不需要费心考虑这种硬件层面上的微观管理。随着计算机速度越来越快,这一点已经越发明显了。
2014-09-16 22:59:01
essay(论文)这个词来自法语的动词essayer,意思是“试试看”。从这个原始意义来说,论文就是你写一篇文章,试着搞清楚某件事。软件也是如此
2014-09-16 23:00:25
一百年后的程序员最需要的编程语言就是可以让你毫不费力地写出程序第一版的编程语言,哪怕它的效率低下得惊人(至少按我们今天的眼光来看是如此)。他们会说,他们想要的就是很容易上手的编程语言。
效率低下的软件并不等于很烂的软件。一种让程序员做无用功的语言才真正称得上很烂。浪费程序员的时间而不是浪费机器的时间才是真正的无效率。随着计算机速度越来越快,这会变得越来越明显。
2014-09-16 23:05:35
另一种消耗硬件性能的方法就是,在应用软件与硬件之间设置很多的软件层。这也是我们已经看到的一种趋势,许多新兴的语言就被编译成字节码。比尔·伍兹曾经对我说,根据经验判断,每增加一个解释层,软件的运行速度就会慢一个数量级。但是,多余的软件层可以让编程灵活起来。
注: java语言就是此类
2014-09-16 23:10:23
面向对象编程使得你有办法对一团乱码似的代码进行可持续性开发。通过不断地打补丁,它让你将软件一步步做大。大公司总是倾向于采用这样的方式开发软件。
注: 这也是大公司青睐它的原因
2014-09-16 23:16:50
代码效率与机器性能的差距正在不断加大,我们将会越来越清楚地看到,应用软件运行速度提升的关键在于有一个好的性能分析器帮助指导程序开发。
注: 很遗憾,我写的代码从来没有用过效率分析器
2014-09-16 23:21:49
你应该写什么程序?随便什么,只要能让你最省力地写出来就行。但是要注意,这必须是在你的思维没有被当前使用的编程语言影响的情况下。这种影响无处不在,必须很努力才能克服。你也许觉得,对于人类这样懒惰的生物,喜欢用最省力的方式写程序是再自然不过的事情。但是事实上,我们的思想可能往往会受限于某种现存的语言,只采用在这种语言看来更简单的形式,它对我们思想的束缚作用会大得令人震惊。新语言必须靠你自己去发现,不能依靠那些让你自然而然就沉下去的思维定势。
注: 不要只使用一种语言
2014-09-16 23:22:30
设计语言的正确做法就变成了,看着一段程序,然后问自己是不是能把它写得更短一点?
12 拒绝平庸
2014-09-16 23:26:36
Lisp很值得学习。你掌握它以后,会感到它给你带来的极大启发。这会大大提高你的编程水平,使你成为一个更好的程序员。尽管在实际工作中极少会用到Lisp。
2014-09-16 23:41:45
到了一定年龄之后,程序员极少主动更换自己的编程语言。不管习惯使用的是哪一种语言,他们往往认为这种语言已经足够好了。
2014-09-16 23:48:16
技术的变化速度通常是很快的。但是,编程语言不一样,与其说它是技术,还不如说是程序员的思考模式。编程语言是技术和宗教的混合物。
13 书呆子的复仇
2014-09-16 23:58:05
年,约翰·麦卡锡第一个提出了Lisp语言。我认为,当前最流行的编程语言不过只是实现了他在1958年的想法而已。
注: 看来swift语言也模仿了lisp
2014-09-17 00:02:59
的硬件联系在一起,而是应该把它与快速排序(Quicksort)算法进行类比。这种算法是1960年提出的,至今仍然是最快的通用排序方法。
2014-09-17 08:52:20
衡量语言的编程能力的最简单方法可能就是看代码数量
14 梦寐以求的编程语言
2014-09-20 23:19:05
种语言必须是某一个流行的计算机系统的脚本语言(scripting language),才会变得流行
2014-09-20 23:22:17
Perl就赢在它具有操作字符串的巨大函数库。
2014-09-20 23:25:19
著名散文家E.B.怀特说过,“最好的文字来自不停的修改”。所有优秀作家都知道这一点,它对软件开发也适用。设计一样东西,最重要的一点就是要经常“再设计”,编程尤其如此,再多的修改都不过分
注: 优秀的软件从来不是设计出来的
15 设计与研究
2014-09-20 23:26:50
艺术的各个领域有着巨大的差别,但是我觉得任何一个领域的最佳作品都不可能由对用户言听计从的人做出来。
2014-09-20 23:27:16
有一句话说“顾客永远是对的”,这是指评价优秀设计的标准是看它能够多大程度上满足用户的需求。
2014-09-20 23:31:36
“弱即是强”(Worse is Better)模式。
2014-09-20 23:51:01
做出原型,再逐步加工做出成品,这种方式有利于鼓舞士气,因为它使得你随时都可以看到工作的成效。
2014-09-20 23:52:34
“画作永远没有完工的一天,你只是不再画下去而已。”这种情况对于第一线的程序员真是再熟悉不过了。
多看笔记 来自多看阅读 for Kindle
duokanbookid:25215787c0574dab9e69a48fa8ea616b

