《黑客与画家》摘抄 您所在的位置:网站首页 graham翻译 《黑客与画家》摘抄

《黑客与画家》摘抄

2023-09-04 05:10| 来源: 网络整理| 查看: 265

20180106 author: Paul Graham

翻译:阮一峰(lisp,田春校译)

image.png

《黑客与画家》这本书名声在外,且不说作者的声望,就连译者的博客,也经常是我攫取知识的宝贵渠道,了解世界的瞭望窗口。而如果能够早五年遇到这本书的话,也许我真的会被作者洗脑,放下书本就去学Lisp了。

Lisp语言不太了解,只是知道它和传统的c语言有两个完全不同的发展方向。有一次听少华说Lisp中对宏的运用,能够让编程更加得心应手。而我所学的java当中并没有关于宏的知识,所以就将c中对宏的运用代入了解,但是明显感觉c中的宏和Lisp中的是两种完全不同的概念。

书中不仅介绍了一些技术方面的知识,也介绍了一些生活中的所思所感。有对书呆子在成长中的困惑来讨论社会教育问题的,也有以过来人的身份对创业者提出了若干建议,比如一个创业项目的成败与否关键在于最开始的那五个人,以及在面临创业用到的技术选择时,一定要选择难的技术,这样才能设置进入壁垒等。当然里面对于创造财富的总结,以及对贫富差距的认识,也刷新了我的一些陈旧观念。更重要的是让我明白了“黑客与画家”其实是一种人,他们都是创作者,精益求精,一丝不苟。

总的来说,收获不少。

0:前言

创业唯一的门槛就是勇气。

程序猿的审美决定了你看到的软件界面。程序猿的爱好决定了你有什么软件可以使用。

黑客:好玩,高智商,探索精神。

计算机程序只是文本而已。你选择了什么语言,决定了你能说什么话。编程语言就是程序猿的思维方式。

1:为什么书呆子不受欢迎

阿尔伯蒂:任何一种艺术,不管是否重要,如果你想要在该领域出类拔萃,就必须全身心投入。

书呆子不受欢迎因为他们脑子里想的是别的事情。

11岁之前,孩子的生活由家长主导,其他孩子对他造成的影响有限。11岁之后,会在同伴中开辟一个新世界,并认为那个世界才是重要的。

《蝇王》中描述一群孩子在荒岛为了生存,分成两派,相互残杀的故事。

在一个人产生良知之前,折磨就是一种娱乐。比如扯掉一条蜘蛛腿。青少年在很大程度上,还没有摆脱儿童状态,所以很多人都会残酷对待他人。

一群孩子成群结伴欺负你,不是因为你做错了什么,而是这一伙人需要找一件事情做。而这群人往往是中间的焦虑层。

成人世界之所以不欺负书呆子,是因为书呆子在这里产生了足够的意义。而在学校,所做所想皆无意义,一切问题都来自于在学校的空虚。过去的社会中,青少年扮演找学徒,助手,是一种积极的角色,或者是成人社会的低级成员,人们通过传递知识带来荣誉。如今的社会根本不接受青少年,青少年进入社会,只会给父母造成困扰,影响工作效率,因此关在学校是个不错的选择。

对于一段美好时光的逝去。我错过的绝不仅仅只是几本书而已。

2:黑客与画家

程序猿在大公司是技工,职责就是将产品经理的构想翻译成代码。

黑客的出发点是原创,最终得到一个优美的结果。科学家的出发点是别人优美的结果,最终得到原创性。

开源运动让编程更容易。

黑客和画家这样的创作者,有些工作需要投入巨大的热情,另一些工作则是不需要很操心的日常琐事。在你厌倦的时候再去做哪些比较容易的工作。

换位思考,现实中意味着你要做其他人需要的事情,而不是自己想做的事情。实际上,这并不意味着你要做自我牺牲。比如了解对手正是为了打败他。

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

3:不能说的话

流行一时的不仅有衣服,还有道德观念。任何一个年代的人们,都会对一些荒诞的东西深信不疑。那么如何判断哪些话是不能说的呢?

大庭广众之下,有没有什么观点不愿意说出口?在思想的过程中,是否会添加上社会需要的因素? 对一些存疑的言论,多想一下有没有可能是真的? 贴上时代标签(性别歧视,制造分裂等),在人们还没有来得及思考之前,就被抹杀掉的言论。 对比古今中外观念的差异。 观察卫道者到底在捍卫什么。

我们向孩子灌输圣诞老人的神话,到底是为了孩子,还是为了自己?

流行思想观念第一批接受者总是带有很强的抱负心,自觉的精英意识,有意将自己与普通人区分开来。当流行趋势确定之后,第二批接受者将会更加庞大,而他们是受到恐惧心的驱使来接受流行思想,不是因为想要与众不同,而是因为他们害怕与众不同。

不受传统观念束缚的人,往往也不会穿流行的衣服。

与笨蛋辩论,也会让你变成笨蛋。为了能够让你可以自由思考下去,最好的方式,是守口如瓶,笑脸相迎。在心里无所不想,但是不一定要说出来。格斗俱乐部的第一条规则,就是不要谈论格斗俱乐部。除非和自己真正的好友。当狂热分子引诱你不得不表态的时候,可以说,既不赞成,也不反对。最好是说我还没有想好。笑脸相迎的方式有攻击元标签,隐喻,和幽默。狂热分子最缺乏幽默感。

流行(包括一些传统),本质上就是自己看不见自己的样子。让要想看清楚自己的样子,就要远离人群。时间就是一种简单产生距离的方法。新的流行就会让旧的流行更容易被察觉。

4:良好的坏习惯

不服管教

5:另一条路

部分软件从桌面消失是不可避免的,它们将会被转移到服务器上,而电脑上的软件,一个浏览器就足够了。

你的电脑这个概念正慢慢成为过去,取而代之的是你的数据。终端设备不应该存储数据,它们应该像电话那样。

设计一个桌面软件就像设计一栋大楼,而设计互联网软件就像设计一座城市。

阅读互联网软件代码,非常流畅自如,不会像侦探破案那样冥思苦想,而是像飞行员那样,瞄一眼仪表板,就对飞行状况胸有成竹。

将一个构思束之高阁,不仅意味着延迟它的实现,还意味着延迟所有在实现过程中激发的构思。计划只是将构思束之高阁的另一种表达方式。只要想到好的构思,我们就立刻着手实现。所以,我们没有任何计划。

如果你想把钱藏在安全的地方,是藏在家中床垫下面,还是放在银行?

销售员必须面对消费者,程序猿必须面对竞争对手的软件,但是内部系统管理员就像老年单身汉,能够激励他的外部压力几乎没有。

互联网软件创业公司相对大公司来说,更具有人员优势,这一点体现在大公司可以雇佣到平庸的人做艰苦的事,也可以雇佣到能干的人做轻松的事,但是无法雇用非常能干的人做非常艰苦的事情,因为这样的人只会为自己的公司工作。

关于创业,管理和竞争都是没有通电的篱笆。

如果你不打算自己动手设计和开发,那就不要创业。 比尔盖茨害怕你,因为1975年,上一次发布软件的新方式出现时(个人pc出现,之前是大型机),他也曾跟你一样白手起家。

6:如何创造财富

创业公司startup这个词诞生于20世纪60年代,但是它与中世纪集资进行航海冒险活动相差无几。创业是一个压缩过程,不再是低强度工作四十年,而是极限强度工作四年。

文稿校对人员每十五分钟被打断一次,工作效率也不会有太大的损失,但是黑客每一个小时被打断一次,就会大大影响效率。

目前存在的最大手工艺人群体就是程序猿。在程序猿眼中,财富就是他们通过一行一行代码做出来的。当然程序猿之间创造财富的速率存在巨大的差异。我们这个世界,你向下沉沦或者向上奋进都取决于你自己。

公司存在的目的就是满足人们的某种需要。真正重要的是做出人们需要的东西,而不是加入某个公司。

任何一个通过自身努力而致富的个人,在他们身上都有可测量性和可放大性。没有危险,就几乎没有可放大性。高科技约等于可放大性。创业的成败取决于最早加入公司的那十个人。

小团队天生就适合解决技术难题。小团队和正规军在市场上较量,小团队应该进入深山沼泽,这样利于自由游击,一旦进入大平原,就会被全歼。因此设置进入壁垒(vc),避免技术被复制就非常重要。一开始就选择较难的那一个问题,此后的各种决策都选择较难的那个选项。

用户数量是判断公司好坏的指标。不要过早优化,尽快拿出1.0版,然后根据用户的反映而不是自己的猜测进行软件优化。premature optimization。

厨师炒糊了一道菜,只会对一个顾客造成影响。软件做错了一件事,则对所有用户造成影响。可放大性。

7:关注贫富分化

孩子们接触到钱的方式不对,对他们产生了错误的财富观念。他们以为财富是从父母的口袋里流出来的,而不是创造出来的。每个人因为技能不同,导致收入不同,这才是贫富分化的主要原因。

财富通过创造的形式被人们接受,而不是掠夺和贪污,发生在工业革命时代。

贫富分化并不一定就是坏事,关键是绝对的贫穷,还是相对的贫穷。相对的贫穷,那么富人在创造财富的过程中,也会提高贫穷的生活水平。

8:防止垃圾邮件的一种方法

贝叶斯过滤

9:设计者的品味

人类的思想就是没有经过整理的无数杂念的混合。

好设计就是简单的设计。美依赖于一些精心选择的结构性元素,而非表面装饰品的堆砌。当你被迫把东西做得很简单时,你就被迫直接面对真正的问题。

好设计是用不过时的设计。如果解决方法是丑陋的,那就肯定还有更好的解决方式,只是还没有发现而已。

好设计是解决主要问题的设计。物理学的主要难题一度是如何诠释经典著作,后来逐渐变成对可观测行为进行预测,这一转变使得物理学发展迅速。

好设计是启发性设计。软件开发提供基本模块,就像乐高积木一样,随心所欲的组合。

好设计有时是一种有趣的设计。幽默感是强壮的一种表现,始终保持幽默感代表你对厄运一笑了之。充满自信的人就像燕子一样,以一种居高临下的姿态轻盈的看待周围一切。

好设计是一种艰苦的设计。人们往往觉得野生动物非常优美,原因就是他们的生活非常艰苦,在外形上不可能有多余的部分。

好设计是看似容易的设计。练习的作用也许就是将刻意为之变成一种自觉,下意识行为。

好设计是一种对称的设计。对称分两种:重复性对称和递归性对称。

好设计是模仿大自然的设计。

好设计是一种再设计。反复修改,或者推倒重做。

好设计是能够复制的设计。把事情做对比原创更重要。

好设计常常是奇特的设计。唯一达到奇特的方式,就是追求做出最好的作品,然后再回头来看。

好设计是成批出现的。推动人才成批涌现的最大因素就是让有天赋的人聚在一起,共同解决某个难题。互相激励比天赋更重要。

好设计是大胆的设计。只有在成为某个领域的专家之后,你才会听到心里有一个细微的声音在说,“这样解决太糟糕了!一定有更好的选择。”

10:编程语言解析

从机器语言到高级语言,再到开放源码,人们集思广益让软件更加得心应手,让bug变得更少。而不同的语言之争,以及对象与过程之争,让人们从底层走向了抽象层,走向了编程语言的文艺复兴。

11:一百年后的编程语言

找到编程语言进化的主干。 一种语言的内核设计的越小,越干净,它的生命力就越强。因为一种垃圾会产生更多的垃圾。语言只是一种书写法,而程序则是一种养严格符合规则的描述,以书面形式记录计算机应该如何解决问题。所以编程语言的进化更像数学符号的进化。

浪费程序猿的时间而不是浪费机器的时间才是真正的无效率。一百年后的程序猿最需要的编程语言就是可以让你毫不费力写出程序第一版的编程语言,尽管它可能运行的很慢。

如果你自己做不到,那就去当老师。 一百年后并行计算并不会流行,除了在个别领域。 面向对象编程,对于大公司的面条代码非常有用。因为它可以让软件不断积累发展壮大。

12:拒绝平庸

埃里克雷蒙德在《How to Become a Hacker》中提到:新手应该从python和java入门;高级一点就应该学习c和perl;对于要以黑客作为人生目标的人,那就学习lisp。

拉丁语无助于找工作,但是能训练你的思维,更好地运用母语写作。

选择使用哪一种技术的时候,你不能考虑别人的想法,只能考虑什么样的技术能最好地完成工作。

lisp没有得到广泛应用的原因,因为编程语言不仅仅是技术,也是一种习惯性思维,非常难于改变。

没有macro,编程语言如何编程?lisp代码由lisp数据对象构成。其他语言的源代码一般由字符组成,字符串是主要数据类型之一。

通过招聘职位描述观察竞争对手。

13:书呆子的复仇

当你按照java,perl,python,ruby这样的顺序观察这些语言,你会发现排在越靠后的语言,越像lisp。

1958年麦卡锡提出了lisp。lisp本质上不是一种技术,而是数学。lisp和fortran是编程语言发展的两个方向。前者基础是数学,后者是硬件架构。

lisp九种新思想:

条件结构 函数也是数据类型 递归 变量的动态类型 垃圾回收机制 程序由表达式组成 符号类型 代码使用符号和常量组成的树形表示法 无论什么时候,整个语言都是可用的。

使用一种不常用的语言:可能无法与其他语言程序协同工作,可能找不到一些函数库,可能不容易雇佣到程序猿。

业界最佳实践:跟随大多数的步伐。

模式就是人肉编译器。

14:梦寐以求的编程语言

一种语言必须是某一个流行的计算机系统的脚本语言才会变得流行。c之于unix,fortran和cobol之于imb大型机,vb之于windows,lisp之于emacs,java和js之于浏览器。

只要是计算机能够自己推断出来的事情,都应该让计算机自己去推断。

优秀程序员会突破设计者提供给用户的外部语义层,试着控制某些高级抽象语言的内部接口。

黑客语言总是稍微带一点放纵不羁的个性,整洁而又混乱。整洁表现的是设计的很清楚,内核由为数不多的运算符构成,易于理解。混乱是可以按自己的方式自由使用。

未来的函数库应该像语言的内核一样精心设计,优秀的函数库重要性将超过语言本身。

帕金森定律:工作总是到最后一刻才会完成。

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

你必须对解决问题的能力保持乐观,对当前解法保持怀疑。

发展用户就像是一种优化过程,明智的做法是放慢速度。

15:设计与研究

你干什么工作?我正在设计一种lisp语言的新方言。

c/lisp/smalltalk是设计者为了自己使用,java/cobol/ada则是为了给别人使用。

评价一种程序的优劣不能简单滴看最后的程序是否表达地特别漂亮,而是看程序从无到有的那条完成路径是否美丽。

软件设计两种思想:弱即是强,懂得放弃,及时拿出成品,听取用户意见。另一种万福玛丽亚,经过漫长的酝酿等待,爆炸式隆重登场。后者多半是自毁前程。

先做出原型,再逐步加工做出成品,这种方式有利于鼓舞士气,因为它使得你随时可以看到工作的成效。

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

自上而下编程:要求你把编程任务分解成一个个更小的单元。

自下而上编程:先开发最底下的层,然后用底层所定义的语言开发上一层。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有