【软件工程】《黑客与画家》书摘
计算机世界里发生了什么?黑客在计算机世界里是什么样的角色?
保罗·格雷厄姆的创业公式=搭建原型+上线运营(别管bug)+收集反馈+调整产品+成长壮大
黑客伦理:
- 使用计算机以及所有帮助于了解这个世界本质的事物都不应受到任何限制。任何事情都应该亲手尝试
- 所有信息应该都是自由的
- 不信任权威,提倡去中心化
- 判断一名黑客的水平应该看到他的技术能力,而不是看他的学历、年龄或地位等其它标准
- 你可以用计算机创造美术和艺术
- 计算机使生活更美好
黑客的成长和世界观
- 为什么书呆子不受欢迎,因为他们的心思在别的地方。
- 真实世界的关键并非在于它是由成年人组成的,而在于它的庞大规模使得你做的每件事都能产生真正意义上的的效果。
- 黑客也是创作者,与画家、建筑师、作家一样。
- 画家学习绘画的方法主要是动手去画,而黑客通过实践学习编程;
- 画家通过临摹大师作品学习,黑客可以通过观看优秀的程序学会编程;
- 绘画是逐步完成的,先是草图再逐步填细节,黑客也是如此;
- 多个画家共同创作一幅画的时候,每个人画的部分都是不一样的,这也是很多人开发一个软件的正确模式;
- 就像绘画作品一样,大多数软件是为人类用户准备的。
- “不能说的话”:
- 找出“不能说的话”
- 判断言论的真伪
- 关注异端邪说
- 回顾过去与现在的时空差异
- 寻找一本正经的卫道者在捍卫什么
- 观察禁忌如何产生
- 为什么这样做:优秀作品往往来自于其他人忽视的想法,而最被人忽视的想法就是那些被禁止的观点。
- 如何应对:自由思考比畅所欲言更重要,更好的回答是“我还没想好”,永远保持质疑。
- 找出“不能说的话”
- 不服从管教,是黑客成为优秀程序员最重要的原因之一。黑客的成功秘诀就是打破常规。
黑客的成果和影响
- 下一个潮流——互联网软件,互联网软件与桌面软件最显著的区别就是,前者不是一个单独的代码块。
- 致富最好的办法就是自己创业,或者加入创业公司。要致富,你需要两样东西:可测量性和可放大性。
- 小团体=可测量性。团队越小,每个人的工作成绩越容易衡量;团队越大,每个人的贡献就越接近于整体的平均值。
- 高科技=可放大性。回顾历史,大多数因为创造财富而发财的人都是通过开发新技术而实现的。
- 创业的潜规则
- 很多事情由不得你;
- 付出与回报虽然总体上是成比例的,但是个体上是不成比例的。
- 技术在加大收入差距的同时,缩小了大部分的其它差距。一个社会需要富人,主要不是因为你需要富人的支出创造就业机会,二是因为他们在致富过程做出的事情。
- 过滤垃圾邮件是可以做到的,基于内容的过滤器将发挥作用。单独来看,“贝叶斯过滤”是最有效的工具;使用不同方法越多,综合效果就越好。
- 优秀的设计原则:
- 好设计是简单的设计;
- 好设计是永不过时的设计;
- 好设计是解决主要问题的设计;
- 好设计是启发性的设计;
- 好设计通常是有点趣味性的设计;
- 好设计是艰苦的设计;
- 好设计是看似容易的设计;
- 好设计是对称的设计:重复性对称和递归性对称;
- 好设计是模仿大自然的设计;
- 好设计是一种再设计;
- 好设计是成批出现的;
- 好设计是大胆的设计。
黑客文化的基础和核心
- 编译器——先将整个程序全部翻译成机器语言,然后再运行;
- 解释器——实时地将代码解释为相应地机器语言,然后一行行运行。
- 编程语言存在一个进化的脉络,我们需要思考,在整个进化过程中某一种语言的位置到底在哪里,从而启发我们去尽可能选择那些靠近主干的语言,这样对当前的编程最有利。编程语言的进化与生物学进化地区别在于不同分支地语言会发生聚合。那些内核最小、最干净的编程语言才会存在于进化的主干上。
- 你的对手与你一样,能用任何想用的语言编写互联网软件。
- 不同语言地编程能力是不一样的。跟随大多数人选择的做法——“业界最佳实践”——实际上不会让你变成最佳,只会让你变得很平常。在高科技行业,只有失败者采用“业界最佳实践”。
- 一种好的编程语言,是可以让黑客可以随心所欲使用的语言。语言流行的因素:
- 必须是某一个流行的计算机系统的脚本语言,有一种免费的实现,有一本相关的书籍和在线文档,有大量优秀的范例可供学习;
- 语言干净简练,具有最高层次的抽象性,抽象程度高,而且容易装备;
- 可编程性,既整洁又混乱:“整洁”——设计清楚,内核由数量不多的运算符构成,这些运算符易于理解,每一个都有很完整的独立用途;“混乱”——允许黑客以自己的方式使用;
- 其它:较快的运行速度;经受住时间的考验;经常“再设计”。
- 研究必须是“新”的,而设计必须是“好”的。