備忘錄:計算機的世界 - 直觀/體系
計算機的世界,是人類為自己構建的虛擬世界,是一個貨真價實的平行世界。大部分人所理解的計算機的世界,指的是計算世界所構建的世界,而不是計算機的世界。普通人消費的是「計算機世界」這座工廠所生產出來的產品,唯有 programmer 有幸得以窺見其中的蛛絲馬跡。
遨游于計算機的世界,能夠讓你跳脫出來更好地審視你自己所生活的真實世界。就像人們常說的,人要出了國才知道怎么愛國。當你重新踏入一個新的世界后,你能夠對你當前所處的世界有更為深刻的認識。
從我們自己的教育經歷來看,物理學、生物學、化學,都被放在了小學之后,從初中開始才開始認真探討真實世界的繁復細節。開始構建細致的理論,以系統而科學的方法來探討真實世界背后的現象、規律。
計算機的學習,往往會容易忽視上述的認知過程。我們以為自己一開始就在構建理論、細致探討計算機世界的每一個細節。但事實上,實踐計算機最開始的三年五載,都是在學習嬰兒到小學時的內容:在計算機的世界中,什么叫做呼吸、什么叫做邁步,什么叫做吃飯,什么叫做閱讀。
這一切,全都是為了在自己的頭腦中建立計算機世界的「直觀」。在這一階段,大家其實沒有辦法談論模式、談論架構、談論底層的鋪墊與設計。因為在這個階段,你最需要掌握的是后面的計算機術語的「真實所指」。在你沒有大量的編程經驗之前,所有的計算機術語只不過是你望文生義的YY。你必須通過實際的工作和操作,真正弄清楚、體驗到這些術語到底意味著什么。
在這個階段過分地去探討「術語」和「理論」是非常危險的。它們容易讓人走火入魔:因為你是在憑借頭腦里對這些術語的YY來做著各種邏輯推演。根基就錯了,越是推演就越是會搞得自己一頭霧水。這個階段的主要任務,就是拼命地工作和實踐,就像嬰兒開始學習走路和吃飯一樣,不需要什么理論指導,只是不斷地試錯、不斷地讓傷痛和反饋來幫助自己形成對行為和模式的肌肉記憶。
過完最開始的三年五載,很多 programmer 開始陷入平庸、開始遇到自己的天花板。似乎自己已經積累了足夠的經驗,對各種業務和活計也都爛熟于心,不知道該何去何從。此時最為微妙的地方就在于,他們沒有意識到:這個階段的自己,就像是已經掌握了「走路」技能的小學生,在「走路」這項技能上雖然已是登峰造極,可是,卻完全不明白什么是運動、什么是力、什么是動力學。雖然好像一切行為都已經內化成自己的肌肉記憶,可是對背后的原理和脈絡,還一無所知。
此時是最好的重新開始學習基礎知識的時候。不可避免,在計算機的入門階段你會接觸到操作系統、網絡、軟件工程、語言設計這些材料。你以為自己明白它們在講什么,可事實是,在入門階段你對這些材料的關注點,幾乎全部集中在如何建立直觀。至于背后所蘊含的深刻道理與細致理論,其實是無暇關注、也沒有能力關注的。但這樣的誤解,會讓很多人以為掌握了其精髓。自然,也就會對重新閱讀這些基礎書籍表示憤慨:為什么要學習自己已經「會」的東西?但這不過是自己的一廂情愿的幻覺罷了。當你懷揣已經掌握的直觀,再去閱讀學習這些曾經的基礎材料時,你會發現,自己似乎從未學習過。
重新閱讀學科的基礎材料,需要保持初中時研習物理學、化學的態度。不要自以為是地念叨:這個我知道、這個我用過,而是要用「元認知」去思考,這個現象與操作行為是否能夠被更為本質的幾個基礎命題和概念推導出來?能夠作為基本定義的概念與公理,有哪些?這些基石的適用范圍是否足夠寬廣?是否能夠足夠囊括計算機領域中貌似不同的各個領域?
也即是,這一階段你真正需要關心和探尋的是:什么是計算機世界的不變量?由這些不變量所構筑的理論體系,又是如何來統領你那三年五載所積累起來的「直觀」?你又是否能夠應用這些規律,來重新指導你的編程工作,來更優雅、高效地管理自己的工作與信息。要緊的不是現象,因為它們幾乎都已經內化為你的肌肉記憶,要緊的是規律、機制與體系的探究,你得著重掌握計算機世界的物理學、生物學和化學,而不是自以為是地說,我會走路、我會吃飯、我會消化食物。
我想,這是計算機世界最為微妙的地方,你帶著真實物理世界的經驗,自以為天然就具備在計算機世界中吃喝拉撒的本領,以為開局即是對計算機世界理論與規律的學習與探討。而事實是,無論你是否愿意,你的開局是掌握計算機世界呼吸與走路的本領,再來才有資格重新學習那個世界中現象背后的規律與體系。
有的人以學習理論的心態來開局,成了只會玩弄概念并不知道其真實所致的走火入魔者;有的人完成了直觀的建立,卻以為自己已經掌握了背后的機制與體系,被無情的天花板死死壓在「中階」動彈不得。
我們或許對于現實世界太過熟悉,以至于會忘記如何從嬰兒開始以什么樣的認知規律和學習方式來掌握對這個世界的認知,進而更深入地理解世界的規律、應用所掌握的規律。而這份「忘記」的影響,無疑會在計算機這個平行世界的行徑中展露無遺。
浙公網安備 33010602011771號