《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 解決方案 > 編程語(yǔ)言越來(lái)越發(fā)達(dá),程序員還要不要學(xué)習(xí)匯編語(yǔ)言,?

編程語(yǔ)言越來(lái)越發(fā)達(dá),,程序員還要不要學(xué)習(xí)匯編語(yǔ)言,?

2017-06-22
關(guān)鍵詞: 匯編語(yǔ)言

鄰居的一位同學(xué)快畢業(yè)了,,簽約到一家從事物聯(lián)網(wǎng)的公司,,計(jì)劃是從事stm32芯片相關(guān)產(chǎn)品的開(kāi)發(fā),。他找到我問(wèn):“駱駝,,我需不需要學(xué)習(xí)一下匯編,?”西安一所知名大學(xué)的畢業(yè)生來(lái)問(wèn)我這個(gè)問(wèn)題,我有點(diǎn)不知道如何回答,。他在大學(xué)期間老師應(yīng)該對(duì)職業(yè)規(guī)劃作出了明確的指導(dǎo)才對(duì),,如今來(lái)問(wèn)我這個(gè)問(wèn)題是不是有點(diǎn)晚?話說(shuō)西安地處內(nèi)陸,,人們的思想有些保守,,發(fā)展有些滯后,但是如今互聯(lián)網(wǎng)如此發(fā)達(dá),,很多問(wèn)題其實(shí)他可以通過(guò)網(wǎng)絡(luò)了解,。

2013年時(shí),我到西安一家電力企業(yè)工作,,部門經(jīng)理向我提了一個(gè)要求---指導(dǎo)硬件部門的同事學(xué)習(xí)一下C語(yǔ)言,。我的頂頭上司,也就我的這個(gè)部門經(jīng)理,,工作十幾年了,,一直使用匯編語(yǔ)言編程,而且竟然完成了公司復(fù)雜的開(kāi)發(fā)任務(wù),。另一位在單位工作5年多的女同事使用的也是匯編,,新招的一個(gè)研究生只是負(fù)責(zé)硬件的設(shè)計(jì)。另外兩名同事也是剛畢業(yè)的,,我成為單位唯一有C語(yǔ)言編程基礎(chǔ)的人,。

說(shuō)起我從匯編向C語(yǔ)言的轉(zhuǎn)型,還有一個(gè)小插曲,。我畢業(yè)后做的第一個(gè)項(xiàng)目也是以匯編語(yǔ)言作為工具開(kāi)始的,,但是在項(xiàng)目進(jìn)行到三分之一時(shí)換了領(lǐng)導(dǎo),新任的領(lǐng)導(dǎo)要求我們必須使用C作為開(kāi)發(fā)工具,,我只好被迫轉(zhuǎn)型,。從此以后,我再也沒(méi)有使用匯編完成過(guò)一個(gè)項(xiàng)目,,時(shí)隔多年除了一些基礎(chǔ)概念,,匯編語(yǔ)言也基本忘光了。后來(lái)的工作中我再也沒(méi)有接觸過(guò)匯編,。目前看來(lái),,隨著編程語(yǔ)言的發(fā)展,,人們對(duì)高級(jí)語(yǔ)言的接受程度越來(lái)越高,未來(lái)貌似也不會(huì)有機(jī)會(huì)使用匯編了?,F(xiàn)在我在做liunx項(xiàng)目使用的是C++,,但是我當(dāng)年可是花費(fèi)了
很多時(shí)間去學(xué)習(xí)匯編的,真是讓人懊惱奧不已,。

說(shuō)起那次被迫轉(zhuǎn)向C語(yǔ)言,,其實(shí)我當(dāng)時(shí)對(duì)這件事情非常排斥。但是剛到新單位工作,,領(lǐng)導(dǎo)又如此重視這件事情,,實(shí)在不好意思拒絕。這個(gè)項(xiàng)目結(jié)束以后,,又過(guò)了半年單位就徹底放棄了匯編,。我因?yàn)槿蝿?wù)完成的出色還受到了單位的獎(jiǎng)勵(lì)。
 


現(xiàn)在工作的單位還有幾款產(chǎn)品是使用匯編開(kāi)發(fā)的,。有一天在外地工作的一位銷售經(jīng)理回西安了,,滿口稱贊那款產(chǎn)品。

“看看人家匯編代碼,,寫的多規(guī)整,,沒(méi)有一行多余的……”

一個(gè)現(xiàn)象的出現(xiàn)總是有很多背景因素。當(dāng)年之所以選擇匯編有很大歷史緣故,,一是單片機(jī)資源問(wèn)題,,二是C語(yǔ)言開(kāi)發(fā)人員的儲(chǔ)備問(wèn)題。至于“沒(méi)有一行多余的”,,只能說(shuō)這位同事不懂匯編,,甚至可能不懂程序。程序?yàn)榱私芽倳?huì)有一些冗余的代碼,。

而且編程的問(wèn)題不僅僅體現(xiàn)在語(yǔ)言上,,并且語(yǔ)言所占比例非常少,而且隨著工作的時(shí)間變長(zhǎng),,會(huì)發(fā)現(xiàn)語(yǔ)言所占的比例越來(lái)越少,。最后就會(huì)出現(xiàn)根本不是問(wèn)題。如果您去面試一份工作機(jī)會(huì),,面試題中考察語(yǔ)言成份的問(wèn)題越多,,說(shuō)明這份工作越?jīng)]有技術(shù)含量。


一個(gè)程序員價(jià)值應(yīng)該體現(xiàn)在解決問(wèn)題的能力上,。對(duì)某一方面知識(shí)掌握只是其解決問(wèn)題能力的一小部分,,這是一個(gè)綜合的問(wèn)題。而且有一個(gè)很奇怪的現(xiàn)象,就是經(jīng)常使用的知識(shí)也只占我們所學(xué)的專業(yè)知識(shí)的一部分,。但是其它知識(shí)即使不用,,也不能缺失。在平時(shí)可能體現(xiàn)不出任何問(wèn)題,,但是在關(guān)鍵的時(shí)候就有了明顯的區(qū)別,所以程序員是一個(gè)綜合知識(shí)結(jié)構(gòu)體,。


第一,,首先必須擁有良好的專業(yè)背景知識(shí)。對(duì)計(jì)算機(jī)原理,、計(jì)算機(jī)體系機(jī)構(gòu)有一個(gè)較好的了解,。知道計(jì)算機(jī)為什么能自動(dòng)的處理、解決問(wèn)題,,其優(yōu)越性和局限性是什么,。這個(gè)問(wèn)題在本科或者專科階段就應(yīng)該非常明確了,,但是在學(xué)校的課程比較簡(jiǎn)單,,所以只能大概了解一下了。

不過(guò)要有一定的感覺(jué),,比如明白申明得一個(gè)變量與物理內(nèi)存的之間的關(guān)系,。雖然這一點(diǎn)看似非常簡(jiǎn)單,但是也有工作很長(zhǎng)時(shí)間的工程師不是太明白,。

第二,,如果從事單片機(jī)或嵌入式的程序開(kāi)發(fā),對(duì)硬件必須有一定的了解,。程序是在硬件中運(yùn)行的,,如果程序運(yùn)行結(jié)果與預(yù)計(jì)的有區(qū)別,必須作出一個(gè)準(zhǔn)確判斷,,到底是硬件問(wèn)題還是軟件問(wèn)題,?并且有一定解決硬件問(wèn)題的能力。這就要求程序員必須對(duì)元器件,、數(shù)字電路,、模擬電路有一定掌握。

第三,,比較深刻理解了《數(shù)據(jù)結(jié)構(gòu)》,,有可能工作很長(zhǎng)時(shí)間也沒(méi)有使用過(guò)二叉樹(shù)、鏈表,、隊(duì)列等等,。但是《數(shù)據(jù)結(jié)構(gòu)》是以計(jì)算機(jī)為工具解決問(wèn)題總體介紹,即使我們不是明確使用了其中內(nèi)容,,但是書(shū)中的概念和解決問(wèn)題方法總是影響我們的編程思路和解決問(wèn)題的方法,。

第四,,了解一種編程語(yǔ)言,并且能完成日常性工作,。之所以是“了解一種語(yǔ)言”,,是因?yàn)椤罢莆铡币环N語(yǔ)言牽扯的問(wèn)題太多。合格的程序員需要一個(gè)養(yǎng)成的過(guò)程,,需要一個(gè)不短時(shí)間的工作過(guò)程,,這個(gè)過(guò)程時(shí)間遠(yuǎn)比學(xué)習(xí)的時(shí)間長(zhǎng)。也就是只有在工作中才能產(chǎn)生合格的程序員,。但是也沒(méi)有什么要特別擔(dān)心的,,學(xué)習(xí)也可以產(chǎn)生能工作的程序員。

 


第五,,具有良好的編程風(fēng)格,,一個(gè)程序員風(fēng)格到底怎么樣,不是太容易界定,。但是良好的編程風(fēng)格有明確的體現(xiàn),。程序的容錯(cuò)性、擴(kuò)展性,、一致性,、復(fù)用性都必須有非常好體現(xiàn)。這個(gè)更是不容易通過(guò)短時(shí)間的學(xué)習(xí)獲得,。日雕月磨通過(guò)一段不短時(shí)間的學(xué)習(xí),,一部分人可以是做到的。


當(dāng)然還有其他方面的要求,,比如文檔處理能力,,行業(yè)應(yīng)用知識(shí)等等。這個(gè)是列舉不完的,。程序員的群體非常特殊,,水平高程序員可以完成一件普通的工作,水平低程序員也同樣可以完成一件普通的工作,。只是使用時(shí)間,、資源不同,以及完成質(zhì)量不太一樣,。但是如果目標(biāo)是為了完成工作任務(wù),,其實(shí)有可能都是可以的。這就給人一個(gè)非常不好的錯(cuò)覺(jué),,就是程序員的工作技術(shù)含量不高,。很多企業(yè)不愿意花更多的錢來(lái)聘請(qǐng)技術(shù)水平更好的程序員。可以說(shuō)這種觀點(diǎn)非常不靠譜,,或者管理者沒(méi)有沒(méi)有仔細(xì)核算成本,。一個(gè)項(xiàng)目三個(gè)月完成、四個(gè)月完成,、六個(gè)月完成,,企業(yè)不是僅僅多付出一點(diǎn)點(diǎn)工資。而是牽扯到產(chǎn)品上市延遲,、辦公場(chǎng)地,、行政管理等費(fèi)用支出,如果與涉及到與其他部門協(xié)調(diào)問(wèn)題,,更是麻煩。如果產(chǎn)品因?yàn)槌绦蚩煽啃缘偷膯?wèn)題,,在后期維護(hù)上成本支出更大,。這些費(fèi)用應(yīng)該是程序工資10倍甚至更多。


其實(shí)我不太想告訴鄰居到底是“學(xué)”或者“不學(xué)”匯編語(yǔ)言,。一個(gè)合格程序員的也不僅僅是多學(xué)一兩門語(yǔ)言的問(wèn)題,。而且泛泛學(xué)習(xí)某種語(yǔ)言也不是太難的事情,有一句比較刻薄的話---“如果你已經(jīng)會(huì)使用一種語(yǔ)言編程,。另外一種也就半個(gè)小時(shí)至兩天就可以上手,。否則就是...”我懷疑這句話是一位非常自信的程序員提出的,但是確實(shí)有參考性,。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章,、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118,;郵箱:[email protected]