为什么书呆子不受欢迎
为什么书呆子不受欢迎,因为他们的心思在别的地方
校园生活的真正问题是空虚
黑客与画家
编程语言首要的特性应该是容许·允许动态扩展
我们需要的是一种可以随意涂抹、擦擦改改的语言
创作者不同于科学家
真正竞争软件设计的战场是新兴领域的市场,这里还没有人建立过防御工事
找一份养家糊口的“白天工作” day work
过早优化、过早设计可能是一件危险的事情,不要过早决定一个程序应该怎么做
所有那些看不见的细节合并在一起,就使得这样东西产生了惊人的效果,放佛上千个细微的声音都以同一个音调在歌唱
心理周期
正确的合作方法是将项目分割成严格定义的模块,每一个模块由一个人明确负责。模块与模块之间的接口经过精心设计,文档说明写得像编程语言规范那样清晰
程序是写给人看的,附带能在机器上运行
不能说的话
自由思考比畅所欲言更重要
受思维时代的局限,判断正误比感知影响难得多;于是大众往往以影响的大小作为正误的辨别标准
你想要清晰的思考,就要远离人群
另一条路
互联网软件与桌面软件最显著的区别就是,前者不是一个单独的代码块。它是许多不同种类程序的集合,而不是一个单独的二进制文件。设计桌面软件像设计一幢大楼,而设计互联网软件就像设计一座城市;不仅要设计建筑,还要设计道路、警察局、制定城市规划
向一个项目增加人手,往往会托慢项目进程。随着参与人数的增加,人与人之间需要的沟通成本呈指数增长。
如何创造财富
财富!=金钱;财富可创造
全球财富是多和增长的;财富增长与贫富差拉大
5%的coder写出了99%的优秀软件
衡量工作:可测量性和可放大性
为竞争对手设置技术壁垒——选择hard option
贫富分化
如今人们互相隔离的趋势,主要是教育层次的差别,而不是财富的差别
技术在加大收入差距的同时,缩短了大部分的其他差距
技术使生产率的差异急速扩大
防止垃圾邮件的另一种方法
设计者的品味
简单
对于数学公里来说,少即是多
表面的装饰掩盖内部的空虚
#
幽默是强壮的一种表现
模仿大自然
编程语言解析
安全带还是手铐
静态语言和动态语言之争
一百年后的编程语言
编程语言就像生物物种一样,存在一个进化的脉络
冗余的代码会导致更多的冗余代码
那些内核最小、最干净的编程语言才会存在于进化的主干上
编程语言的进化速度更像数学符号的进化速度
如果我们把一种语言的内核设想为一些基本公里的集合,那么仅仅为了提高效率就往内核添加多余的公里,却没有带来表达能力的提升,这肯定是一件很糟的事情
正确的做法应该是将语言的语义和语言的实现语义分离
面向对象没有为优秀程序员带来很多好处,但它对大公司有不可抗拒的吸引力。——可持续开发,通过不断打补丁,将软件一步一步壮大
代码效率与机器性能的差距正在不断加大
当你一心把程序写的简洁,更短……
拒绝平庸
唯一洞悉所有语言优劣的人必然是懂得最强大的那种语言的人
LISP代码由LISP数据对象构成
书呆子的复仇
LISP设计源泉——语言的基础是他的一种理论演算,他想用更简洁的方式定义图灵机
因为这种语言本质上不是一种技术,而是数学
强大的编程语言如何写出更短的程序
- 自下而上,先构建一种自己的语言
- 然后基于后者开发
- 不同语言的编程能力不一样
- 大多数经理故意忽视第一点
编程能力决定了优雅程度
解决一个困难的问题--》
- 使用一种编程语言
- 为这个难题写一个事实上的编译器
- 或者你自己变成这个难题的编译器——设计模式?
当我在自己的程序中发现模式,我觉得表明某个地方出错了
梦寐以求的编程语言
只有当一种语言是某个系统的脚本语言时,它才能真正成为编程语言
一种优秀的编程语言应该既整洁又混乱。
- 整洁——设计清楚,内核由不多的运算符组成,易于理解
- 混乱指,允许玩家自由使用
一次性程序 @构建自己的语言
编程时提高代码运行速度的关键是使用好的性能分析器
它鼓励你参与他的设计,给你提供与语言创造者平等的权力
设计与研究
士气是设计的关键因素……如果你觉得画某样东西很乏味,那么你画出来的东西就会真的很乏味
士气也可以解释为什么很难为低端用户设计出优秀产品。因为优秀设计的前提是你自己必须喜欢这种产品