学习汇编语言的重要性
2010-08-15曲瑞超
曲瑞超
(赤峰学院 计算机科学与技术系,内蒙古 赤峰 024000)
学习汇编语言的重要性
曲瑞超
(赤峰学院 计算机科学与技术系,内蒙古 赤峰 024000)
介绍了在现如今“面向对象编程语言“和”网络编程语言”等高级语言流行于软件开发的环境下,对低级语言汇编的学习的重要性.从汇编语言所处的知识体系、学生学习的心态和自信心、学习方式和类型、汇编语言与高级语言的关系及汇编语言的实际应用等五方面深入的分析了学习汇编语言的重要性.
汇编语言;软件开发;低级语言;高级语言
为了让更多的计算机学习者意识汇编语言的重要性,我抛砖引玉,发表一下对汇编语言的理解,希望能够让更多的计算机技术的学习者对汇编语言的作用有一个正确的认识.同时我觉得作为一名计算机专业的教师,如果不能正确认识到汇编语言的基础性和重要性,一味的标榜高级语言,不担影响自己的教学还会误导学生.
1 从汇编语言所处的知识体系来看
学习计算机知识,学习的是计算机整套的系统知识,当然这其中包括的内容就多了:数据结构,操作系统,微机原理,编译原理,各种高级语言,甚至更高层次的应用,如此众多的知识对于一个初次接触计算机的学习者来说深奥,茫然.这就需要一个好的教学体系与之对应,让学生能更好的理解计算机知识.而这套教学体系的开启项就应该是汇编语言.原因是由汇编语言本身的特性决定的:它充分接触硬件,理解计算机运行原理,可以让操作者感知计算机的运行过程和原理,从而能够对计算机硬件和应用程序之间的联系和交互形成一个清晰的认识.这也是最能够锻炼编程者编程思维逻辑的,只有这样,学习者才能形成一个软、硬兼备的编程知识体系,这是任何高级语言都无法给予的!相对于繁复的高级语言,汇编语言指令集合更简约,指令操作更直接,从汇编开始学习更符合循序渐进的学习原理!最根本的是让学习者知道计算机到底是什么东西,抹去计算机学习者对计算机神秘,深奥的感觉,同时增加学习者的信心.
2 从学生学习的心态和自信心上看
学习心态的丧失是导致学习者放弃学习的直接原因,而没有很好的进行入门教育是导致学习者学习心态丧失的重要原因.我觉得要想学好任何知识都必须具备两点:一是积极的学习心态.缺乏这一点,必然不会学到知识.想学好一门专业,没有积极的学习心态是不行的.就算又再好的老师,再好的教材,都是白白浪费.二是负责的教育者,就是能够正确引导学生学习心态和充分调动学生的学习积极性,能够实实在在为学生考虑的人.
我相信每个计算机专业的学生都想学好计算机知识.当他们进入大学后开始以专心学习计算机技术的时候,每个人我相信都有学好计算机技术的态度和信心.对于计算机专业的大学生而言,计算机技术在大学阶段其实是一个开始,是处于一个计算机技术的启蒙阶段.在这个启蒙阶段,最重要的就是入门.当大家都满怀信心的去学习那些被各大高校都当作计算机入门教材的C语言的时候,发现太多的“不明白”,比如说,刚开始就是#include和printf(“helloworld”),而且被很正式的告知,这就是第一个C语言程序.#include是干嘛的,为什么?printf怎么就在屏幕上打印了字符了呢?老师就说了:“include是引入头文件,printf是在屏幕上打印字符!”然后学生就得死记硬背,认为这就是计算机规定的.就这样,一天记,一天背,而信心呢?一天天消磨!因为他们想不明白为什么,一个问号一个问号的累积,最终否定了自己,失去了学习的心态.
失去了学习的心态和信心,是造成一个学习者无法学好计算机技术的一个直接原因.所以,我们考虑的重点就在如何建立学习者的信心和学习的正确态度.其实,按照学习者的学习目的我们很容易就能给他们维持和巩固他们的学习热情和学习信心.就是给他们最好的入门教育,不要在他们满怀期待的进门的时候就绊他们一个大跟斗.所以,对于教育者就应该明白怎样的入门才能更好的引导学习者.对于教育者传授知识当然离不开课程.所以,我们的解决问题的焦点就明晰了,就是要确定一门最好的入门课程.由汇编语言的基础地位和特点,把它作为首选应该是没有问题的.
3 从计算机技术的学习方式和类型上看
计算机的学习应该分为两种类型:
一是创造性学习.所谓创造性学习是指学习的整个过程,以知识的原理性为主线进行学习活动.通过原理性学习的积累,使学习者掌握分析问题和解决问题的基本方法,能够使学习者自行构建符合原理的解决问题的方式方法,从而使学习者能够独立的运用知识点,以点及面,在潜意识中形成一个自发、自主,自我创造的行为方式.这种学习方式需要系统的学习体系,也需要更多的学习空间和时间.这种学习积累是一种有目的性的“质”式积累,从一个知识形态到达一个更高的知识形态要容易实现一点.所以,这个学习模式应该更适合以培育高能力社会人才的高校专业课程的学习.
二是临摹式学习.所谓的临摹式学习是指学习的过程更为注重的是进行技术的拷贝式学习,也就是我们常说的“依葫芦画瓢”式学习.学习者通过参考、分析、临摹完成一个技术点的学习.对于学习者,尤其是初学者来说,这种学习方式回避了某些技术知识所包含的深层原理,所以,学习者所要花费比分析更多的时间在记忆和巩固记忆的临摹过程.这种方式的学习积累是一种经验式的“量”积累,要想达到知识形态的跃迁,需要的比较长的时间和更多的知识积累.但是,这种学习方式能够使学习者较快的掌握应用技能,所以比较适合以择业为目的职业教育或者培训教育.
从以上两方面我们就能够理解,IT培训机构为何从不开设汇编语言、数据结构、编译原理、计算机组成甚至操作系统这些重要的计算机课程了.对于他们来说,学员尽快择业才是教育目的.所以,他们采取的是第二种学习方式.这很正常,因为这是商业化教育.而人才教育的摇篮的高校,如果也向第二种方式倾斜,这就不正常了.
我认为,既然做,就要做好.学生刚开始进入学习阶段,没有择业压力,我们必须要进行第一种学习的教育.而在计算机教育中,汇编语言显然是比那些java,C++更应该处于学习开始阶段的,甚至是比C语言更应该提前学习.从而保证从一开始就不要学生带着问号走路.
4 从汇编语言与高级语言的关系上看
计算机从业有很多领域,从事实战技术的学生也逐渐有了自己对计算机技术的认识.他们对计算机技术的学习和认识众说纷纭,有的从事java编程,感觉待遇不错就说学java好,有的从事win32开发就说16位汇编淘汰了,大家要清楚发言的人是什么心态,他们许多都是已经工作的,而且是在建立在四年大学计算机学习的基础上说的,是建立在他已经达到了学习汇编应该达到的能力后说的,当他说汇编不重要或已经过时的时候,是因为他没有用汇编挣钱,或者说当前用来挣钱的最热门的技术不是汇编.
计算机的教学是有体系的,而汇编语言是计算机初学者的最佳切入点,这不是说其他课程不重要,也不是说学了汇编就万事大吉什么高级语言都不用学了.相反,学了汇编语言能够让学生更好的理解高级语言,尤其是高级语言中的C语言.汇编语言对于内存的操作都是基于内存地址的,而C语言中最令人头疼的指针概念,说白了就是内存的地址.指针的学习和应用中最头疼的就是在指针这个抽象的概念和实际的内存单元之间建立思维映射,而这些恰恰是我们在汇编语言学习中频繁做的一件平常事.另外,对于C语言中的数据类型、形参实参、函数调用、全局变量、局部变量等概念及操作,我们都可以用汇编语言中的一些操作相关联,把这些抽象的概念和过程,通过汇编语言形成一个具体的映像,深度剖析,这样学生才能真正的学会、学好C语言.计算机科学的各个方面是一个统一的整体,只有多方面穿插,交互才能更好的搭建计算机知识体系.所以,我们要强调学科之间的联系.汇编对于高级语言的学习有很好的辅助基础作用.
5 从汇编语言的实际应用来看
不否认,在应用层面,高级语言占据了软件开发市场的绝大部分.也正是这种现象,误导了学习者,甚者是教育者!很多学习者放弃对于汇编语言的学习,就是因为高级语言的开发更容易找到工作.但是,这里面明显存在着认识误区!因为计算机的学习是一个系统过程,它的知识结构不是一个单一课程所能够建立的.所以,学习汇编的目的不是非要用汇编去挣饭钱,而是由于它对编程人员成长所应该具备的基本素质的培养和形成太重要了.
尽管如此,汇编语言本身还是一门很重要的应用技术.首先由于汇编的操作由于跟硬件紧密相关,所以,很多硬件设施的嵌入式编程使用的都是使用的汇编语言,因为汇编语言更直接,更有效率!我们现在的数码产品很多,而这些数码产品赖以生存的芯片,主板等,都包含了嵌入式程序,而这些程序中,汇编语言的使用是相当重要的!其次所有电脑语言写出的程序运行时在内存中都以机器码方式存储,机器码可以被比较准确的翻译成汇编语言,故几乎所有跟踪、调试工具都是以汇编示人的,因此在软件解锁解密技术中,反汇编被当作最强悍的工具来广泛使用.还有汇编程序是最简洁的语言,用它可以编出最矮小精悍的程序包括病毒程序.由此可以看出,在应用领域也是有汇语言的一席之地的.
我想如果想学好计算机编程技能,如果想做一名合格的编程人员,如果想在计算机编程之路走的更远,学习者只有,也必须从汇编语言开始,才能完整、完善的建立计算机编程知识体系!
〔1〕沈美明,温冬婵.IBM-PC汇编语言程序设计.(第二版)清华大学出版社.
〔2〕谭浩强.<
TP313-4
A
1673-260X(2010)01-0036-02