《黑客与画家》阅读笔记

(本人正在参加2015博客之星评选,诚邀你来投票,谢谢:http://vote.blog.csdn.net/blogstar2015/candidate?username=zhouzxi)

(今天看了池建强老师的文章《再读黑客与画家(一)》,想到自己之前也写过有关这本书的文章,遂贴出来,各位看官慢慢品尝!)

在很多人的印象中,黑客是一群非常神秘的、编程技术非常高超的人,他们可以随心所欲地操纵计算机、盗取别人电脑上面的资料。而画家无非是一群以画画为生或对画画有着很浓厚的兴趣的人。那么,黑客与画家有什么关联呢?这两者是否能够相提并论呢?《黑客与画家》一书为我们带来了答案。

该书的作者是被誉为“硅谷创业之父”的Paul Graham,他与朋友在1995年开发了世界上第一个互联网应用软件Viaweb,并于1998年以4900万美元的价格卖给了Yahoo!。他将自己的思考写成一系列文章,于2004年结集为《黑客与画家》一书出版。

本书一共有15章,内容涉及编程、软件、创业、财富、设计、研究等。全书观点新奇而犀利,文笔流畅,逻辑清晰,可供IT及相关行业的从业人员和爱好者细细阅读。

阅读完全书之后,作者的以下几个观点给我留下了深刻的印象:

第一,程序写出来是给人看的,附带能在机器上运行。

之前,我在CSDN的“畅言”栏目上发表过一篇文章《首先为人编写程序,其次才是计算机》(http://www.csdn.net/article/2014-08-14/2821193),文中提到“只有易读、易维护的软件代码才具有生命力”。我的想法与作者的观点类似。也就是说,我们编写程序的时候,要遵从项目组约定好的编程规范,不能想怎么写就怎么写。我们写出来的程序,要让别人能够很快读懂,这样也有利于软件版本的演进及维护。

第二,正确的合作方法是将项目分割成严格定义的模块,每一个模块由一个人明确负责。

在一般的研发项目(包括本人所在的项目)中,都是按照这种方法来分配任务的。先将一个大的系统分成很多个小的子系统(子系统也许还会再分成更小的子系统),再将子系统分割成功能较为独立的模块,将每个模块分发给不同的开发人员来完成。在遇到问题的时候,直接找对应模块的开发人员就可以了。这种方法可以确保每一个模块都有人负责,且大家的任务不会重叠,同时也有利于模块的集成。

第三,大多数优秀的设计关注用户,并且以用户为中心。

在互联网时代(甚至是移动互联网时代),大部分的软件产品都是因用户的需求而生,都是以用户为中心进行设计和开发的。用户有上网购物的欲望,于是淘宝和京东便起来了;用户有随时随地聊天的必要,于是微信和陌陌便产生了;用户有偶尔表现自己的想法,于是微博也崛起了。在未来,只有关注用户,为用户解决实际问题的产品才会具有生命力。

《黑客与画家》一书字字珠玑,处处闪烁着智慧的光芒。如果你关注IT行业、关注未来、关注创业、关注财富,那么你一定能够从这本书中受益。

附:《黑客与画家》经典语句

第1章 为什么书呆子不受欢迎

1.“书呆子”的目标具有两重性。他们毫无疑问想让自己受欢迎,但是他们更愿意让自己聪明。

2.真实世界的特点是,它极其庞大。如果总体足够大,即使是人数最少的少数派,只要聚集在一起,也能产生可观的力量。

3.几乎在任何团体中都存在等级关系。

第2章 黑客与画家

1.黑客的最高境界是创造规格。

2.容易实施的考核总是首先被采用。

3.编程语言是用来帮助思考程序的,而不是用来表达你已经想好的程序。

4.应该定期地从头开始,而不要长年累月地在一个项目上不断工作,并且试图把所有的最新想法都以修订版的形式包括进去。

5.不要太早决定一个程序应该怎么做。

6.坚持一丝不苟,就能取得优秀的成果。

7.正确的合作方法是将项目分割成严格定义的模块,每一个模块由一个人明确负责。

8.从他人的角度思考问题正是成功的奥秘所在。

9.程序写出来是给人看的,附带能在机器上运行。

第3章 不能说的话

1.一个好的科学家,并不仅仅是避开传统观点,还要努力打破传统观点。

2.自由思考比畅所欲言更重要。

第4章 良好的坏习惯

1.很自负的人必须培养出敏锐的感觉,及时发现周围情势的变化,知道怎样才能脱身。

第5章 另一条路

1.如果互联网软件能够击败桌面软件,一定是赢在更方便这一优势上。

2.互联网软件带来的最大变化之一,就是软件发布方式的改变。

3.实现某个构思,会带来更多的构思。

4.管理企业做到两点:做出用户喜欢的产品,保证开支小于收入。

第6章 如何创造财富

1.创造有价值的东西就是创造财富。

2.公司一切行为的目的都是盈利,从而生存下去。

3.要致富,需要两样东西:可测量性和可放大性。

4.创造人们需要的东西,也就是创造财富。

5.只要懂得藏富于民,国家就会变得强大。

第7章 关注贫富分化

1.财富与金钱是两个概念。

2.一旦通过创造财富而使致富成为可能,社会从整体上就会快速地变得更富有。

3.技术无法使其变得更便宜的唯一东西,就是品牌。

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

1.在所有对抗垃圾邮件的方法之中,我认为单独来看,“贝叶斯过滤”是最有效的工具。

第9章 设计者的品味

1.好设计是简单的设计。

2.好设计是永不过时的设计。

3.好设计是解决主要问题的设计。

4.好设计是启发性的设计。

5.好设计通常是有点趣味性的设计。

6.好设计是艰苦的设计。

7.好设计是看似容易的设计。

8.好设计是对称的设计。

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

10.好设计是一种再设计。

11.好设计是能够复制的设计。

12.好设计常常是奇特的设计。

13.好设计是成批出现的。

14.好设计常常是大胆的设计。

第10章 编程语言解析

1.编译器处理的高级语言代码又叫做源码,它经过翻译以后产生的机器码就叫做目标码。

第11章 一百年后的编程语言

1.一种语言的内核设计得越小、越干净,它的生命力就越顽强。

2.新语言更多地以开源项目的形式出现。

第12章 拒绝平庸

1.编程语言的特点之一就是它会使得大多数使用它的人满足于现状,不想改用其它语言。

第13章 书呆子的复仇

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

2.代码的数量很重要,因为开发一个程序所耗费的时间主要取决于程序的长度。

第14章 梦寐以求的编程语言

1.简洁性最重要的方面就是要使得语言更抽象。

2.开发大型程序的一个方法就是从一次性程序开始,然后不断地改进。

3.任何措施,只要能让“再设计”周而复始地进行下去,就都是可取的。

第15章 设计与研究

1.大多数优秀的设计关注用户,并且以用户为中心。

2.士气是设计的关键因素。

原文链接:http://www.zhouzhaoxiong.com/425.html

时间: 2024-12-12 09:23:39

《黑客与画家》阅读笔记的相关文章

《The C Programing Language》阅读笔记

<The C Programing Language> 要理解一种程序语言,而不仅仅只是会使用它. -----我的心声 介绍部分: 作者 C语言设计者 Kernighan  Ritchie  标准C语言及其程序设计方法 应用级编程两个主流语言 C++  Java 都建立于C的语法和基本结构上 现在世界上许多软件都是C语言及其衍生的各种语言的基础上开发出来的. C在传播中,肯定会有变化和进展,88年 ANSI(美国国家标准协会) 为C语言指定了一个精确的标准.即ANSI C. 自C诞生之后,C悄

CI框架源码阅读笔记4 引导文件CodeIgniter.php

到了这里,终于进入CI框架的核心了.既然是"引导"文件,那么就是对用户的请求.参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位.例如,用户的请求url: http://you.host.com/usr/reg 经过引导文件,实际上会交给Application中的UsrController控制器的reg方法去处理. 这之中,CodeIgniter.php做了哪些工作?我们一步步来看. 1.    导入预定义常量.框架环境初始化 之前的一篇博客(CI框架源码阅读笔记2 一切的入

javascript高级程序设计阅读笔记(一)

javascript高级程序设计阅读笔记(一) 工作之余开发些web应用作为兴趣,在交互方面需要掌握javascript和css.HTML5等技术,因此读书笔记是必要的. javascript简介 JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能. 文档对象模型 DOM doc

论文《Chinese Poetry Generation with Recurrent Neural Network》阅读笔记

这篇文章是论文'Chinese Poetry Generation with Recurrent Neural Network'的阅读笔记,这篇论文2014年发表在EMNLP. ABSTRACT 这篇论文提出了一个基于RNN的中国古诗生成模型. PROPOSED METHOD 第一句的生成 第一句的生成是规则式的. 先自定义几个keywords,然后通过<诗学含英>(这是清朝人编写的)扩展出更多的相关短语.然后生成所有满足格式约束(主要是音调方面的)的句子,接下来用一个语言模型排个序,找到最好

《构建之法阅读笔记02》

这次主要对<构建之法>的第四章“两人合作”作一次阅读笔记. 首先是代码规范问题. 我过去对于代码规范问题并没有做到注意.在编程中,许多变量和函数的命名都非常的简单而没有实际的意义.而且编程时不注意对齐缩进.很多时候也不加注释,导致对这些简单的变量名称不熟悉. 这样做会使得很多人读代码费劲,甚至是自己都要花时间再次阅读懂自己的代码.而且很多没必要的注释也会使得注释失去意义.当自己再次在原基础上编程时,可能要重新编程等问题. 因此,通过阅读“代码规范”,我找到一些解决方法.代码的风格要简明.易读.

《代码阅读方法与实践》阅读笔记之二

时间过得真快,一转眼,10天就过去了,感觉上次写阅读笔记的场景仿佛还历历在目.<代码阅读方法与实践>这本书真的很难写笔记,本来我看这本书的名字还以为书里大概写的都是些代码阅读的简易方法,心想着这就好写笔记了,没想到竟然好多都是我们之前学过的东西,这倒让我有点无从下手了.大概像我们这些还没有太多经历的大学生,总是习惯于尽量避免自己的工作量,总是试图找到一些完成事情的捷径吧.总之,尽管我不想承认,但我自己心里很清楚,我就是这种人.下面开始言归正传,说说接下来的几章内容归纳. 这本书在前面已经分析了

《大道至简》阅读笔记1

<大道至简>阅读笔记1 不知不觉间看完了第一章,从这个章节里我看到了一些我们都明白可是却自己很难做到的道理. 书中从愚公移山的故事和编程相结合给出了编程的精义就是顺序.分支.循环,这些都是我们所熟悉的,也是老师在教学中耳提面命的,可是我们又有几个人能做到呢. 我们总是在找着各种各样的学不好学不会理由,“它太难了”,“我太笨了”,认真的想一想难道真的是它太难了或者是自己太笨了么?不,答案是否定的,追根究底是懒惰,是没能坚持.从根本上来说,不存在会不会写程序的问题,除了先天智障和后天懒惰者,这要你

CI框架源码阅读笔记3 全局函数Common.php

从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap引导文件都会最先引入全局函数,以便于之后的处理工作). 打开Common.php中,第一行代码就非常诡异: if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 上一篇(CI框架源码阅读笔记2 一切的入口 index

构建之法阅读笔记05

2017.5.20 今天阅读的是<构建之法>第8章需求分析的阅读笔记,我们如果要开始做一个软件,最先要进行的就是需求分析,我们应该充分的了解我们这个软件是否具有前景,我们为用户提供的服务是不是用户所需要的,这一章详细的叙述了如何进行需求分析. 首先是获取和引导需求,我们应该找到软件的利益相关者,了解挖掘他们对软件的需求,引导他们表达出真实的需求.然后分析和定义需求,对各个方面的需求进行规整,定义需求内涵,从各个角度将需求量化,然后估计实现这些需求所需要的时间和资源,确定各个需求的优先级.紧接着

《构建之法》阅读笔记(2)

<构件之法>阅读笔记2 看了前面两章,我感觉我现阶段距离一个程序员还很远,软件工程师更是遥不可及.在学校的我学习了很多,如c++,数据结构,面向对象--学的多而不精,纵观现在我就是一个盲目学习的学生,上课时认真听了课后却没有花更多的时间去研究,遇到不懂的容易掉价死胡同,总是花很多时间闷闷思考,不到最后都没有去请教同学,去百度.看着其他很厉害的同学,自己就只能在一旁羡慕嫉妒恨.那现在在怎么样才能将自己对编程的兴趣提高,加强自己的编程思想?提高自己的价值?能够尽早地迈进程序员.软件工程师的行列之中