幾日前,在一位仁兄的blog裡看到如下一番話:其實我發現中國的教育還是有很大問題的,你們得讓你們的學生認識到這門課的作用啊,有些師兄說到出去工作了才發現彙編的作用。
我覺得值得慶幸的是這位仁兄在在校期間的學習中及時地意識到了彙編的重要性,並做出了正確的選擇。然而這位仁兄提到的“老師沒有讓學生認識到彙編的重要性”和“有些師兄工作了才發現彙編的重要性”這些在電腦專業教育中存在的客觀事實,再次讓我心情沉重!
為了讓更多的電腦學習者意識組合語言的重要性,我就拋磚引玉,發表一下對組合語言的理解,希望能夠讓更多的電腦技術的學習者對組合語言的作用有一個正確的認識。
1.組合語言
組合語言是最接近於機器語言的程式設計語言。如果說機器語言是電腦操作的本質,那麼組合語言就是最最接近本質的語言。組合語言操作直接面向硬體,所以,我們在使用組合語言的時候,我們能夠感知電腦的運行過程和原理,從而能夠對電腦硬體和應用程式之間的聯絡和互動形成一個清晰的認識。這也是最能夠鍛煉編程者編程思維邏輯的,只有這樣,學習者才能形成一個軟、硬兼備的編程知識體系,這是任何進階語言都無法給予的!相對於繁複的進階語言,組合語言指令集合更簡約,指令操作更直接,從彙編開始學習更符合循序漸進的學習原理!所以,對於電腦技術初學者或者自學者,組合語言重要性無可替代!
2.組合語言之於進階語言
不否認,在應用程式層面,進階語言佔據了軟體開發市場的絕大部分。也正是這種現象,誤導了學習者,甚者是教育者!所以目前高校電腦專業的現狀是:專業課程中C語言,C++,java等進階語言一應俱全,而畢業的學生卻連簡單的程式都不能編寫。為什嗎?聽不懂,學不會!這就是缺乏基礎造成的!
組合語言才是電腦技術的基礎,而不是常說的C語言。之所以說彙編重要,其一個重要的原因就是,組合語言能夠讓你更好的理解進階語言,尤其是進階語言中的C語言。組合語言對於記憶體的操作都是基於記憶體位址的,而C語言中最令人頭疼的指標概念,說白了就是記憶體的地址。指標的學習和應用中最頭疼的就是在指標這個抽象的概念和實際的記憶體單元之間建立思維映射,而這些恰恰是我們在組合語言學習中頻繁做的一件平常事。另外,對於C語言中的資料類型、形參實參、函數調用、全域變數、局部變數等概念及操作,我們都可以用組合語言中的一些操作相關聯,把這些抽象的概念和過程,通過組合語言形成一個具體的映像,深度剖析,這樣我們才能真正的學會、學好C語言。
有了彙編和C的基礎,那些所謂的物件導向的語言學習起來就更為順暢了!奉勸那些好高騖遠的學習者,踏踏實實的從彙編開始吧,古云:磨刀不誤砍柴工啊!
3.組合語言之於應用
很多學習者放棄對於組合語言的學習,是因為進階語言的開發更容易找到工作。這個理由也是我見到過的最現實的。但是,這裡面明顯存在著認識誤區!
首先,我們的學習是一個系統過程,我們的知識結構不是一個單一課程所能夠建立的。所以,學習彙編的目的並不是非要用彙編去掙飯錢。因為組合語言對於一個編程人員所應該具備的基本素質的培養和形成得意義是非常重大的!這在前文中已經分析了,不再贅述!
其次,彙編本身也是很重要的應用技術。由於學習者,尤其是在校的學生,平時接觸的最多的是純軟體的東西,所以,覺得五花八門的軟體才是電腦技術應用的舞台。那麼這些人最終會成為那位博主提到的那些工作後才意識到彙編的作用的“師兄”!彙編的操作由於跟硬體緊密相關,所以,很多硬體設施的嵌入式編程使用的都是使用的組合語言,因為組合語言更直接,更有效率!我們現在的數位產品很多,而這些數位產品賴以生存的晶片,主板等,都包含了嵌入式程式,而這些程式中,組合語言的使用是相當重要的!
為了工作放棄彙編,得失自明啊!
很激動地寫了上面這些,目的只有一個:讓更多的學習者認識到組合語言在電腦技術學習中的重要性!
轉載自:彙編網:http://www.asmedu.net/bbs/pasteinfo.jsp?part=1&level=free&kind=1220&qkSg=2&qID=10793&readSg=1