计算机专业的本科生 汇编语言的重要性

我是计算机科学与技术专业的学生,这个专业汇编语言很重要吗?汇编语言在选择什么样的专业方向时有用?也就是就业什么职位才能用的到汇编?

汇编语言,计算机专业学习者不能不学的语言

汇编语言是我们理解整个计算机系统的最佳起点和最有效途径

汇编语言是机器指令的助记表示,描述了机器最终要执行的指令序列,是人与机器最直接的沟通语言。
作为一门低级语言,它的重要性常被人忽视。学习汇编语言能够充分获得底层编程的体验,深刻理解机器运行程序的机理,这使我们在接触复杂变化的计算机知识时变得清晰和顺畅。
一定要知道,硬件与软件构成了完整的计算机体系。软件由各种语言编写依托硬件得以执行,如果缺少底层知识就学习高层的课程,当遇到与底层相关的内容时,必将难懂与生涩。汇编语言与机器指令相应,并能直接与硬件交流。学习汇编语言不但能感知硬件内部的工作机理,而且可以清晰地观察到芯片之间的协作流程,从而建立底层的知识体系。
汇编作为一门语言具有编程语言的一般特性,而高级语言大都编译为汇编指令,最终转化为机器指令得以执行。这就使得学习汇编语言既有助于透彻的理解高级语言的核心原理,又能明晰程序内部的执行过程,更重要的是能够获得直接从底层分析问题解决问题的能力,为学习高层的知识奠定基石。
可以说汇编语言是联系硬件与软件的纽带,学习它既可以理解软件,又能够感知硬件,所以学习汇编语言无疑是学习和理解计算机体系最佳的切入点。

汇编语言是机器语言的助记符号,但是它绝对不能跟机器语言画等号,两者的区别很大。基本上汇编语言的学习,仅仅是为了学习和理解,而不是为了应用。到真正需要使用汇编级别的语言编程的时候,往往需要直接操作机器代码。
喜欢汇编的程序员基本不会存在,因为这个语言既不够高效(运行效率和开发效率都不是很高),也不够优雅。而一个人如果他说自己是汇编程序员,只要看看他的年龄——35岁以下的基本是吹牛或者仅仅在狭窄领域工作的人。
对于这种语言,其实两掌握都不需要,仅仅理解机器码的运行原理就足够了。当然如果能看懂一段相对简单的代码的意思,可以在某些场合有用处。

对于汇编语言,作为一个专业程序员,正确的态度应该是:

必须懂,但是不要喜欢。

这种东西你若是喜欢了就会走入邪路的。
就像武侠小说里的走火入魔什么的。

记住,抽象,是计算机科学中最重要的工具。
而计算机科学中,最重要的是“计算”,而不是“机”,
听人说喜欢汇编语言,就像听人说有人喜欢爬着走一样,
不错,您也能爬到地方,可是有车,有船,有飞机,
您何必呢?
如果您坚持这样我只能说您大脑哪个部分出问题了。

“汇编语言......因为这个语言既不够高效(运行效率和开发效率都不是很高)”。汇编语言的开发效率很低,但是运行效率很高。相反的极端是VB,开发效率很高,但是运行效率很低。如果一种编程语言运行效率和开发效率都不是很高,它就不应该存在。

用别人的一段话:"关于计算机技术的学习我想是这样的:学校开设的任何一门科学都有其滞后性,不要总认为自己掌握的某门技术就已经是天下无敌手了,虽然现在Java,VB,C,C++用的都很多,怎能保证没有被淘汰的一天,我想.NET平台的诞生和X#语言的初见端倪完全可以说明问题。换言之,在我们掌握一门新技术的同时就又有更新的技术产生,身为当代的大学生应当有紧跟科学发展的素质。举个例子,就像有些同学总说,我做网页设计就喜欢直接写html,不愿意用什么Frontpage,Dreamweaver。能用语言写网页固然很好,但有高效的手段你为什么不使呢?仅仅是为了显示自己的水平高,unique? 我看真正水平高的是能够以最快的速度接受新事物的人。高级程序设计语言的发展日新月异,今后的程序设计就像人们在说话一样,我想大家从xml中应是有所体会了。难道我们真就写个什么都要用汇编,以显示自己的水平高,真是这样倒不如直接用机器语言写算了。反过来说,想要以最快的速度接受并利用新技术关键还是在于你对计算机科学地把握程度。"

例如:
研究了几年的编译器,可以说,如果想要深入了解计算机的运行原理,汇编语言是必备的。也不是说非要写C#的人要学汇编,只是如果大家有用C++或C等,或者从事嵌入式的,或许应该好好看看了。记得当初看《Inside C++面向对象模式》(好像是这个书名...),里面有好多关于虚拟函数的实现机制、跳转表的实现等,虽然多与编译相关,但当时就是不了解一个类转化为C然后到汇编,最终那个malloc函数是如何实现的。苦恼了好久...因为有看在标准gcc编译出来的汇编,调用的是gcc的malloc库,郁闷n久。最后苦读操作系统原理以及实现,然后...发现自己的汇编太弱,学不下去...只好拿回汇编好好的看了。
如果你在写一个嵌入式的应用,由loader到boot到os到applications,不懂汇编是不可想象的...

感悟:
看了这些以后我才明白什么是“打好基础这句话”
打好基础,可以为学习的路上少走弯路。
有一个程序员学VB花了4个月,学C语言花了一年,
他是先学VB然后再学的C语言,一共花了1年零四个月

另一个人是先学的C语言,后学的VB语言,
但是这个人也是花了1年的时间学完C语言的
可是当他学VB语言的时候 一个星期就学完了
这是为什么,没为什么,因为C语言就是基础。
就像不懂汉字,你什么书都看不懂一样,
如果你对汉语的理解能力很差,就别想去什么东西了
当然你英语好你可以看英文资料 :)
总体来说打好了基础,以后学其他东西进度也快,理解也快,
所以什么都快.O YE~!
这里想说明一下,先学C语言 这是有一定的道理了.
因为先学汇编语言,再学C语言觉得有点困难。
反正我在学习汇编过程中,没觉得很难.因为我之前学过C语言.忽忽.
如果能给大家提供帮助.我心里会感到很高兴的.大家一起努力吧。

本文来自QQ:297343396的QQ空间,转载请注明

参考资料:http://user.qzone.qq.com/297343396/blog/1239422154

温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-05-03
重要
第2个回答  2009-05-03
重不重要取决于你将来从事的行业;
选择嵌入式,偏硬件或软硬结合方向一开始就会涉及到;软件则是高级软件工程师在从事内核编程的时候有用;
第3个回答  2009-05-03
肯定很重要的了 这个在软件 网络 等等 都需要学
第4个回答  2009-05-03
那不是一般重要 那是相当重要
相似回答