《黑客与画家》读后感——黑客与画家

      写第一篇读后感画的时间太长了,搞得我都不太想接着写了,不过既然读了,就简单写一下吧。不然这个书读了转眼就忘,也没意义了。

       作者首先表示了对计算机科学作为一个整体概念的不满。他认为计算机科学里有三部分人组成,一部分人是接着计算机科学的名头研究纯数学的人,他们并不在意自己到底是计算机科学家还是数学家,只是计算机科学能为他们从美国国防部申请更多的经费。一部分人应该被称为计算机博物学家,他们研究各种专门性的题目,比如网络的路由算法。还有一部分人就是黑客,热衷于优秀的软件的设计。在这种情况下,黑客的工作往往被是否发表论文来评价,但这却是违反黑客精神的,黑客真正想做的事是设计优美的软件,而不是寻找没被人探索过的领域去做开荒工作发表论文。黑客的工作无法被良好的考核,被误解,甚至让黑客自己对自己产生误解,偏离自己真正的方向,想着要去搞懂很多的计算理论。

       黑客属于创作者,对他们来说最合适的编程语言是允许动态扩展的语言(比如python),不需要在编程之前就想好一切内容,而是可以随意涂抹,擦擦改改。他们应该像作家和画家一样,对高深的数学理论不需要有所了解,他们只负责设计最优美的软件,这必然是在大量前人的工作基础上进行的,所以并不需要掌握很多的数学内容(关于这点我有些困惑,虽然软件设计似乎确实不需要太高深的算法,但是像机器学习之类的都是建立在数学基础上的,可能这些在作者看来属于科学家的范畴)。在高校,黑客被要求成为科学家,在企业中,黑客被要求成为工程师,这对黑客来说是一件很不幸的事情。

       大公司在软件设计方面会为了避免设计上的灾难,选择减少设计的标准差。而当他们排斥差异时,不仅排斥了失败的可能,也排斥了高利润的可能。但是对于大公司来说,只要做的不太烂,就能赢。这话一句道破了大公司成长到垄断阶段的优势和劣势,作者轻描淡写之间说出了商业上的真理。所以真正竞争软件设计的战场都是新兴领域的市场,这是最有可能成功的地方,基本所以的大公司也是从这里起步的。

        既然黑客无法在公司和大学内从事自己喜欢的工作,那么他们只好在自己业余时间内来完成自己喜欢的事情。不知道我以后会不会在业余时间里选择在github上贡献开源代码。希望我也会有这种自由软件精神吧。黑客通过实践学习编程,会做一些原创性的工作。这里的描述我觉得和前文有所矛盾,前面说黑客的工作都是有一定的基础的,接着又说黑客的工作一开始就是原创性的,没有他人的完美成果可以依靠,最后得到优美的结果,而科学家的出发点是别人的优美结果,最终得到原创性工作。我自己理解是,优秀的软件开始就想搭积木,或者自己创造积木块,但是这个过程中都是没有框架的,黑客会自己构建一个优美的框架,这个过程没太多可以参考的内容,但是科学家做的工作都是在前人提出的定理定律的基础上的,所以说是从完美结果出发。不过我还是感觉这个描述很矛盾。因为接下来作者又说黑客可以通过观看优秀的程序学会编程,这里学习的应该也是软件开发的一些基本要素和如何构建自己的框架吧,那么原创性到底如何定义呢?不纠结于这个描述,我们能很清楚的得到两个信息,即学好编程的两个要素,实践和参考其他人优秀的代码,这在现阶段有丰富的资源,希望等我真正从事开发的时候能够好好学习。现在我只好打牢基础,学习基本知识。

        接下来作者提到了软件开发的重要思路——从用户的角度出发,换位思考。为了吸引用户,比如理解用户有什么需求。为了写出优秀的软件,你必须假定用户对你的软件基本上一无所知。源代码也应该可以解释自己。这种观点无疑十分正确,但是可能因为我听得太多了,有些麻木。就像我认为的一样,这些是必须要我有亲身的经历以后才会有深刻感受,现在权且记着吧。这里作者引用了一句非常有名的话,“程序写出来是给人看的,附带能在机器上运行。”希望自己以后不论是编程还是做oj,都要把程序写成给人看的,养成良好习惯。

       这一章里介绍了黑客的一些精神,还有编程的一些道理。比如设计软件从用户需求出发,对软件精益求精,代码要具有解释性等,但是 因为听得有点多了,所以未免感到有些枯燥。不过真理都是这样的,很多人概况给你听,只有你真正经历的时候才能明白。

猜你喜欢

转载自blog.csdn.net/x670127565/article/details/79365056