整理 | 鄭麗媛
據(jù)《2021-2022 中國開發(fā)者調(diào)查報告》顯示,歷史悠久的匯編語言是程序員最討厭的編程語言(占比 37%),其次便是 C++(17%)和 C(16%)。
作為一門面向機器的程序設(shè)計語言,匯編語言固然十分精細,但對于程序員而言卻不太友好——不好記憶,里面也沒有指針的概念,所有的變量、函數(shù)都由棧或堆上的偏移地址所代替。與高級編程語言相比,匯編在可讀性、開發(fā)效率和可移植性上顯然存在不足。
所以,我們自然覺得:都 2022 年了,在眾多高級編程語言的包圍下,還會有人將匯編作為程序員入門的第一個編程語言嗎?有的,前陣子一位 Reddit 用戶(以下用 " 小 R" 代稱)就發(fā)帖稱:"我的叔叔,一位前程序員,建議我從匯編語言學(xué)起……"

建議原因:應(yīng)該先敲下最難的 " 釘子 "
小 R 表示,TA 最近對學(xué)習(xí)編程有點興趣,因此找了之前做程序員的叔叔,想問問有啥入門建議,結(jié)果 TA 叔叔開口就是:"一定要遠離那些簡單的高級編程語言,如 Python 或 Ruby。"
叔叔對小 R 解釋道,當年他第一次學(xué)習(xí)基礎(chǔ)代碼時,一度認為自己是個天才,因為他幾天內(nèi)就很好地掌握了新技能。直到后來他又接觸到了 C 語言,才完全顛覆了他的自我認知——他被 " 狠狠 " 難住了一段時間,而且之前掌握的那些基礎(chǔ)技能在學(xué)習(xí) C 語言上完全沒用。
"簡單的編程語言顯然不會教你任何關(guān)于編程和計算機究竟是如何工作的知識。你現(xiàn)在還年輕,有一個能吸收很多知識的‘海綿大腦’,還有許多互聯(lián)網(wǎng)指南可參考,你應(yīng)該先敲下最難的‘釘子’,把匯編或者 C 作為第一門語言,以便之后對任何事情都可以輕松學(xué)習(xí)。"

不必對高級編程語言避之不及
顯然,小 R 叔叔的這番言論跟現(xiàn)實中大多程序員的選擇相悖,小 R 也因此茫然地將問題拋給了廣大網(wǎng)友:" 你們對此的看法是什么?"
部分網(wǎng)友認為,能說出這種觀點的 " 叔叔 " 肯定是大齡程序員:
" 他告訴你要以一種他自己都沒嘗試過的方式去做,而這個觀點仿佛來自 30-40 年前。"
" 你叔叔太老派了。如果他是在 1980 年之前畢業(yè)的,那可以理解,畢竟匯編在當時很常見。但到 1990 年以后,已經(jīng)逐漸有更多的選擇了。"
有網(wǎng)友調(diào)侃道,這種學(xué)習(xí)方法太過于 " 追本溯源 " 了:
" 這感覺就像是說,在你開車之前,你首先要知道它的每一個部分是如何工作的。"
" 既然這樣,那就先學(xué)半導(dǎo)體物理,然后學(xué)晶體管,然后是 CMOS 邏輯,然后是邏輯門,然后是數(shù)字電路,然后是計算機構(gòu)成,這樣更能彰顯你叔叔的‘厲害’。"
話雖如此,但每一門編程語言能流傳至今,必定有其的意義,匯編也是如此,現(xiàn)在操作系統(tǒng)中依舊還有匯編的身影。被許多程序員厭惡的匯編語言,更適用于底層硬件,如單片機、工業(yè)控制、實時控制等,它更為精簡,運行效率也更高。
兩年前,曾有一位學(xué)過匯編的程序員分享道:
" 我也學(xué)過匯編,做一個程序要寫好多條命令,而且思路要清晰,對程序員智商要求非常高。我以前單位有幾個八十年代大學(xué)畢業(yè)的程序員,智商真的是非常高。現(xiàn)在的編程真的很傻瓜化,從沒學(xué)過編程的短期內(nèi)也能很快自學(xué)編程。"
平心而論,學(xué)好匯編確實能深入理解計算機底層原理,但這并不意味著就一定要對高級編程語言避之不及——如今,高級編程語言的開發(fā)效率、適用范圍都遠超過匯編,更符合現(xiàn)在企業(yè)所追求的高效。
最后引用一位網(wǎng)友的建議:" 如果你想成為編譯器開發(fā)者或硬件工程師這類人,你可以好好學(xué)匯編;但如果你只是從事軟件開發(fā),最多根據(jù)自身能力適當了解一下匯編即可。"
那么,作為程序員的你,接觸并學(xué)習(xí)的第一門編程語言是什么呢?
原文地址:http://www.myzaker.com/article/634285d4b15ec06a652dea8d
轉(zhuǎn)載請注明:“叔叔建議我遠離 Python,從匯編語言學(xué)起......” | 快導(dǎo)航網(wǎng)