黑客与画家摘录

来源:互联网 发布:mt4软件使用视频教程 编辑:程序博客网 时间:2024/05/29 09:07

作者:保罗.格雷厄姆

领域包括:哲学,计算机,艺术,绘画做了一个叫Viaweb的软件,然后买给雅虎后创立了YCombinator(简称YC)   \\早起针对大学生其实Y Combinator是一个编程术语,意思是创造其他函数的函数他的创业理念是:搭建原型  上线运营(别管bug) 收集反馈  调整产品  成长壮大强调快速发布产品,关注用户需求,创始人的素质,小团队

书籍缘由

不喜欢大企业,离开了所在公司,经常发表文章,本书就是文章的集合

书中的黑客

按照译者所说,黑客在本书的概念跟我们理解的不一样,书中的黑客是指有专研创新,勇于攻克难题,编程水平高的程序员,如Linux的创始人

观点1:编程语言

编程语言带表着程序员的思维,旅游网站Orbitz成功打入了竞争激烈的网络订房订票市场最主要的原因就是它使用了一种更好的编程语言

观点2:书呆子

书呆子与学校体系,社会体系的关系,人性中带有黑暗的部分,小孩子更是,因为不受成年人的待见,小孩子在学校创造出另外一个世界,里面有等级之分,有攻击与被攻击,欢迎与不受欢迎,当其他小孩子都在关注欢迎与等级的时候,书呆子就想着其他更远的事情,

观点3:黑客与画家

黑客应该被列入哪一个职业类型???科学家?数学家?但在作者看来,黑客应该是与画家,作家,建筑师想类似,都是从事创作型的工作,比如说建造师跟构造师是同一个单词,所以要学好编程就找跟其类似的学科研究其二:在于程序设计,大公司都把软件的设计交给一个委员会,而不是交给一个黑客,但黑客更像是一个创作者,更设计者工作,所以面试程序员的时候,主要关注的事情就是看他们在业余时间写了什么软件其三:画家在学习画画时,较好的学习方法就是临摹,相对与程序员来讲,更多的是去看优秀的源代码,而不是看他们的执行结果其三:画家在画画是是先画一个大概的画像,然后再去添加细节,同理,编程也应该如此,当细节累计到一定程度时就会出现质变其四:优秀的黑客还懂得换位思考,从用户的角度出发,软件的使用方式最好符合用户的直觉,别指望用户去读使用手册

观点4:不能说的话

不能说的话,作者在这一章主要提到几种不能说的话,其实这几种可以归纳为两种种,一种就是与主流观念相冲的话比如说,在文化大革命里,你总不能说出某些话来,说出来就是反动,但是主流价值观(流行)不一定是对,大多数情况下都是错误的,第二种就是与某个组织相冲的话,(注:这个组织一般都是不太强也不太弱,太强就不怕你说闲话,太弱就不能不让你不说话),比如说广电,在引入外国的电影的时候就会做‘处理’,再比如旧世纪的教会等等,如果你正好有这些不能说的话,那么作者的意见是,保持沉默,笑面相迎,远离人群,包持怀疑而且你有这些‘不能说的话’,就相当于你拥有某些独特的思想,而这些思想可以成就一些伟大的事业

观点3:关于创业

要想迅速积累财富,唯一的入口就是可量化,可扩大性,小团队就表示可量化,而高科技就代表可扩大性建议出售公司,管理公司跟创建公司不一样,出售可以确定百分百有收入,买家在意用户数量,换个角度来讲,要重视用户数量,这是一个重要的指标开发过程不能过长,要“过早优化”,从用户那得到反馈,要让顾客满意新技术是提供给所有人使用的,技术与使用者不能有太大差距,要满足用户的需求从经济学的角度来讲:创业公司就是让人加快工作的地方

观点4:关于设计

把品味说成个人偏好不正确,比如达芬奇的画和你女友画的画好的设计是简单的设计,能够更直接的反映出核心问题好的设计是永不过时的设计,就像数学的皆一样,千年过后还是美,直到被更好的取代好的设计是解决问题的设计,生活上的一些设计好的设计是启发性的设计,eg:蒙娜丽莎,引申到软件行业,就是可以给用户提供一些基本的模块,可以自由组合好的设计是有点趣味性的设计好的设计是艰苦的设计,但那是有益的艰苦,而不是无益的痛苦好的设计是对称的设计(重复对称和递归对称),使问题变得简洁好的设计是模仿大自然的设计(前提是达到了所要的条件)好的设计是一种再设计:引申到产品设计的更新好的设计是能够复制的设计:把事情作对比原创更重要,第一阶段:模仿,第二阶段:原创好的设计是奇特的设计:eg计算机的Lisp语言好的设计是大胆的设计:eg:爱因斯坦的相对论,不全面

总结:不要容忍丑陋的东西,其二要对某领域十分熟悉,优秀作品的秘诀就是:非常严格的品味,再加上实现这种品味的能力

功能应当决定形式:eg:鸟要飞翔,那么翅膀这形式不得不有,引申到开发来讲,如果开发艰难,那么形式分配的精力就少了
幽默性可以看做是一种力量的表现,拥有幽默感就代表你对厄运一笑了之
有时训练只是为了让身体养成下意识的反应,当面对难题时能更好的释放自己的直觉

观点5:关于编程

每个机器都有开关:比如说MP3的开机关机,下一首,暂停,等等;计算机也有自己的开关,那就是机器语言(二进制的0跟1)----》汇编语言(缺点:代码越多,越难避免bug)----》高级语言(优点:使程序更具有可植入性:比如:如果你是用汇编语言写的程序,那么你这程序只能在你的机器上运行,在别的机器上就运行不了,而高级语言就不一样)编译器:把高级语言转化为计算机识别的机器语言,先将整个程序全部翻译成机器语言,然后运行相对于编译器,还有一个是解析器解析器:将代码解析成相应的机器语言,然后一行行运行

开发源码

编译器处理的高级语言代码又叫源码,经过翻译的机器码就叫做目标码开源软件:公开源代码的软件

编程语言的选择

抽象性:C语言是一种低层次语言,很接近硬件,几乎可称课移植的汇编语言(速度快)        而Lisp语言的层次则相当高

静态语言:写代码时必须知道每个变量的类型

动态语言:可以把变量设置成任意类型的值

编程语言的文艺复兴,新语言的诞生

竞争中的语言选择

选择适合的语言可以快速开发产品,降低开发成本eg:Lisp,在商业竞争中使用Lisp会带来优势如果不考虑其他因素的情况下,你不选择最强大的语言那你就是SB作者在创业期间,对于了解竞争对手,有自己的一套,先是看看对方有没有试用版,然后就是比如说通过对手的招聘信息,招聘那个方面的人才用什么编程语言

业界的经理

不懂技术的经理(管理人员会顺从媒体上的意见,要求使用主流的语言,并认为语言都是差不多的)但是各种编程语言的编程能力是不相同的,(比如新语言的诞生为了解决某些语言的不足)编程语言现在的发展不过刚刚赶上了1958年Lisp语言的水平,简单来说:编程语言的本质上不是一种技术,而是数学Lisp语言的特别之处:9种新思想不常用的语言(Lisp语言)也会有风险

衡量语言编程能力的最简单方法可能就是看代码数量:

语言的编程能力越大,写出来的程序就越短

总结:想要在软件业脱颖而出,就用强大的语言解决最难的问题,等待其他竞争对手经理随波逐流

关于黑客

在计算估计工业的历史上,新技术往往是由外部人员开发的,而且所占的比例可能要高于内部人员eg:沃兹尼亚克在IBM外开发苹果一代人们惊恐失措时采取的措施到头来产生了适得其反的效果
1 0
原创粉丝点击