这个问题太抽象。 汇编是干什么的?为什么要学好汇编?不学不行吗?要学好计算机非得学好汇编吗?乍看到这些问题,真是一头雾水。学好汇编会有什么好处?学好汇编老板就给你涨工资?还是学好汇编上天就会赐给你个大美女?还是政府就会给你解决住房问题?真是搞不懂。不过倒可以肯定头脑没大问题的人不会选择上面三个答案。那到底是为什么呢?是啊,停留在问题的表面似乎永远找不到答案。我们试图找一下答案,我们从这里入手,学习过汇编的人会了解计算机的底层工作方式,他会了解到cpu、内存、硬盘等硬件设备是如果协调地工作在一起,数据从哪里转移到哪里,在哪里被运算,又在哪里被存储起来等等等等。总之,计算机在你的面前不会再是一个黑洞。做这样一个比喻:一个貌美的姑娘总能让小伙子产生美好的幻想,而在医生眼里他永远是由639块肌肉和206块骨头组成的躯体。同样计算机在常人眼里可能是个神奇的东西,但在专业人眼里他就是一堆晶体管。原来我们的目的是让计算机在我们眼里变成一堆晶体管,这才是我们真正要的东西。得出结论:我们的真正目的是让计算机在我们眼里变成一堆晶体管,而不是要学好汇编。 学好计算机就必须达到这个目的吗? 明确了我们的真正目的,轻松了一些。然而学好计算机就必须达到这个目的吗?这个问题先不回答,看下面的例子:一个医生倘若不懂人体脉络、血液流向、器官构成,只是模仿过专业医生做过内科手术,哪怕模仿的多熟练,恐怕没有哪个患者敢让他做。很显然,这样的人也不配叫医生。倘若你是一个亿万富翁,某银行行长到你家跑存款,他只知道一些表面的银行利率和金融常识,不懂潜藏在背后的货币和金融原理,对投机风险不知晓,将巨额财产存储在这样的银行多少让人心里感觉不安。这样的例子很多,但道理只有一个,学好计算机也不例外。要想成为计算机方面的专家,但不了解计算机是怎么工作的,显然不合逻辑。得出结论:让计算机在我们眼里变成一堆晶体管是学好计算机的必要条件。 目的确定,选择方法。 条条大路通罗马,只要你确定去罗马。怎样达到“让计算机在我们眼里变成一堆晶体管”这一目的?我试图找到一条最近的路,其实可能每个人都在找这条路。曾经想过,倘若科技够发达,直接把一位计算机专家头脑里面关于计算机方面的所有知识直接拷贝到我的脑子,这样计算机就不在神秘。倘若真的存在仙境,梦中得到仙人指点,一夜我就可以成为计算机专家,这样计算机就不在神秘。不要觉得可笑,上面的两种方法也是方法,只不过目前还没有出现过类似的现象。那么我们来看现实中一个可行的方法,通过汇编语言的学习是可以达到这个目的的。汇编语言直接面向计算机底层,我们可以通过编写指令代码的方式控制一个单位数据从一个地方移动到另一个指定地方,可以指定让两个数据进行加减乘除运算,还可以通过指令直接控制终端设备。这就相当于我们用显微镜观察人体细胞,细胞内部组织展露无疑,细胞从此也就不再神秘。从而可以看出通过汇编语言的学习和应用对于理解计算机的内部工作方式是多么的直接。得出结论:学习汇编语言是达到“让计算机在我们眼里变成一堆晶体管”这一目的的一种有效方式。 从上面的图以及我们刚才的分析可以看出,学习汇编语言与学好计算机之间是没有直接关系的。而到此为止,这些似乎抽象复杂的关系也就被我们理顺了,再遇到多么古怪的问题我们就会很清楚这个问题处于什么阶段了。 分析一个问题。 学生甲:“我没有学习过汇编语言,汇编语言太低级,我只学习高级语言,现在也学好计算机了。” 这种观点我并不反对。我们来分析一下,学生甲既然自称已经学好计算机了,那么必然对计算机的内部工作方式相当清楚,即达到了我们上面所述的“让计算机在我们眼里变成一堆晶体管”这一目的。那么他是通过什么方式达到这一目的的呢?答案是“学习高级语言”。做这样一个类比:通过学习汇编语言达到这一目的就好比医生通过显微镜观察人体细胞。通过学习高级语言达到这一目的就好比医生通过观察细胞的繁殖、生长、血液细胞的流动、皮肤细胞的衰老等一系列细胞外在展现出来的情况来达到认知细胞内部组织结构的目的,特别是他对细胞内部组织结构的认知与我们用显微镜观察到的完全一致。显然,这种人是属于天才的那种人。他具备对事情有很强的总结归纳、从表面现象分析本质原理的能力,而且一般对该领域有极大的兴趣,促使他要搞清楚到底是怎么一回事。然而,通过以上两种方式的对比,我们也不难看出,前者是正序的学习方式,后者为倒序的学习方式,后者一般会占用相当长的时间,因为过程中毕竟需要对表面现象进行深刻的分析、领悟,最终得出自己的结论,而前者直接通过显微镜观察就一目了然了。 结束语:证明一个结论的对错并不重要,因为有太多的结论等我们去证明。重要的是要搞清楚我们面临的现状,从而采取最有效的方式,做出最有效的选择。