去年读过一本非常火的书《黑客与画家》,其实这本书一直没有看完,总是差了一点,原因就是连续看了几篇大赞Lisp语言的文章后,就觉得有点烦了,但是还是静下心来,将它读完了,把这本书回顾一下,总结一下自己以前的感悟
Paul Graham是一个创业大牛,文中的每一行都可以看出他的性格来,追求完美,深入思考再加上每一个成功创业者多少都有的偏执,这个并非一定是贬义,因为用英语说,应该是insist on 。并无褒贬,只是人的一种行为特质。
开始读这本书的时候,我一直在寻找一个问题的答案,作者为什么会这样命名这本书,译者说是作者想表明黑客和艺术家一样,都是再创造好的作品。其实从作者的很多文字中看,作者有一种作为黑客潜在的孤独,特别是在对于Lisp语言的问题上,他始终强调这是最强大的语言,但是又不得不面对其流行度不高的现实。
看待编程语言的问题
书中连续几篇文章讨论,如何去看待一门编程语言,什么样的语言算是功能更强的语言,他提到了几个因素 :外部因素,简洁性,可编程性,一次性,函数库,效率,时间,再设计。
外部因素,指的就是有没有一本精简的入门教材,有没有方便的在线文档。我觉得这不仅仅适用于编语言,到现在各大阵营开放平台盛行的阶段,也适用于各个平台,这也是linux和android等开源项目成功发展的一个原因,但这个仅仅是针对开发者而言的。额,的确,对编程语言感冒的也只有开发人员吧。但有一个特例就是ios,一个学习资源不多,API文档不方便,但是已经把Objective-C推向编程语言顶端的系统,所以外部因素现在应该包含更多层面了,利润或许驱动了程序员的刻苦。
Paul再讲解简洁性的时候,把java作为了一个反例,一个hello world在java中显得如此复杂。我并不觉得很妥当,因为毕竟我们写的都不是hello world ,我们做的都是一个更大更为复杂的逻辑处理过程。类是抽象具体事物和封装信息所需要的,当真正的处理事物的时候,他并并不会复杂,反而会更简洁。我觉的这个不是简洁与否的问题,而是语言的使用场景的问题,我们要处理一些数学表达式,当然不会首先想到java,java就像一个工程队,你不可能要一个工程队来解决一个数学家的规模不大,需要深思的问题,这时候C,Lisp也许就更加合适了。
再一个就是,可编程性。。我觉得翻译的不好,原文是Hackability ,其实理解为自由度更强比较好,以前在做编译原理的实验的时候,我就觉得C用起来很过瘾,为什么会过瘾,我曾经有想过,或许不是因为指针,而是以为各种各样的宏定义,每次用宏的时候,我就觉得这个代码真真正正的是属于我的。但是想到团队性的合作编程,这就又不方便了,所以什么都不是万能的。。。
一次性就不说了,作者貌似在描述软件工程中迭代开发的一个过程,下一个就是函数库,这个在很多面向对象语言体现的比较多,其实我认为一些算法就可以已经在函数库中实现好。但是算法的学习是必要的,我认为学习算法是为了使程序员变得更加的聪明而不是让人变的更加的思维僵化,就像恶化的高考一样。比如在回顾排序的演变的时候,我们就可以看到人们追求更好的排序的一个思考的过程,能体现算法是让人好好思考以至于能更好的用巧妙的办法解决问题的一本书是《编程珠玑》。书中的第一个查找电话的例子就让人感觉受益匪浅。有一次参加rr面试的时候,面试官问过我一个算法+实际解决问题的题目“rr主页右上角的联系人搜索如果要你来做,你怎么实现”,我觉得这样的问题就是好的问题,我给出了他一个方案,他很高兴的说他们公司就是这么做的,之后他叫我写代码实现一个缩水版,我没有写太好,但没有影响通过面试。这个问题中,没有问什么排序什么搜索之类的成型的问题,因为成型的东西你可以在3秒钟之后从google上找到答案,而一个实际的问题,就没有那么容易了。
接下来是效率和时间,效率指的是程序的效率,而时间指的是编程语言的声明周期。Paul最厉害的地方在于他的预见性,这个一会再详细说,他很早的就意识到,今后的效率的核心问题不是单纯的计算速度,而是同时处理多请求的能力,也就是现在将的并行计算,的确这显然已经成为了很多企业的重点技术研究方向,服务器分布的范围越来越大,每分钟几百万的订单,都在考验并行的能力。
关于程序语言的周期性,我们知道一个产品都有他的周期性,最初的引进,到推广,到成熟再到衰退。我一直在想语言和平台的关系,始终也想不明白,二者究竟是谁在推谁,又或者两者是相互的。但有一点是肯定的,只要诞生语言的环境还在,那么语言就仍旧有生命力,比如C和UNIX。
产品
作者让我最钦佩的还是其强大的预见性,他在2001年的文章,曾这样写道“但是,苹果公司还没有失败,如果他能把ipod升级为手机,并将网络浏览器包括在其中,那么微软公司的麻烦就大了”,2007年苹果发布了首款iphone,那一年真正的开始了乔布斯的时代。其实Paul的本意是认为web应用的重要性,虽然iphone的成功并不在于其浏览器有多么的出众,但是这种思想是一致的,即web store的概念,用户从网上购买自己喜欢的应用。
很多时候,我们找不到需求,因为我们并不追求完美,而这恰恰是黑客的特质。
文章的最后,书中出现了黑客和画家,一个产品就向绘画一样“画作永远没有完工的一天,你只是不再继续画下去罢了”。以此结尾吧,每个人的生活也是如此,只要你继续画。
分享到:
相关推荐
黑客与画家1
非常详细的介绍了电脑的发展和随之产生的黑客的发展。很不错的书
《黑客与画家》是一本深入浅出的书籍,旨在让普通读者理解计算机时代的核心理念和黑客文化的内涵。作者通过自身的经历,揭示了黑客的成长过程、创新方式以及他们对世界的独特看法。书中的内容分为三个部分: 第一...
4.黑客与画家读后感 4.黑客与画家读后感 1. “建筑师决定做什么,工程师想出怎么做” 2. ”所以,在“计算机科学”的名下,数学家、物理学家、建筑师都不得不
北京邮电大学教授、博士生导师,灾备技术国家工程实验室主任 杨义先在ISC TALK中发表了《黑客行为精准预测》主题演讲。他表示,在红黑对抗基础上,预测黑客的行为。特别是在各种细分的情况下,如何对黑客的行为和...
在Python编程领域,矩阵代码动画是一种视觉效果,它模拟了电影《黑客帝国》中的经典画面,数字和字母如雨般倾泻而下,营造出一种科技感和神秘感。"诅咒的矩阵代码动画——看看兔子洞有多深"这个标题暗示我们将深入...
### 黑客——脱壳常用方法总结 在网络安全与反病毒领域,“脱壳”是一种重要的技术,用于分析被加壳的恶意软件或受保护程序的真实功能。加壳技术常被用作防止逆向工程,使恶意软件更难被检测和分析。本文将深入探讨...
"Windows黑客技术揭秘与攻防 C语言篇" 本资源为 Windows 黑客技术揭秘与攻防的 C 语言篇,涵盖了 Windows 操作系统的黑客技术和攻防策略。通过学习本资源,可以了解 Windows 黑客技术的基本概念和原理,掌握 C 语言...
coolfire黑客入门教程系列
中台之路——《黑客帝国》中的矩阵革命 .doc
在使用互联网的过程中不可避免的会遇到各种黑客,他们无时无刻不在窥视着互联网上的计算机,或盗取情报,或谋取非法利益,或炫耀能力。因此对黑客的研究是网络安全的一个重要课题。本文通过对黑客攻击流程的探讨,为...
易语言实例模块——多线程例程-黑客帝国特效.e
可以这么说,只要您会上网,就能在我们的月刊中,找到您能看懂的技术文章,呵呵,不过我们可不能保证,您看了我们的杂志,一定能成为网络安全专家或是黑客高手,这就好像呢到书店买书一样,书买到手了,关键看你自己...
Windows黑客技术揭秘与攻防2:Visual Basic篇》由浅入深地讲解黑客攻击和防范的具体方法和技巧,通过具体、形象的案例向读者展示多种攻防方法和攻防工具的使用。《Windows黑客技术揭秘与攻防2:Visual Basic篇》分为II...
黑客帝国html前端炫酷效果黑客帝国
分布式拒绝服务攻击,简称DDoS攻击,是一种网络攻击手段,其中黑客利用大量被控制的计算机(傀儡机)对目标服务器或网络发起大量请求,导致目标资源过载,无法处理正常流量,进而致使合法用户无法访问该服务。...
让黑客无隙可乘——企业级Web网站安全解决方案揭秘.pdf
ASP网站实例开发源码——中国X黑客联盟文章内容管理系统(源码+数据库).rar
不错的前端JS特效、页面功能的代码,很适合练习前端的各种特效和功能,也可直接拿来适当调整后使用,用于练手、学习,也是很不错的