【黑客】界有这么一本书,已经畅销了十四年,并且还在继续被人们追逐着、关注着。

这本书就是《黑客与画家》,它的作者是美国互联网界举足轻重、有“创业教父”之称的哈佛大学计算机博士 Paul Graham

这本书出版于2004年(英文版),其中不少文章写于2001年,查询了一下,中本版应该是2011年才有的。

14年过去了,为什么今天我们还要谈论这本书呢?

《黑客与画家》的译者阮一峰认为,这本书之所以依然能够吸引14年后的读者有两个原因:

第一,PaulGraham写的不是技术,而是技术背后的思想。就像数学一样,正确的思想是不会过时的。

第二,PaulGraham的着眼点是长远的未来,内容主要不是分析现状,更不是总结过去,而是展望未来,以未来指导现在。比如第11章《一百年后的编程语言》就是研究一百年后人们会怎么编程,从而推导到我们现在应该如何编程。

Paul Graham的语言也吸引着今天的人们继续关注这本书。

PaulGraham在 2001年,讨论到苹果与微软的PC之争时,认为 "苹果公司还没有失败,如果它能把iPod升级成手机,并且将网络浏览器包括在其中,那么微软公司就有大麻烦了。" 今天,我们已经共同见证了这一预言。更有魔力的是那些还没有实现的语言,比如,Lisp语言将成为主流。

Paul Graham看到了更完整和更遥远的世界,14年算什么呢?Paul Graham要和我们讨论的可是一百年后的编程语言啊!

关于这本书

这本书不仅是写给程序员和创业者的,更是写给普通读者的,作者最大的目的就是通过这本书让普通读者理解我们所处的计算机时代。而理解计算机的关键,则是要理解计算机背后的人。


“表面上这是一个机器的时代,但是实际上机器的设计者决定了我们的时代。程序员的审美决定了你看到的软件界面,程序员的爱好决定了你有什么样的软件可以使用。”

我们的时代是程序员主导的时代,而伟大的程序员就是黑客。本书就是帮助你了解黑客,只有这样,你才掌握了理解这个时代的钥匙!

《黑客与画家》共有15个主题内容:为什么书呆子不受欢迎、黑客与画家、不能说的话、良好的坏习惯、另一条路、如何创造财富、关注贫富分化、防止垃圾邮件的一种方法、设计者的品味、编程语言解析、一百年后的编程语言、拒绝平庸、书呆子的复仇、梦寐以求的编程语言、设计与研究。(有没有很酷啊,每一个主题都好想看!)

而在你开始之前,需要明白的是Paul Graham要让你掌握的这把钥匙——黑客,到底是一个什么样的群体。

黑客就是最优秀的程序员

《黑客与画家》中,“黑客”是指最优秀的程序员,而不是入侵计算机系统的人。比如,“开源运动”创始人埃里克·雷蒙德,微软公司创始人比尔·盖茨,他们都是真正意义上的黑客。

黑客相信,只要有助于改进现状、探索未知,人们就应该被允许自由地使用各种工具和信息。当一个黑客需要一样东西来帮助自己创造、探索或者改正某种设备时,他不会自找麻烦,不会接受那些财产专有权的荒谬概念。这就是黑客有时会入侵计算机系统的原因,他们的主要目的并不是侵犯别人的利益,这与那些计算机罪犯是不同的。

“只有传统意义上的黑客才能被称为hacker,而那些恶意入侵计算机系统的人应该被称为cracker(入侵者)。”这个观点已经在程序员社区中得到普通认同。然而在普通人的心中,黑客的形象几乎等同于“书呆子”,而“书呆子”并不是一个什么好的形容词。

为什么书呆子不受欢迎?

作者提出了一个很有价值的观点,“答案就是他们真的不想让自己受欢迎。”作者认为,书呆子在选择受欢迎和聪明中,果断选择了后者,他们的注意力不在社交上,而在其它地方。

电影《美丽心灵》(2001年)中的那个性格孤僻、不合群的男主角就是一个书呆子,这部电影是根据美国著名数学家John Nash的故事改编而成的。John Nash大学期间以行为古怪而闻名,30岁患上了严重的精神分裂症,但因其对博弈论的突出贡献在其66岁的时候获得1994年的诺贝尔经济学奖。

文艺复兴时期的代表人物Leon Battista Alberti有一句名言:“任何一种艺术,不管是否重要,如果你想要在该领域出类拔萃,就必须全身心投入。”

John Nashd的全身心投入让他赢得了诺贝尔学奖,同样地,那些被我们视为优秀的程序员——黑客,他们也付出了自己相当的精力和时间。

我想,作者在探讨书呆子成因和心理之外,也还在探讨那些具备“书呆子精神”的专注,正是这种专注,让一些人成就了自己,取得了让人称叹的成绩。

“当你所做的事情能产生真实的效果,那就不仅仅是好玩而已了,发现正确的答案就开始变得重要了,这正是书呆子的优势所在……书呆子并不是失败者。他们只是在玩一个不同的游戏,一个更接近于真实世界状况的游戏。成年人明白这一点。成功的成年人,几乎都声称自己在高中属于书呆子。”——John Nashd

黑客与画家

这本书的第二个主题就是【黑客与画家】,也正是本书的名字。那么,作者为什么要把黑客和画家放在一起呢?

PaulGraham说,“在我知道的所有行业中,黑客与画家最相像”。

1时间的考核

有时,黑客做的事情被称为“软件工程”(software engineering),但是Paul认为与其说优秀的软件设计师是工程师,不如说他们是建筑师。建筑师决定做什么,而工程师思考怎么做。

黑客真正想做的是设计优美的软件,但是是否具有“良好的设计感”,这是一个需要考核的问题。

Paul说,“人们无法考核你的工作,甚至误解你的工作,都不是最糟的事。更大的危险是你自己也会误解自己的工作。”

那么有效的考核是什么呢?作者认为是——时间。

"经过岁月的洗礼,优美的东西生存发展的机会更大,丑陋的东西往往会被淘汰。不幸的是,这种考核需要的时间可能比一个人的生命还要长。塞缪尔·约翰逊说过,人们对一个作家的评价,需要100年才能达成一致。你必须先等他的那些有影响力的朋友都死了,然后再等他的追随者都死了,才能对他有一个公正的评价。"

黑客编写的软件是需要时间的考核的,甚至,黑客所热爱的编程的命运本身也是在被时间考核着。

“一种新的媒介刚刚诞生的时候,人们热情髙涨、兴奋不已,短短几代人就探索清楚了这种媒介的大部分可能性,把它的能量发挥到极致。编程目前好像就处在这个阶段。

在达·芬奇的年代,绘画并不是一件很酷的事情,达·芬奇用自己的工作推动绘画成为一种伟大的表达方式。同样,编程到底能够有多酷,取决于我们能够用这种新媒介做出怎样的工作。”

2day job

黑客如何才能做自己喜欢的事情?

Paul认为这个问题的解决方法是——day job(“白天工作”),这是一个几乎所有创作者都指导的方法。画家和作家尤其如此。


“如果幸运的话,你能找到一份与你的“真正工作”非常相关的“白天工作”……钻研某种编程语言或操作系统的黑客,很可能会得到一份使用这些工具的“白天工作”。当我说,黑客解决生计问题的方法是找一份“白天工作”,然后在其余时间开发优美的软件,我并没有说这是一个新方法。开源软件界的黑客早就这样做了。我想说的其实是,幵源软件的这种工作模式可能就是正确的模式,因为它已经被其他领域的创作者都验证过了。”


3动手

黑客还能从画家身上学到的是——如何学习编程。

画家学习绘画的方法是动手画,黑客学习编程也理应如此。就像我们了解的那些厉害的黑客,他们并不是在大学期间才学习编程的。比如,前段时间和大家分享的“世界头号黑客”——凯文·米特尼克(点击即可阅读),在15岁时就破解北美空中防务指挥系统成功。可想而知,他的动手练习远远早于15岁。

“对于黑客来说,采取像画家这样的做法很有好处:应该定期地从头开始,而不要长年累月地在一个项目上不断工作,并且试图把所有的最新想法都以修订版的形式包括进去。”

4对美的狂热追求

黑客和画家一样,对美有着狂热的追求。Paul 就坦言,“看到代码前面的缩进乱七八糟,或者看到丑陋的变量名,都会把我逼疯的。”

“如果黑客只是一个负责实现领导意志的技术工人,职责就是根据规格说明书写出代码,那么他其实与一个挖水沟的工人是一样的,从这头挖到那头,仅此而已。但是,如果黑客是一个创作者,他从事的就不是机械性的工作,他必须具备灵感。

5合作

历史上很多伟大的艺术品都是多人合作的结果,当多个画家共同创作一幅作品时,每个人画的部分是不一样的。

同理,多人开发一个软件,就需要合作,而合作要注意不可“过头”,否则就没有人真正“拥有”某块代码,就会变成杂物间,无人管理。就像绘画合作那样,有人主画,有人辅助。


“正确的合作方法是将项目分割成严格定义的模块,每一个模块由一个人明确负责。模块与模块之间的接口经过精心设计,如果可能的话,最好把文档说明写得像编程语言规范那样清晰。”


6人

伟大的绘画作品都是画人的,因为人类总是对自身感兴趣的。比如《蒙娜丽莎》、《亚威农少女》、《伦勃朗63岁自画像》…..

就像绘画作品一样,大多数软件是为人类用户准备的。所以,黑客必须像画家一样,时刻考虑到用户的人性需要,这样才能做出伟大的产品。

Paul Graham说,眼下看来艺术家比黑客更酷,但是我们不应忘记,古时候绘画蓬勃发展的那些黄金年代,画家也不是像今天这样酷的。我们能够有把握说的就是,现在正是编程的黄金年代!

《黑客与画家》正在重塑的不只是程序员的看世界的方式,也在帮助每一个想要在未来游刃有余生活的人重新认识这个我们生活的时代。

如果你不再满足只是作为一个普通程序员,而想成为一个真正的黑客,你应该了解真正的黑客如何看待世界和思考问题。

或许你想获得在这个时代以及未来的关键(重要)钥匙,那么你应该了解去了解黑客到底是一个什么样的存在。

而这一切,Paul Graham早在14年前,甚至更早为你准备好了!

Live in the future, then build what's missing

——Paul Graham

 

来源:

  • 向着未来而生----《黑客与画家(精装本)》序言,阮一峰

  • 《黑客与画家》

- End -

     往期热门资讯:    

  • Stack Overflow首席大神,他回答了超过3万个问题

  • 双重认证 也不安全:Gmail、Yahoo mail 已被攻破!

  • 还怕Web 安全编程学不会?来这里,准没错!

  • 选择编程语言前需要知道的事

公众号ID:ikanxue

官方微博:看雪安全

商务合作:wsc@kanxue.com

他说,编程的黄金时代已到相关推荐

  1. 属于编程的黄金时代结束了吗?

    全文共2710字,预计学习时长7分钟 利奥·冯·克伦泽的<雅典卫城>印象画 如今,很多人只关注了Twitter或观看一场TEDx演讲,就能声称自己为未来主义者.不过,传奇的科技学习公司O' ...

  2. 谷歌旗下DeepMind开发出编程机器人,已达人类程序员平均水平!

    近期,世界著名的编程竞赛网站Codeforces发布了一篇名为<AlphaCode ( DeepMind) Solves Programming Problems on CodeForce> ...

  3. 蜜芽CEO刘楠:垂直电商黄金时代已落幕 坚定转型品牌之路

    雷递网 乐天 8月3日报道 7月初,蜜芽公示将关停app,引发行业广泛关注. 蜜芽创始人兼CEO刘楠于8月2日在线上召开的媒体会,并表示,蜜芽app已完成历史使命,蜜芽新的阶段将坚定品牌之路.&quo ...

  4. 【SoC FPGA学习】五、基于虚拟地址映射的 Linux 硬件编程,在已有工程上实现按键与LED的联动

    参考教程中的以下章节: 小知识点: hps_0.h 文件是qsys生成的FPGA侧外设 0xfc00 0000~0xffff ffff一共是0xffffffff - 0xfc000000 + 1 = ...

  5. 有奖征集活动系列—— iOS游戏编程之旅 已结束

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 为了帮助 ...

  6. iPhone 的黄金时代已结束!

    随着智能手机市场的变化,苹果逐渐失去了它的优势-- 作者 | Lance Ulanoff 译者 | 弯月 责编 | 仲培艺 出品 | CSDN(ID:CSDNnews) 以下为译文: 当有人问我苹果这 ...

  7. 学习笔记(1)stm32h743和ADXL355的SPI通信,基于cubeMX和keil5MDK平台,采用HAL库编程,代码已模块化处理

    今天是一个特别的日子,为什么呢?哈哈,因为从大四做毕业设计的时候,接触CSDN,到现在一整年了,终于创作了我的第一篇博客,内心难念有些激动! 首先声明,我不是嵌入式领域的技术大牛,只是普通的研一新生, ...

  8. 华为顶级网络工程师分享出这份TCP/IP网络编程笔记,已封神

    都说程序员工资高.待遇好, 2022 金九银十到了,你的小目标是 30K.40K,还是 16薪的 20K?作为一名 Java 开发工程师,当能力可以满足公司业务需求时,拿到超预期的 Offer 并不算 ...

  9. python从菜鸟到高手李宁pdf_尹成学院-Python从菜鸟到高手编程实战【已完结 28G】...

    带你步入 python 语言的殿堂,讲课生动风趣.深入浅出,全套视频内容充实,整个教程以 python语言为核心,完整精彩的演练了数据结构.算法.设计模式.数据库.大数据高并发检索.文件重定向.多线程 ...

  10. java面向对象程序设计编程题,已拿到offer

    蚂蚁金服(五面) 蚂蚁金服:一面 一面就做了一道算法题,要求两小时内完成,给了长度为N的有重复元素的数组,要求输出第10大的数.典型的TopK问题,快排算法搞定. 算法题要注意的是合法性校验.边界条件 ...

最新文章

  1. TCP和UDP应用场景
  2. R语言入门——ggplot2
  3. Newtonsoft.Json的简单使用
  4. ASP.NET MVC下的四种验证编程方式
  5. Maven精选系列--classifier元素妙用
  6. React开发(116):ant design search引入
  7. 一上来,就问原理,问上亿(MySQL)大表的索引优化,我的天...
  8. 还是觉得应该动手写点东西....
  9. 网友问有没有小米MIX 4 雷军的回应耐人寻味
  10. aspx 判断字符串是否为decimal_C++编程技巧: 如何判断输入是否为整型
  11. linux RAC 安装失败完全卸载
  12. 改完计算机名自动重启 vbs,ghost后自动修改IP和计算机名的VBS脚本
  13. 黑苹果hidp显示不清楚_bigsur 黑苹果开启HIDPI失败解决方法
  14. 以太坊区块链中的数据结构
  15. springboot集成ueditor百度富文本编辑器及上传图片到oss服务器
  16. umi封装request方法 ts版
  17. 用40元钱买苹果、西瓜和梨共100个,且三种水果都有。已知苹果0.4元一个,西瓜4元一个,梨0.2元一个。问可以买多少个?编程输出所有购买方案。
  18. 用邮箱发简历,主题怎么写,正文怎么写
  19. CSS 实战: Switch 按钮开关(checkbox 实现)
  20. C#利用Picturebox控件显示图片

热门文章

  1. Linux 切换用户
  2. opencv-Mat数据类型及位数总结
  3. [洛谷P2370]yyy2015c01的U盘
  4. 软件工程第一次作业(2)
  5. Android进阶笔记18:Android 获取Button的高度、宽度、坐标值
  6. 关于Xcode的一些方法-15-05-02
  7. Wave Arts Tube Saturator for Mac(电子管模拟效果器插件)
  8. 如何在Mac中使用预览应用合并PDF文件,Mac预览应用合并PDF文件?
  9. iOS底层探索之类的结构(上):ISA
  10. 已经被删除的PDF怎么用EasyRecovery恢复