一、何谓黑客?
黑客,在我们大多数普通人眼里,就是入侵计算机的人,通常还与干坏事挂钩。而书中告诉我们,这 并不是它的真正含义。而要想理解这本书,就要首先理解什么是黑客。
黑客这个词最初起源时,完全是一个正面的词。黑客(hacker),就是完成hack的人。而hack的字典解释是砍木头,解决一个计算机问题,就像砍倒一颗大树。用理查德•斯托尔曼的话说:“出于兴趣而解决某个难题,不管他有没有用,这就是黑客。”这句话也表明了黑客的三个标准,即好玩、高智商、探索精神。
而根据另一本介绍黑客的书里的“黑客伦理”,黑客的价值观可以概括为:分享、开放、*、计算机的*使用、进步。换句话说,黑客不服从管教,具有叛逆精神。
而后来,由于一些事件和媒体的报道和影视作品等的渲染,黑客这个词慢慢与犯罪挂钩。而在这本书中,“黑客”仍指的是传统意义上的黑客,即优秀的程序员。
二、书名含义
(1)黑客和画家一样,只是有一门特殊手机、有创造天赋的普通人。
(2)编程也是一种艺术。
三、聪明的人不受欢迎?
有一种观点认为,聪明学生被妒忌。而作者认为,答案却是他们真的不想让自己受欢迎。若要用智力去换欢迎,他们大概是不愿意的。其实,受欢迎并不是一种天生的属性,而是要自己培养出来。
聪明的人并不等于书呆子,但是在特定的情况下,比如美国学校中,成为所谓社交上的“强人”标准太高,即使你不是很“呆”,相比之下也只能算呆子了。
四、黑客的特点
(1)黑客与画家的共同之处
①创作者
黑客与画家有很多相像之处,他们都是创作者,他们本质上不是做做研究。书中认为,“软件工程”这个词具有误导性,与其将优秀的软件设计师称为工程师,不如称为建筑师。这个区别点在于建筑师决定做什么,工程师想出怎么做。
黑客想做的事是设计软件,而不是实现别人所谓的构想,后者大概只能称为技工。然而公司里这种机会并不多。为了做自己想做的事,就像画家作家一样,黑客可以白天工作,而晚上从事自己的爱好。
②学习
画家学习绘画的方法靠动手去画,黑客学习编程的方法也是在实践中学习。虽然我们在C语言课、数据结构课等课上学了很多知识,但是如果不是亲手去码代码,还不算真正掌握。虽然码了代码也感觉没真正掌握就是了。
学习的途径中很重要的一点是通过范例。
③工作
像画画一样工作,先有个大的架构,再慢慢填充细节, 同时对原来的设计进行修改。
④多人合作
画画也有多人合作,但没有那个部分是两个人一起画的。软件开发也是一样,正确的方法是将项目分成很多模块,每人负责一个模块。
⑤换位思考
从别人的需求考虑问题。
假定用户对你的软件一无所知,软件的使用方式应该符合用户的直觉,而不是要求用户去读使用手册。
(2)黑客与科学家的不同
黑客真正想做的是设计优美的软件,这一点是很难用量化的标准来考核的。虽然我们将这一学科称为“计算机科学”,但对黑客而言,这与其他的“科学”并不一样。就像画家没必要弄清颜料的成分一样,黑客也没必要去弄清计算机的理论。
黑客和科学家不同,黑客的出发点是原创,最终得到一个优美的结果。科学家的出发点是别人优美的结果,最终得到原创性。
(3)有关编程的几点
编程的细节应该是在写代码的同时考虑,而不是编写代码之前就全部罗列出。
编程语言是帮助你思考程序,而不是用来表达你已经想好的程序。
动态类型语言是赢家。
要追求完美,即使有些部分没有人会看见。