曲瑞超
(赤峰學院 計算機科學與技術(shù)系,內(nèi)蒙古 赤峰 024000)
學習匯編語言的重要性
曲瑞超
(赤峰學院 計算機科學與技術(shù)系,內(nèi)蒙古 赤峰 024000)
介紹了在現(xiàn)如今“面向?qū)ο缶幊陶Z言“和”網(wǎng)絡(luò)編程語言”等高級語言流行于軟件開發(fā)的環(huán)境下,對低級語言匯編的學習的重要性.從匯編語言所處的知識體系、學生學習的心態(tài)和自信心、學習方式和類型、匯編語言與高級語言的關(guān)系及匯編語言的實際應(yīng)用等五方面深入的分析了學習匯編語言的重要性.
匯編語言;軟件開發(fā);低級語言;高級語言
為了讓更多的計算機學習者意識匯編語言的重要性,我拋磚引玉,發(fā)表一下對匯編語言的理解,希望能夠讓更多的計算機技術(shù)的學習者對匯編語言的作用有一個正確的認識.同時我覺得作為一名計算機專業(yè)的教師,如果不能正確認識到匯編語言的基礎(chǔ)性和重要性,一味的標榜高級語言,不擔影響自己的教學還會誤導學生.
學習計算機知識,學習的是計算機整套的系統(tǒng)知識,當然這其中包括的內(nèi)容就多了:數(shù)據(jù)結(jié)構(gòu),操作系統(tǒng),微機原理,編譯原理,各種高級語言,甚至更高層次的應(yīng)用,如此眾多的知識對于一個初次接觸計算機的學習者來說深奧,茫然.這就需要一個好的教學體系與之對應(yīng),讓學生能更好的理解計算機知識.而這套教學體系的開啟項就應(yīng)該是匯編語言.原因是由匯編語言本身的特性決定的:它充分接觸硬件,理解計算機運行原理,可以讓操作者感知計算機的運行過程和原理,從而能夠?qū)τ嬎銠C硬件和應(yīng)用程序之間的聯(lián)系和交互形成一個清晰的認識.這也是最能夠鍛煉編程者編程思維邏輯的,只有這樣,學習者才能形成一個軟、硬兼?zhèn)涞木幊讨R體系,這是任何高級語言都無法給予的!相對于繁復的高級語言,匯編語言指令集合更簡約,指令操作更直接,從匯編開始學習更符合循序漸進的學習原理!最根本的是讓學習者知道計算機到底是什么東西,抹去計算機學習者對計算機神秘,深奧的感覺,同時增加學習者的信心.
學習心態(tài)的喪失是導致學習者放棄學習的直接原因,而沒有很好的進行入門教育是導致學習者學習心態(tài)喪失的重要原因.我覺得要想學好任何知識都必須具備兩點:一是積極的學習心態(tài).缺乏這一點,必然不會學到知識.想學好一門專業(yè),沒有積極的學習心態(tài)是不行的.就算又再好的老師,再好的教材,都是白白浪費.二是負責的教育者,就是能夠正確引導學生學習心態(tài)和充分調(diào)動學生的學習積極性,能夠?qū)崒嵲谠跒閷W生考慮的人.
我相信每個計算機專業(yè)的學生都想學好計算機知識.當他們進入大學后開始以專心學習計算機技術(shù)的時候,每個人我相信都有學好計算機技術(shù)的態(tài)度和信心.對于計算機專業(yè)的大學生而言,計算機技術(shù)在大學階段其實是一個開始,是處于一個計算機技術(shù)的啟蒙階段.在這個啟蒙階段,最重要的就是入門.當大家都滿懷信心的去學習那些被各大高校都當作計算機入門教材的C語言的時候,發(fā)現(xiàn)太多的“不明白”,比如說,剛開始就是#include和printf(“helloworld”),而且被很正式的告知,這就是第一個C語言程序.#include是干嘛的,為什么?printf怎么就在屏幕上打印了字符了呢?老師就說了:“include是引入頭文件,printf是在屏幕上打印字符!”然后學生就得死記硬背,認為這就是計算機規(guī)定的.就這樣,一天記,一天背,而信心呢?一天天消磨!因為他們想不明白為什么,一個問號一個問號的累積,最終否定了自己,失去了學習的心態(tài).
失去了學習的心態(tài)和信心,是造成一個學習者無法學好計算機技術(shù)的一個直接原因.所以,我們考慮的重點就在如何建立學習者的信心和學習的正確態(tài)度.其實,按照學習者的學習目的我們很容易就能給他們維持和鞏固他們的學習熱情和學習信心.就是給他們最好的入門教育,不要在他們滿懷期待的進門的時候就絆他們一個大跟斗.所以,對于教育者就應(yīng)該明白怎樣的入門才能更好的引導學習者.對于教育者傳授知識當然離不開課程.所以,我們的解決問題的焦點就明晰了,就是要確定一門最好的入門課程.由匯編語言的基礎(chǔ)地位和特點,把它作為首選應(yīng)該是沒有問題的.
計算機的學習應(yīng)該分為兩種類型:
一是創(chuàng)造性學習.所謂創(chuàng)造性學習是指學習的整個過程,以知識的原理性為主線進行學習活動.通過原理性學習的積累,使學習者掌握分析問題和解決問題的基本方法,能夠使學習者自行構(gòu)建符合原理的解決問題的方式方法,從而使學習者能夠獨立的運用知識點,以點及面,在潛意識中形成一個自發(fā)、自主,自我創(chuàng)造的行為方式.這種學習方式需要系統(tǒng)的學習體系,也需要更多的學習空間和時間.這種學習積累是一種有目的性的“質(zhì)”式積累,從一個知識形態(tài)到達一個更高的知識形態(tài)要容易實現(xiàn)一點.所以,這個學習模式應(yīng)該更適合以培育高能力社會人才的高校專業(yè)課程的學習.
二是臨摹式學習.所謂的臨摹式學習是指學習的過程更為注重的是進行技術(shù)的拷貝式學習,也就是我們常說的“依葫蘆畫瓢”式學習.學習者通過參考、分析、臨摹完成一個技術(shù)點的學習.對于學習者,尤其是初學者來說,這種學習方式回避了某些技術(shù)知識所包含的深層原理,所以,學習者所要花費比分析更多的時間在記憶和鞏固記憶的臨摹過程.這種方式的學習積累是一種經(jīng)驗式的“量”積累,要想達到知識形態(tài)的躍遷,需要的比較長的時間和更多的知識積累.但是,這種學習方式能夠使學習者較快的掌握應(yīng)用技能,所以比較適合以擇業(yè)為目的職業(yè)教育或者培訓教育.
從以上兩方面我們就能夠理解,IT培訓機構(gòu)為何從不開設(shè)匯編語言、數(shù)據(jù)結(jié)構(gòu)、編譯原理、計算機組成甚至操作系統(tǒng)這些重要的計算機課程了.對于他們來說,學員盡快擇業(yè)才是教育目的.所以,他們采取的是第二種學習方式.這很正常,因為這是商業(yè)化教育.而人才教育的搖籃的高校,如果也向第二種方式傾斜,這就不正常了.
我認為,既然做,就要做好.學生剛開始進入學習階段,沒有擇業(yè)壓力,我們必須要進行第一種學習的教育.而在計算機教育中,匯編語言顯然是比那些java,C++更應(yīng)該處于學習開始階段的,甚至是比C語言更應(yīng)該提前學習.從而保證從一開始就不要學生帶著問號走路.
計算機從業(yè)有很多領(lǐng)域,從事實戰(zhàn)技術(shù)的學生也逐漸有了自己對計算機技術(shù)的認識.他們對計算機技術(shù)的學習和認識眾說紛紜,有的從事java編程,感覺待遇不錯就說學java好,有的從事win32開發(fā)就說16位匯編淘汰了,大家要清楚發(fā)言的人是什么心態(tài),他們許多都是已經(jīng)工作的,而且是在建立在四年大學計算機學習的基礎(chǔ)上說的,是建立在他已經(jīng)達到了學習匯編應(yīng)該達到的能力后說的,當他說匯編不重要或已經(jīng)過時的時候,是因為他沒有用匯編掙錢,或者說當前用來掙錢的最熱門的技術(shù)不是匯編.
計算機的教學是有體系的,而匯編語言是計算機初學者的最佳切入點,這不是說其他課程不重要,也不是說學了匯編就萬事大吉什么高級語言都不用學了.相反,學了匯編語言能夠讓學生更好的理解高級語言,尤其是高級語言中的C語言.匯編語言對于內(nèi)存的操作都是基于內(nèi)存地址的,而C語言中最令人頭疼的指針概念,說白了就是內(nèi)存的地址.指針的學習和應(yīng)用中最頭疼的就是在指針這個抽象的概念和實際的內(nèi)存單元之間建立思維映射,而這些恰恰是我們在匯編語言學習中頻繁做的一件平常事.另外,對于C語言中的數(shù)據(jù)類型、形參實參、函數(shù)調(diào)用、全局變量、局部變量等概念及操作,我們都可以用匯編語言中的一些操作相關(guān)聯(lián),把這些抽象的概念和過程,通過匯編語言形成一個具體的映像,深度剖析,這樣學生才能真正的學會、學好C語言.計算機科學的各個方面是一個統(tǒng)一的整體,只有多方面穿插,交互才能更好的搭建計算機知識體系.所以,我們要強調(diào)學科之間的聯(lián)系.匯編對于高級語言的學習有很好的輔助基礎(chǔ)作用.
不否認,在應(yīng)用層面,高級語言占據(jù)了軟件開發(fā)市場的絕大部分.也正是這種現(xiàn)象,誤導了學習者,甚者是教育者!很多學習者放棄對于匯編語言的學習,就是因為高級語言的開發(fā)更容易找到工作.但是,這里面明顯存在著認識誤區(qū)!因為計算機的學習是一個系統(tǒng)過程,它的知識結(jié)構(gòu)不是一個單一課程所能夠建立的.所以,學習匯編的目的不是非要用匯編去掙飯錢,而是由于它對編程人員成長所應(yīng)該具備的基本素質(zhì)的培養(yǎng)和形成太重要了.
盡管如此,匯編語言本身還是一門很重要的應(yīng)用技術(shù).首先由于匯編的操作由于跟硬件緊密相關(guān),所以,很多硬件設(shè)施的嵌入式編程使用的都是使用的匯編語言,因為匯編語言更直接,更有效率!我們現(xiàn)在的數(shù)碼產(chǎn)品很多,而這些數(shù)碼產(chǎn)品賴以生存的芯片,主板等,都包含了嵌入式程序,而這些程序中,匯編語言的使用是相當重要的!其次所有電腦語言寫出的程序運行時在內(nèi)存中都以機器碼方式存儲,機器碼可以被比較準確的翻譯成匯編語言,故幾乎所有跟蹤、調(diào)試工具都是以匯編示人的,因此在軟件解鎖解密技術(shù)中,反匯編被當作最強悍的工具來廣泛使用.還有匯編程序是最簡潔的語言,用它可以編出最矮小精悍的程序包括病毒程序.由此可以看出,在應(yīng)用領(lǐng)域也是有匯語言的一席之地的.
我想如果想學好計算機編程技能,如果想做一名合格的編程人員,如果想在計算機編程之路走的更遠,學習者只有,也必須從匯編語言開始,才能完整、完善的建立計算機編程知識體系!
〔1〕沈美明,溫冬嬋.IBM-PC匯編語言程序設(shè)計.(第二版)清華大學出版社.
〔2〕譚浩強.<
TP313-4
A
1673-260X(2010)01-0036-02