加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專(zhuān)業(yè)用戶(hù)
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

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

2017/04/07
51
閱讀需 26 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

?

鄰居的一位同學(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)晚?話(huà)說(shuō)西安地處內(nèi)陸,人們的思想有些保守,發(fā)展有些滯后,但是如今互聯(lián)網(wǎng)如此發(fā)達(dá),很多問(wèn)題其實(shí)他可以通過(guò)網(wǎng)絡(luò)了解。

2013 年時(shí),我到西安一家電力企業(yè)工作,部門(mén)經(jīng)理向我提了一個(gè)要求 --- 指導(dǎo)硬件部門(mén)的同事學(xué)習(xí)一下 C 語(yǔ)言。我的頂頭上司,也就我的這個(gè)部門(mén)經(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ì)使用匯編了。現(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ā)的。有一天在外地工作的一位銷(xiāo)售經(jīng)理回西安了,滿(mǎn)口稱(chēng)贊那款產(chǎn)品。

“看看人家匯編代碼,寫(xiě)的多規(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é)的專(zhuān)業(yè)知識(shí)的一部分。但是其它知識(shí)即使不用,也不能缺失。在平時(shí)可能體現(xiàn)不出任何問(wèn)題,但是在關(guān)鍵的時(shí)候就有了明顯的區(qū)別,所以程序員是一個(gè)綜合知識(shí)結(jié)構(gòu)體。

第一,首先必須擁有良好的專(zhuān)業(yè)背景知識(shí)。對(duì)計(jì)算機(jī)原理、計(jì)算機(jī)體系機(jī)構(gòu)有一個(gè)較好的了解。知道計(jì)算機(jī)為什么能自動(dòng)的處理、解決問(wèn)題,其優(yōu)越性和局限性是什么。這個(gè)問(wèn)題在本科或者專(zhuā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è)不愿意花更多的錢(qián)來(lái)聘請(qǐng)技術(shù)水平更好的程序員??梢哉f(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)用支出,如果與涉及到與其他部門(mén)協(xié)調(diào)問(wèn)題,更是麻煩。如果產(chǎn)品因?yàn)槌绦蚩煽啃缘偷膯?wèn)題,在后期維護(hù)上成本支出更大。這些費(fèi)用應(yīng)該是程序工資 10 倍甚至更多。

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

與非網(wǎng)原創(chuàng)內(nèi)容,不經(jīng)允許,不得轉(zhuǎn)載。

更多相關(guān)內(nèi)容,請(qǐng)點(diǎn)擊:程序員趣事一籮筐

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

早年從事軟件測(cè)試工作,2002年從事C語(yǔ)言教學(xué)。同年設(shè)計(jì)了視音頻切換器,用于硬盤(pán)播出機(jī)。次年開(kāi)始從事熱電偶檢測(cè)裝置的設(shè)計(jì)。2010年從事現(xiàn)代農(nóng)業(yè)管理機(jī)的設(shè)計(jì)。2012年從事電力行業(yè)的FTU設(shè)計(jì)與研發(fā),成功編寫(xiě)了FTU軟件。2013參與了塔吊安全監(jiān)控設(shè)備開(kāi)發(fā)。10多年來(lái)對(duì)C語(yǔ)言情有獨(dú)鐘。略懂verilog。