《黑客与画家》阅读笔记

  1. 1. 为什么书呆子不受欢迎
  2. 2. 黑客与画家
  3. 3. 不能说的话
  4. 4. 另一条路
  5. 5. 如何创造财富
  6. 6. 关注贫富分化
  7. 7. 防止垃圾邮件的一种方法
  8. 8. **一百年后的编程语言
  9. 9. 书呆子的复仇
  10. 10. 梦寐以求的编程语言

为什么书呆子不受欢迎


在一个人产生良知之前,折磨就是一种娱乐。

老师很像监狱的狱卒。


书呆子已经在思考的东西,正是真实世界看重的东西。他们与别人不一样,不把所有时间用来玩一种耗尽全力但又毫无意义的游戏。

学校的真正目的是把儿童都关在同一个地方,一遍大人们白天可以腾出手来把事情做完。

问题是:1.不告诉他们这一点;2.把这监狱的大部分交给犯人来管理。

文艺复兴时期的学徒是整天劳碌的牧羊犬,而今天的青少年则是神经兮兮、供人玩耍的哈巴狗。他们的疯狂缘于到处都是一片可怕的无聊。

校园生活的两大恐怖之处:残忍和无聊。

黑客与画家


编程语言是用来帮助思考程序的,而不是用来表达你已经想好的程序。

作者认识的黑客,没有一个喜欢用静态类型语言编程。“众所周知的ECMAScript(JavaScript)便是一个动态语言。除此之外如Ruby、Python等也都属于动态语言,而C、C++等语言则不属于动态语言。


科学界的每一个人,暗地里都相信数学家比自己聪明。黑客应该认识到自己与其他创作者——比如作家和画家——是一类人,不应该是这样。

大公司为了避免设计上的灾难,选择了减少设计结果的标准差。但是当你排斥差异的时候,你不仅将失败的可能性排除在外,也将获得高利润的可能性排除在外。

赚钱的软件往往不是好玩的软件,其需求量比不上解决客户麻烦问题的软件。

微软不鼓励雇员为开源项目做贡献。

判断一个人是否具备“换位思考”的能力:看他怎样像没有技术背景的人解释技术问题。

《计算机程序的构造和解释》 9.5 程序写出来是给人看的,附带能在机器上运行。

不能说的话

大庭广众之下,你又没有什么观点不愿意说出口?(1.这些话不能说出口;2.它们是正确的)

家长和孩子对于脏话相互在对方面前演戏。

大多数成年人故意让孩子对世界有一个错误的认识(圣诞老人)。

道德禁忌的最大制造者是那些权力斗争中略占上风的一方。这一方有实力推行禁忌,同时又软弱到需要禁忌保护自己的利益。

带动流行的两种力量之中,恐惧心比抱负心有力得多。

想要做出优秀的作品,你需要一个什么问题都能思考的大脑。尤其是那些似乎不应该思考的问题,你的大脑也要养成思考他们的习惯。

搏击俱乐部的第一条规则:不要提到搏击俱乐部。

不赞同这个时代的任何一种歇斯底里,但是又不明确告诉别人到底不赞同哪一种歇斯底里。





## *良好的习惯



一个人们拥有言论自由和行动自由的社会,往往最有可能采纳最优方案,而不是采纳最有权势的人提出的方案。专制国家会变成腐败国家,腐败国家会变成贫穷国家,贫穷国家会变成弱小国家。经济学里有一条拉弗曲线:随着税率的上升,税收收入会先增加后减少。随着对公民自由的限制不断上升,政府的力量会先增加后减小。

另一条路

“你的电脑”这个概念正慢慢成为过去时,取而代之的是“你的数据”。

用户的胜利:安全,方便

代码之城:模块、语言

软件发布:一旦能运行,就可以立刻发布

软件bug:数量少,处理周期少

客户支持:客服人员与黑客在一起

全身心投入:构思链

逆向的《人月神话》 8.5:人数越来越少,开发效率将指数式增长

布鲁克斯假说程序员一天写出的代码行数是一个常量,与他用的什么语言无关。

关注用户:前所未有地了解用户行为

金钱问题:没有盗版(是优势,也是问题),易于销售

目标客户:安全,外包(公司内部所有不直接感受到竞争压力的部门都应该外包出去,让它们暴露在竞争压力之下)

桌面电脑:平台无关

创业公司:行动迅速,不太正式,人数少,资金有限。因为你能做到,所以你必须做到(逆向的帕金森定律)。用户的压力变小,程序猿的压力变大

为什么不尝试一下?:1.作出用户喜欢的产品;2.保证开支小于收入

如何创造财富

目前还存在的最大的手工艺人群体是程序猿。

最顶尖的5%的程序猿写出来全世界99%的优秀软件。

任何一个通过自身努力而致富的人,在他们身上因该都能同时发现可测量性和可放大性。

可测量性:小团体

可放大性:高科技。选择公司要解决什么问题应该以问题的难度为指引,而且此后的各种决策都应该以此为原则。(barriers to entry)

创造人们需要的东西,就是创造财富。

从经济学观点看什么是创业公司:可以让人更快速工作的地方。

关注贫富分化

反对财富分配不均声音最大的人当中,很多人都少有创造财富的经验。

费边社主张通过渐进温和的改良主义方式来走向社会主义,而非透过马克思主义所主张的阶级革命,并强调通过教育的途径让权力回到知识精英的手中。

奥卡姆剃刀他在《箴言书注》2卷15题说“切勿浪费较多东西,去做‘用较少的东西,同样可以做好的事情’。”

积累财富最常见的方法其实是偷窃。游牧社会是偷别人的牲口,农业社会是征税(和平时期)和直接掠夺(战争时期)。

技术会引起收入差距的扩大,但是会缩小物质或社会地位等其它差距。但是教育的漏洞任然存在。

现代社会的收入差距扩大是一种健康的信号。

你要避免的是绝对贫穷,而不是相对贫穷。

防止垃圾邮件的一种方法

贝叶斯方法






## *设计者的品味


丑陋的数学在世界上无法生存。

我们大多数人从还提时代起就被鼓励不要去分析清楚自己的头脑。

好设计是简单的设计。

好设计是解决主要问题的设计。

好设计是启发式的设计。

好设计通畅是有点趣味性的设计。

好设计是艰苦的设计。

好设计是看似容易的设计。

好设计是对称的设计。

好设计是模仿大自然的设计。(遗传算法

好设计是一种再设计。先完成一个早期原型,然后提出修改计划,最后把早期原型扔掉。

好设计是能够复制的设计。

好设计通常是奇特的设计。

好设计是成批出现的。

好设计通常是大胆的设计。

**一百年后的编程语言

**

一种语言的内核设计得越小、越干净,它的生命力就越顽强。

编程预言的进化速度更像数学符号的进化速度,是缓慢的渐变式变化。

正确的做法应该是将语言的语义与实现予以分离。在语义上不需要同时存在列表和字符串,单单列表就够了。而在实现上做好编译器优化,使它在必要时把字符串作为连续字节的形式处理。

essay(论文)这个词来自法语的动词 essayer,意思是“试试看”。

一百年后的编程语言在理论上今天就能设计出来。

学习开车的时候,一个需要记住的原则就是要把车开支,不是通过将车身对齐画在地上的分割线,而是通过瞄准远处的某个点。

*

书呆子的复仇

Lisp 语言的9种新思想:



1. 条件结构
2. 函数也是一种数据类型
3. 递归
4. 变量的动态类型
5. 垃圾回收机制
6. 程序由表达式组成
7. 符号类型
8. 代码使用符号和常量组成的树形表示法
9. 无论什么时候,整个语言都是可用的。(读取期,编译期和运行期)
blub paradox:程序员的思想往往会受到自己正在使用的语言的束缚,不相信还存在更强大的语言。

业界最佳实践:这个词出现的原因其实就是为了让你的经理可以推卸责任。

格林斯潘第十定律:任何C或Fortran程序复杂到一定程度之后,都会包含一个临时开发的、只有一半功能的、不完全符合规格的、到处都是bug的、运行速度很慢的Common Lisp实现。
总共23种设计模式中,有16种在Lisp语言中“本身就提供,或者被大大简化”。

梦寐以求的编程语言

一心让臣民行善的暴君可能是最专制的暴君。

帕金森定律只要还有时间,工作就会不断扩展,直到用完所有的时间。

人们真正注意到你的时候,不是第一眼看到你站在那里,而是发现过了这么久你居然还在那里。

一方面,你要像初生牛犊一样,对自己的能力信心万丈;另一方面,你又要像历尽沧桑的老人一样,对自己的能力抱着怀疑态度。(千难万险只等闲?早岁哪只世事艰?)

C、Lisp、Smalltalk 是为设计者自己使用而设计的,而Cobol、Ada 和 Java 则是为了给别人使用而设计的。C++ 呢?

不要把编程语言看成那些已完成的程序的表达方式,而应该把它理解成促进程序从无到有的一种媒介。

弱既是强:相比那些体积庞大、功能全面、较难上手的软件,一种功能有限但易于使用的软件可能对用户有更大的吸引力。



画作永远没有完工的一天,你只是不再画下去而已。

《黑客与画家》 全文手录