保罗-格拉汉姆(PaulGraham),Viaweb创始人(后被Yahoo收购,本文很多内容来源于创建viaweb时的事迹)、YCombinator投资公司创始人,硅谷创业教父。他似乎以前学过艺术、学过绘画,从事技术开发后,思想上与艺术创作共通了,这两点也的确有相似之处,本书是他的文章合辑,零零散散,不过精华甚多,可以分部分精读,哲学意义浓厚。读的时候只是摘了些内容,做了相应的思考。
第一章到第四章 讲述了黑客眼中的世界
也许很多黑客从小都被当成书呆子,但是这也许是他们的心思在别处(技术),而不是刻意去迎合潮流,这些所谓的潮流、变动的东西,黑客们都不在乎,他们关注永恒不变的真理,对技术的热爱异于常人。
黑客是创作者,与画家、建筑师、作家一样,以代码为工具,展示他们的才华,在比特世界里“构建”着“建筑”。
不能说的话,作者提出了一个问题:如果你的想法是社会无法忍受的?你该怎么办? 根据所处的环境,根据所面对的人,不同场景下也许应该表现的不同。我们每个人也许都有某些“大逆不道”的想法,而黑客们更是这样的人,是憋在心里只对自己说,还是适时选择时机和对象倾诉呢?考验你的情商的时候到了。
良好的坏习惯,某些习惯的好坏受社会整体风气的影响,而黑客常常是打破常规的那一批人,观念、规则在黑客严重都是随时可以打破的,如今的“坏习惯”可能就变成今后的标准,今后的潮流。
第五章到第七章 互联网与财富
创业教父在十几年前的视角,就看出了互联网软件是今后最大的机会,这一观点也基本延续至今,看看如今一个app就创业的时代(当然不止是表面一个app那么简单),不得不佩服其超前的眼光。
创造财富,为自己,也为社会,最好的方式绝对不是在公司里工作,即使这个公司再好,也有其效率低下的问题,肯定会受到组织的局限,所以最好的方式就是创业,今天“全民创业”其根本根源也是如此,只不过这些群体中家夹杂着太多浑水摸鱼之辈,一场狂潮才变成了闹剧和寒冬。
收入分配不均,作者觉得政府或者媒体常常夸大了这一现象的危害,如果把时间线拉长,那么如今的社会这一现象显然已经很不明显了,我们普通人用iphone,那些富豪也许也用iphone,物质层面也许并没有古代那么大了(当然从这一维度切入思考的合理性,并不一定正确)
第八章 关于防范垃圾邮件的技术讨论
读完后印象不深,记得是用贝叶斯判别相关的概率统计模型来过滤。。。后面的公式有点儿多,没有坚持看完。。。
第九章 什么是好的设计?
1.简单的设计 2.永不过时的设计 3.解决问题的设计 4.启发性的设计 5.有点趣味性的设计 6.艰苦的设计 7.看上去容易的设计 8.对称的设计 9.模仿大自然的设计 10.一种再设计 11.能够复制的设计 12.奇特的设计 13.成批出现 14.大胆的设计 非常严格的品味,再加上实现这种品味的能力
第十章 编程语言的战争
编译器、解释器,静态还是动态?面对对象还是面对过程?
第十一章 一百年后的编程语言
效率不是问题(由于计算速度的提升),灵活更重要,相比浪费机器时间,浪费程序猿的时间才是真正的无效率。
数据结构的扁平化(淘汰字符串),应用软件与硬件之间设置很多软件层(如java的字节码,中间层代码),自下而上的开发(可重用性),性能分析愈加重要
第十二章 拒绝平庸
创业公司考虑用哪一种语言,建立技术优势(lisp语言建立的竞争障碍); 不要被某一种语言的思维所局限;编程语言的宗教性质(不要轻易比较它们之间的差距)。
第十三章 书呆子的复仇
语言本质上不上一种技术,而是数学(lisp)。
lisp为什么很特别?1.条件结构(if-then-else);2.函数也是一种数据类型;3.递归;4.变量的动态类型;5.垃圾回收机制;6.程序由表达式组成;7.符号类型;8.代码使用符号和常量组成的树形表示法(解析树);9.不真正区分读取期、编译期和运行期;
大部分项目都没有苛刻的条件限制(竞争性的需求),因此没有很大的必要选择最强大的语言;
使用一种不常见的语言可能出现的问题及解答:
1.可能无法很好的与使用其他语言写的程序协同工作;
答:软件从桌面端到服务器端迁移,使用某一种语言的限制将越来越少
2.可能找不到很多函数库;
答:根据开发的条件限制,决定是选择函数库重要还是语言本身的能力重要
3.可能不容易雇到程序员
答:强大的语言会减少所需要开发人员的数量
千万不要取悦风投或潜在并购方,赢得用户才是一切。
语言的选择意味着开发的速度,意味着市场的竞争地位
第十四章 梦寐以求的编程语言
专家级黑客的看法(类似KOL),一定程度上决定了一种语言的流行程度,而流行本身又会使得这种优秀的语言更加优秀;
编程语言不是存在于真空之中,黑客一般都是为某个系统编程;现实中,编程语言总是与它们依附的系统联系在一起的。不但需要有好的语法规则,还需要一个好的实现。
简洁性,高度抽象。可编程性,尽可能少的限制。函数库将会越来越重要。
时间:新事物需要时间的考验,早期的一小批使用者比其他因素更能促进技术发展(类似优质种子用户);自然成长式的技术优于大爆炸式(创业公司、产品亦然如此)。
再设计,乐观主义与怀疑倾向并重,你必须对解决难题保持乐观,同时对当前解法的合理性保持怀疑。 接口垂直化。
第十五章 设计与研究
优秀的设计不一定是“新”的,但一定是“好”的;优秀的研究不一定是“好”的,但一定是“新”的。
两者会交叉,只有应用“新”的创意和理论,才会诞生超越前人的最佳设计。
“用户需要的设计”而不是“用户要求的设计”,设计师并不像厨师一样,不要对用户言听计从,用户不了解所有可能的选择,也经常弄错自己真正想要的东西,设计师需要像医生一样,找出病因,针对“病因”进行治疗。 一定是目标用户。
怎么理解编程语言?不要把它看成已经完成的表达方式,而应该把它理解成促进程序从无到有的一种媒介。最后写出来的程序就像已经完成的数学证明一样,是一颗精心修剪的树木,上面杂乱滋生的树杈都已经被剪去了。需要看程序从无到有的那条完成路径是否漂亮。
贴近用户,永远站在用户的角度调整自己的构想。“弱即是强”的思想(也即:少即是多)。在艺术领域也是如此,绘画时用几根线快速绘出轮廓,然后逐步加工。