读《黑客与画家》

某天去图书大厦的时候看到了这本书,书名比较吸引我《黑客与画家》,本来以为是一本小说,没想到是一本有关计算机的书籍。读来感觉有点意思,于是买下来回来细细品读。

通过这本书,让我更好的了解了计算机时代。我们身边的每一件东西都逐渐与计算机联系了起来,尤其是最近物联网的发展更加离不开计算机。

   作为计算机专业的一名学生,应当更加了解这个时代,甚至成为时代的弄潮儿。《黑客与画家》这本书更像作者的生活笔记,画家离不开创作的灵感,黑客也是这样,画家创作者自己的艺术品,黑客编写的程序也是黑客自己的艺术品。这本书结合了作者自身的经历来叙述,让我们觉得更加亲近真实。

在读这本书之前,我对黑客是这么认知的:黑客就是以攻击他人计算机为快感的流氓程序员。这本书让我对黑客有了新的认识,黑客是对程序员的一种肯定。“黑客与画家、作曲家、建筑师、作家一样,试图创作出优秀的作品”。黑客同样为这个世界创作出了很多优秀的作品。这本书同样让我对编程语言有了新的认识,“计算机程序只是文本而已,你选择了什么语言,决定了你能说什么话。编程语言就是程序员的思维方式”。而且黑客本身就是非常叛逆的,善于革新的,甚至被别人认为与这个世界格格不入的,看上去呆呆的。但是的确是他们造就了整个计算机世界。

作者对于计算机的见解非常独到,把程序当作艺术品。作为一名计算机专业的学生,一开始,我并不喜欢计算机。但是当我用自己的双手亲自写出一个软件作品时,虽然它还很小,但是感觉自己有成就感,好像画家完成一幅画作一样。计算机编程同其他创作的行业一样,美好的作品总能吸引人的眼球,甚至创造财富,但又不同于其他艺术品,软件会改变整个世界,改变你我的生活啊。

作者对于如何创造财富也有着相当独到的见解。作者认为创业或者加入创业公司一直是致富的可靠途径。而且金钱不等于财富,创造有价值的东西就是创造财富。金钱只是财富的一种表达方式。致富需要两样东西,可测量性与可放大性。作为员工业绩可测量,自己的才能具有可放大性,才有可能去致富。对于一个软件团队来说,小团体=可测量性,所以创业公司大部分都是小公司,这就是创业公司的真正意义。高科技=可放大性,技术就是我们做事的手段,是我们做事的方式,好的技术让自己的作品更具竞争力。

作者在最后几章节,讲到了编程语言,让我认识到了自己今后的发展方向,每一门编程语言都有优缺点,所以选对编程语言很重要,我们要学会使用面向对象编程的语言。作者还预测了100年后的编程语言,作者预测Java语言会走到尽头,作者只是提出编程语言的一个脉络,选择编程语言一定要选择靠近主干的语言,这样对编程最有利。

最后作者交代了设计与研究,很好有人一次就把事情作对;专家的做法是先完成一个早期原型,然后提出修改计划,最后把早起原型扔掉;扔掉早期原型对是需要信心的,你必须有本事看出有什么地方还可以再改进;刚开始学画画的人往往不愿意重画画错的地方,他们觉得能画成这样已经很不容易了,再画一次结果可能还不如现在; 这中想法很危险,你应该培养对自己的不满;犯错误是很正常的事,你要勇于承认错误,勇于改正;编程技术也是如此,再多的修改也不为过,持续重构,保证每次修改比之前使用起来更简单。

《黑客与画家》这本书给了我很多的启示,让我重新认识了黑客,重新认识了计算机行业,重新认识了编程语言,带给我今后的发展方向。

时间: 2024-08-01 20:01:40

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

深入理解Java虚拟机到底是什么

摘自:http://blog.csdn.net/zhangjg_blog/article/details/20380971 什么是Java虚拟机 我们都知道Java程序必须在虚拟机上运行.那么虚拟机到底是什么呢?先看网上搜索到的比较靠谱的解释: 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的.Java虚拟机有自己完善的硬体架构,如处理器.堆栈.寄存器等,还具有相应的指令系统.JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的

(1) 深入理解Java虚拟机到底是什么?

好文转载:http://blog.csdn.net/zhangjg_blog/article/details/20380971 什么是Java虚拟机 作为一个Java程序员,我们每天都在写Java代码,我们写的代码都是在一个叫做Java虚拟机的东西上执行的.但是如果要问什么是虚拟机,恐怕很多人就会模棱两可了.在本文中,我会写下我对虚拟机的理解.因为能力所限,可能有些地方描述的不够欠当.如果你有不同的理解,欢迎交流. 我们都知道Java程序必须在虚拟机上运行.那么虚拟机到底是什么呢?先看网上搜索到

《深入理解Java虚拟机》读书笔记---第一章 走进Java

一.为什么要读此书 <深入理解Java虚拟机>这本书读了很多次,每次读都会有不一样的感受.首先说一下为什么要读这本书,如果把Java比喻成乾坤大挪移,那了解虚拟机的工作原理就是练习九阳神功,java语言是招式,对虚拟机的认识是内功心法,只有内功心法强大,所使的招式才强大,这就是为什么阳顶天只能把乾坤大挪移练到第四层,而张无忌能练到第七层.由于java虚拟机的强大,把很多功能都隐藏了,例如内容管理,垃圾回收机制等,使得很多java程序猿对这一块的知识所有缺失,编码的时候也是似懂非懂的,以至于遇到

jvm--深入理解java虚拟机 精华总结(面试)(转)

深入理解java虚拟机 精华总结(面试)(转) 一.运行时数据区域 3 1.1 程序计数器 3 1.2 Java虚拟机栈 3 1.3 本地方法栈 3 1.4 Java堆 3 1.5 方法区 3 1.6 运行时常量池 4 二. hotspot虚拟机对象 4 2.1 对象的创建 4 检查 4 分配内存 4 Init 4 2.2 对象的内存布局 4 2.3 对象的访问定位 4 使用句柄访问 4 使用直接指针访问 5 三. OutOfMemoryError 异常 5 3.1 Java堆溢出 5 3.2

深入理解Java虚拟机(类文件结构+类加载机制+字节码执行引擎)

周志明的<深入理解Java虚拟机>很好很强大,阅读起来颇有点费劲,尤其是当你跟随作者的思路一直探究下去,开始会让你弄不清方向,难免有些你说的啥子的感觉.但知识不得不学,于是天天看,反复看,就慢慢的理解了.我其实不想说这种硬磨的方法有多好,我甚至不推荐,我建议大家阅读这本书时,由浅入深,有舍有得,先从宏观去理解去阅读,再慢慢深入,有条不紊的看下去.具体来说,当你看书的某一部分时,先看这部分的章节名,了解这部分这一章在讲什么,然后再看某一章,我拿"类文件结构"这一章来说,我必须

读深入理解Java中的String(包括JVM)一文总结和提升

读深入理解Java中的String(包括JVM)一文总结和提升 摘要:String作为Java语言中的字符串模拟类,无论是实际的编程工作还是笔试面试过程,都需要我们都String类非常熟悉,对于String类的大部分字符串操作方法,都必须达到熟练运用的程度才行.但是,笔试和面试过程中,面试官往往喜欢问一些String特性相关的题目,来考察面试者对于String基础知识的掌握是否牢固.(本人尚未研读深入理解JVM这本书,分析JVM都是查看网上资料来分析的,若在接下来的内容有分析不到位的地方请见谅和

《深入理解Java虚拟机》:类加载的过程

<深入理解Java虚拟机>:类加载的过程 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载.验证.准备.解析.初始化.使用和卸载七个阶段.其中类加载的过程包括了加载.验证.准备.解析.初始化五个阶段. 下面详细讲述类加载过程中每个阶段所做的工作. 加载 加载时类加载过程的第一个阶段,在加载阶段,虚拟机需要完成以下三件事情: 1.通过一个类的全限定名来获取其定义的二进制字节流. 2.将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构. 3.在Java堆中生成一

【深入理解Java虚拟机】类加载机制

本文内容来源于<深入理解Java虚拟机>一书,非常推荐大家去看一下这本书. 本系列其他文章: [深入理解Java虚拟机]Java内存区域模型.对象创建过程.常见OOM [深入理解Java虚拟机]垃圾回收机制 1.类加载机制概述 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制. 在java中,类型的加载.连接和初始化过程都是在程序运行期间完成的,这种策略虽然会带来一些性能开销,但是却为jav

深入理解java虚拟机笔记(一)-java内存区域与内存溢出

1. 前言 这是深入理解java虚拟机一书的笔记,来自第二章.因为这本书讲的比较深奥,这是第二次看,需要记录一下笔记. 2. 运行时数据区域 java虚拟机所管理的内存分为以下几个区域. ps:图片来自网络 2.1 程序计数器 程序计数器是一块较小的内存空间,他可以看做是当前线程所执行字节码的行号指示器.字节码解释器工作时就是通过改变这个计数器的值来选去下一条要执行的字节码指令,分之.循环.跳转.异常处理.线程恢复等基础功能都需要依赖这个计数器来完成. 这块内存是线程私有的内存. 如果线程在执行

《深入理解java虚拟机》:类的初始化

深入理解java虚拟机>:类的初始化 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载.验证.准备.解析.初始化.使用和卸载七个阶段.其中验证.准备.解析3个部分统称为连接.类加载的过程包括了加载.验证.准备.解析.初始化五个阶段. 加载.验证.准备.初始化和卸载这5个阶段的顺序时确定的,类的加载过程必须按照这种顺序按部就班的开始,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持Java语言的运行时绑定(也成为动态绑定或晚期绑定).另外注意这里的