有必要學習匯編語言嗎?
謝邀。且聽我慢慢道來。
匯編是低級語言,功能非常強大,寫出來的軟件執行效率很高,因為它直接和硬件打交道,正因為如此,所以做開發比較難,比較麻煩。先說說匯編和普通的編程什么關系,有句話是這么說的,機器(機器語言)生匯編,匯編生B(B語言),B生C(C語言),C生萬物(java、Python、C++等等)。
那么匯編的優勢是什么?這里舉一個不是很恰當的例子:匯編是你的手,高級編程語言,比如java,Python。是洗衣機。開發一個軟件或者游戲就是洗一大堆衣服。用手洗衣服,要麻煩的多,但是洗的更干凈(這里僅僅是舉例,不要抬杠,意思是好好洗的時候確實手洗更干凈些),用洗衣機洗就快的多了,但是沒有手洗的干凈。當你開發一個軟件的時候,工程量是很大的,也就是洗一大堆衣服的時候,你是選擇用洗衣機還是用手洗呢?
所以引出結論,普通的公司,大部分的項目,只需要用高級語言就行,普通的軟件都是這么做出來的,用例子來說也就是用洗衣機洗洗就好了,各大賓館就是這么干的。如果是很牛逼的公司,是高級語言和匯編結合著用,就是執行效率很低的部分,用匯編來寫,提高程序的效率,比如QQ的主體部分是用高級語言編寫的,但是某些部分就用到了匯編,用于提高它的執行效率。用例子來說就是某些非常高檔的賓館,他們的鋪蓋都是先用洗衣機洗完,有些部分不是很干凈,再用手洗一次。還有就是和硬件打交道的地方,開發驅動程序的時候,比如顯卡驅動網卡驅動,這里很大一部分需要用到匯編,舉例子就是某些非常高檔的衣服,必須手洗。到這里詳細大家都明白這個匯編的用處了。
咱們在第一段說了這些語言的先后順序,同時也是他們的執行效率排名,由前到后,執行效率依次遞減。機器語言就是你親自干活,匯編就是你親自指揮幾個人干活,C就是你指揮中層,中層再指揮底層干活的人干活,以此類比,越高級的語言執行效率越低,但是你需要做的事情也是越來越少。
對于某些大公司來說,匯編是有需求的,對于小公司來說,沒必要。至于學習,有時間的話肯定多學點好,當別人都不會你會的時候,你就是無可取代的,當你做到了無可取代,你就有了談條件的資本,或者同樣的一個軟件,你通過匯編優化了一下,執行效率提高了,那用戶體驗肯定也就提高了,這個也是優勢啊。
反匯編(破解軟件)也是需要你懂匯編的,逆向工程在我看來很復雜,就是因為我不怎么會匯編。大公司需要反匯編的人才,據稱,華為就是通過反編譯思科的源程序做出來的路由交換的系統,當然也有說是從黑客手里購買的思科的源代碼(這里不作討論)。
不過話說回來,匯編太難了,確實太難學了,計算機專業的學生應該都知道,微機原理這課程包含匯編的一點非常基礎的知識,并且實現的功能都非常的簡單,這個基礎的知識就夠一些人頭疼的了。何況深入研究。如果有精力有時間,可以學,學好了是大神,學不好也不吃虧。