您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
有必要学习汇编语言吗?
汇编语言,语言,也是有必要学习汇编语言吗?
发布时间:2020-12-06加入收藏来源:互联网点击:
有必要学习汇编语言吗?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
谢邀。且听我慢慢道来。
汇编是低级语言,功能非常强大,写出来的软件执行效率很高,因为它直接和硬件打交道,正因为如此,所以做开发比较难,比较麻烦。先说说汇编和普通的编程什么关系,有句话是这么说的,机器(机器语言)生汇编,汇编生B(B语言),B生C(C语言),C生万物(java、Python、C++等等)。
那么汇编的优势是什么?这里举一个不是很恰当的例子:汇编是你的手,高级编程语言,比如java,Python。是洗衣机。开发一个软件或者游戏就是洗一大堆衣服。用手洗衣服,要麻烦的多,但是洗的更干净(这里仅仅是举例,不要抬杠,意思是好好洗的时候确实手洗更干净些),用洗衣机洗就快的多了,但是没有手洗的干净。当你开发一个软件的时候,工程量是很大的,也就是洗一大堆衣服的时候,你是选择用洗衣机还是用手洗呢?
所以引出结论,普通的公司,大部分的项目,只需要用高级语言就行,普通的软件都是这么做出来的,用例子来说也就是用洗衣机洗洗就好了,各大宾馆就是这么干的。如果是很牛逼的公司,是高级语言和汇编结合着用,就是执行效率很低的部分,用汇编来写,提高程序的效率,比如QQ的主体部分是用高级语言编写的,但是某些部分就用到了汇编,用于提高它的执行效率。用例子来说就是某些非常高档的宾馆,他们的铺盖都是先用洗衣机洗完,有些部分不是很干净,再用手洗一次。还有就是和硬件打交道的地方,开发驱动程序的时候,比如显卡驱动网卡驱动,这里很大一部分需要用到汇编,举例子就是某些非常高档的衣服,必须手洗。到这里详细大家都明白这个汇编的用处了。
咱们在第一段说了这些语言的先后顺序,同时也是他们的执行效率排名,由前到后,执行效率依次递减。机器语言就是你亲自干活,汇编就是你亲自指挥几个人干活,C就是你指挥中层,中层再指挥底层干活的人干活,以此类比,越高级的语言执行效率越低,但是你需要做的事情也是越来越少。
对于某些大公司来说,汇编是有需求的,对于小公司来说,没必要。至于学习,有时间的话肯定多学点好,当别人都不会你会的时候,你就是无可取代的,当你做到了无可取代,你就有了谈条件的资本,或者同样的一个软件,你通过汇编优化了一下,执行效率提高了,那用户体验肯定也就提高了,这个也是优势啊。
反汇编(破解软件)也是需要你懂汇编的,逆向工程在我看来很复杂,就是因为我不怎么会汇编。大公司需要反汇编的人才,据称,华为就是通过反编译思科的源程序做出来的路由交换的系统,当然也有说是从黑客手里购买的思科的源代码(这里不作讨论)。
不过话说回来,汇编太难了,确实太难学了,计算机专业的学生应该都知道,微机原理这课程包含汇编的一点非常基础的知识,并且实现的功能都非常的简单,这个基础的知识就够一些人头疼的了。何况深入研究。如果有精力有时间,可以学,学好了是大神,学不好也不吃亏。
回答于 2019-09-11 08:43:50
作为985院校的本硕毕业生,现在就职于BAT,我个人的意见是除非本科必修课以及相关从业者,否则没必要学习了。
本科必修课
与java,Python等等语言相比,汇编语言其实是低级语言,除了可读性比较低,学习与调试难度也要比java等高级语言大。目前汇编语言通常被应用在底层,硬件操作和高要求的程序优化的场合。此外,驱动程序、嵌入式操作系统和实时运行程序的时候,也会用到汇编语言。
我读大学的时候,这门课是大三才上的,而且还有课程实践,整整一周,对着一台机器要试着敲各种枯燥的代码,感觉整个人都不好了。好在当时老师也明说了,汇编语言是硬件基础,将来不想搞硬件的话,不用再接触这个小祖宗了。正是因为这段经历,让我更加明确了未来不要从事硬件的决心。
实际工作
我个人从实习开始就是做互联网平台开发的,从一开始用的就是php,javascript,java这种高级语言。而据我对周围同事的观察,我们也没有人用过汇编语言。最多自己买个树莓派回家琢磨琢磨,也没用到汇编这么底层的语言工具了。
因此,从我的角度来说,汇编作为一门底层语言,如果你未来不想从事硬件工作,实在是没有必要耗在它身上,汇编不像C/C++,既是高级语言也能做硬件开发,所以有这个时间不如去学学C++,说不定对未来帮助还能更大些。
以上是我的浅见,欢迎各位点赞或者留言与我交流。
我是苏苏思量,来自BAT的JAVA开发工程师,每日分享科技类见闻,欢迎关注我,与我共同进步。
回答于 2019-09-11 08:43:50
汇编语言实际上是机器语言的助记符,对于不同的CPU,有些不同的指令集,他们的汇编代码与格式也是不同的。因此使用汇编语言编程,不仅仅要会业务逻辑,还要懂得不同架构下的汇编语言。
现阶段汇编语言多用在单片机编程、以及系统程序中,主要负责CPU启动时刻,以及多进程上下文切换时。这是因为,这些功能用高级语言很难实现或者执行效率太低(比如C语言)。汇编语言可以直接操作CPU寄存器,比如PC、SP等寄存器,提高效率。
在大学计算机相关专业里都会学习一门叫做《微机原理与接口》的课程,这门课主要讲CPU(一般是8086)的构成,寄存器的功能等,之后就是讲指令集与汇编语言,使用汇编语言编程。通过这门课的学习,学生可以认识到计算机的基本工作原理和实现,通过汇编语言编程可以了解到CPU的基本运行过程。这对于从事IT互联网类的工作来说是很有帮助的,知其然还要知其所以然。这就是科班出身的与培训班出来的程序员的不同之处。总而言之汇编语言可以帮助你理解整个计算机的工作原理。
上一篇:樱花布丁怎么做?
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |