這兩天每天中午午休前都會(huì)看一些《編程人生》。現(xiàn)在已經(jīng)看了七八個(gè)人,這些人開始編程的時(shí)候,正好是計(jì)算機(jī)的起步期,所以對(duì)整個(gè)計(jì)算機(jī)的底層都比較了解。不知道這是不是這些人能夠成為大師的一個(gè)必要條件,自己有沒有必要在這方面努力一下。我想這也是很多程序員思考過的問題。現(xiàn)在分享一下我的思考,和大家一起探討。——ps:這些人大部分在中學(xué)的時(shí)候就開始編程,而那個(gè)時(shí)候我們一般都正在為考試悶頭學(xué)習(xí),這個(gè)差距要我們現(xiàn)在來彌補(bǔ)。
好的,首先有必要澄清一下“底層知識(shí)”的概念,對(duì)程序員來說什么才是底層知識(shí)?
一般情況下,我們可能會(huì)認(rèn)為底層知識(shí)就是操作系統(tǒng),編譯器,寄存器等等相關(guān)知識(shí)。我認(rèn)為這個(gè)問題是相對(duì)的,而不是絕對(duì)的。這取決于程序員從事那個(gè)層次的開發(fā)工作。如果是一個(gè)c語言開發(fā)者,把這些知識(shí)歸為底層知識(shí)也許很合理,但是對(duì)一個(gè)java或者更高級(jí)語言的開發(fā)者來說,有些不準(zhǔn)確,或者不可以稱為直接的底層知識(shí)。
我認(rèn)為,所謂的底層知識(shí),是指他編程或開發(fā)所依賴的平臺(tái)(或者框架,工具)的知識(shí)。比如,對(duì)于java開發(fā)者來說,java虛擬機(jī),以及它所用的框架等知識(shí)就是他的底層知識(shí),而更底層的知識(shí),姑且叫它間接的底層知識(shí)吧。
為什么要學(xué)習(xí)底層知識(shí)?
不學(xué)習(xí)底層知識(shí)可能不會(huì)阻礙你稱為一個(gè)稱職的程序員,但也許會(huì)阻礙你成為一個(gè)優(yōu)秀的程序員。
了解底層的知識(shí)有助于解決問題,并且做出更好的設(shè)計(jì)。打個(gè)比方,就像庖丁解牛,他看到一個(gè)牛后,不止看到的是牛,而是由各個(gè)骨骼,經(jīng)絡(luò),肌肉等模塊組成的有機(jī)體——整個(gè)系統(tǒng)對(duì)你來說就是赤裸裸的,沒有任何神秘的面紗。這樣也許能夠給程序員提供更多的安全感。
但是如果你編程所依賴的平臺(tái)需要你去了解更底層的知識(shí)才能夠解決問題,那么,他可能沒有做好他應(yīng)盡的職責(zé)。
底層知識(shí)從何學(xué)習(xí)?
《編程人生》中有一個(gè)人提到過,要敢于去“打開盒子”,看里面到底是什么。而我要補(bǔ)充的是,盡量去打開你身邊的盒子。
現(xiàn)在開發(fā)有個(gè)特點(diǎn),就是分工越來越明確,而且整個(gè)編程的知識(shí)體系結(jié)構(gòu)也越來越龐大,我們面前的“盒子”很多,我們沒有精力去把每個(gè)盒子都打開。學(xué)習(xí)底層知識(shí)就要從你最直接的底層開始學(xué)起。一方面,你在工作中會(huì)遇到類似的問題,有了需求,學(xué)習(xí)效率就會(huì)高很多;另一方面,你也有這方面的基礎(chǔ),學(xué)起了可能更加的水到渠成。
當(dāng)你把你的底層知識(shí)征服了,你就有資本(基礎(chǔ),能力)去征服更底層的知識(shí)了。
-
程序員
+關(guān)注
關(guān)注
4文章
954瀏覽量
30288
發(fā)布評(píng)論請(qǐng)先 登錄
如何在 樹莓派 上編寫和運(yùn)行 C 語言程序?

阿里云升級(jí)通義靈碼AI程序員,全面上線
TMS320C55x DSP CPU程序員參考補(bǔ)充

UCD3138A64/UCD3138128程序員手冊(cè)

機(jī)械革命發(fā)布CODE AI程序員本
Linux驅(qū)動(dòng)程序程序員指南

AI編程工具會(huì)不會(huì)搶程序員飯碗
第五屆長(zhǎng)沙·中國(guó)1024程序員節(jié)開幕
京東上萬程序員都AI用它!

程序員節(jié)視頻創(chuàng)意大賽,用串口屏贏取千元大獎(jiǎng)

程序員節(jié)視頻創(chuàng)意盛宴,邀您共襄盛舉!

助力程序員告別困擾已久的夢(mèng)魘-Bug

大模型時(shí)代,程序員當(dāng)下如何應(yīng)對(duì) AI 的挑戰(zhàn)

評(píng)論