天才程序員的靈魂——現實與虛幻世界中的極客精神

>>>  技術話題—商業文明的嶄新時代  >>> 簡體     傳統

 作者:Liu Guo Hui,EasyStack 架構師

  在我的上一篇文章中(不朽傳奇-云計算技術背后的那些天才程序員:Qemu 的作者法布里斯貝拉)提到了 Bellard 是一個極具黑客氣質的天才程序員,從某種意義上來說,只有黑客精神能完美闡述 Bellard 那些“離經叛道”也好,不可思議也好的行為背后的驅動力。

注:這里的“黑客”和我們經常在影視作品或傳媒中出現的,主要進行計算機或網絡攻擊,破壞等行為沒有任何關系,Eric Raymond 對此有過清晰的描述,在此不再贅述,為了避免誤讀,本文統稱為極客。

  虛擬世界中的極客精神

jedi

  現實世界里極客精神與天才程序員的關系就像是科幻電影星球大戰中所描繪的原力與絕地武士的關系,兩者驚人的相似,原力是絕地武士生命的組成部分之一,極客精神亦然,就像絕地武士的最強大力量來自于原力,天才程序員的最強大力量來自于極客精神,其導致的結果也一樣,絕地武士主宰了整個宇宙文明的走向,現實世界中天才程序員影響了人類整體信息產業的格局,進而影響了整個人類文明的走向,同樣,在科幻世界中絕地武士屈指可數,現實世界中天才程序員鳳毛麟角。

  計算機體系結構一個現實世界中的矩陣

  曾幾何時,計算機體系結構對于程序員來說就像矩陣對于 Neo 一樣透明,因為第一代程序員就是硬件設計人員,他們設計并制造了硬件,同時寫下能夠被硬件執行的代碼,時至今日,我們很少能夠看到這些對計算體系如此了如指掌的人了,偶爾閃現的那些身影,他們的名字振聾發聵,并被我們冠以天才的稱號,究其原因,是基于工業化的發展需要,我們創造性的為整個計算領域建立了一套嚴密的框架體系,這些框架體系是如此“完美”,使整個計算機工業從硬件到軟件嚴絲合縫的粘合在一起,并以極快的速度向前飛速發展,與此同時,作為這個體系的一個組成部分,程序員自然喪失了先前的自由,被體系結構牢牢禁錮于其中,就像矩陣中的 Anderson,命運從此不由自己掌握。讓我們簡要回顧一下計算機發展史,從中我們可以清晰的看到這一堵堵禁錮我們于其中的高墻是如何建立起來的。

  遠古時代:

matrix

  “too much information to decode the Matrix. You get used to it. I…I don’t even see the code. All I see is blonde, brunette, red-head.” 《Matrix》

  第一代程序是用機器語言編寫的,機器語言是內置在計算機電路中的指令,由 0 和 1 組成。例如計算2+6 在某種計算機上的機器語言指令如下:

10110000 00000110

00000100 00000010

10100010 01010000

  第一條指令表示將“6”送到寄存器 AL 中,第二條指令表示將“2”與寄存器 AL 中的內容相加,結果仍在寄存器 AL 中,第三條指令表示將 AL 中的內容送到地址為 5 的單元中。毫無疑問,這種機器指令不需要解碼,具有絕佳的執行效率,在這個時代,程序員往往就是硬件設計人員。在這個時代的末期出現了匯編語言,它使用助記符(一種輔助記憶方法,采用字母的縮寫來表示指令)表示每條機器語言指令,例如 ADD 表示加,SUB 表示減,MOV 表示移動數據。相對于機器語言,用匯編語言編寫程序就容易多了。例如計算2+6 的匯編語言指令如下

iMOV AL,6

ADD AL,2

MOV #5,AL

  中世紀:

http://www.openstack.cn/wp-content/uploads/2014/04/Space-Surfers-300x163.jpg

  “No – no words. No words to describe it. Poetry! They should have sent a poet. So beautiful. So beautiful… I had no idea.” 《Contact》

  當硬件變得更強大時,就需要”更強大”的語言使計算機得到更有效地使用。匯編語言向正確的方向前進了一大步,但是程序員還是必須記住很多匯編指令。相應的,高級程序設計語言(簡稱高級語言,機器語言和匯編語言稱為低級語言)從而登上歷史舞臺,高級語言的指令形式類似于自然語言和數學語言(例如計算2+6 的高級語言指令就是2+6),不僅容易學習,方便編程,也提高了程序的可讀性。但是在獲得效率的同時,識別機器語言成為了一種極為稀缺的能力。

  文藝復興:

sky

  “We don’t know who struck first, us or them. But we know that it was us that scorched the sky.” 《Matrix》

  在這個時期,由于用集成電路取代了晶體管,處理器的運算速度得到了大幅度的提高,處理器在等待運算器準備下一個作業時,無所事事。因此需要編寫一種程序,使所有計算機資源處于計算機的控制中,這種程序就是操作系統。

  到了 1973 年的時候,貝爾實驗室的 Ken Thompson 與 Dennis Ritchie 感到用匯編語言做移植太過于頭痛,他們想用高級語言來完成第三版,對于當時完全以匯編語言來開發程序的年代,他們的想法算是相當的瘋狂。一開始他們想嘗試用 Fortran,可是失敗了。后來他們用一個叫 BCPL(Basic Combined Programming Language)的語言開發,他們整合了 BCPL 形成B語言,后來 Dennis Ritchie 覺得B語言還是不能滿足要求,于是就改良了B語言,這就是今天的大名鼎鼎的C語言。于是,Ken Thompson 與 Dennis Ritchie 成功地用C語言重寫了 Unix 的第三版內核。至此,Unix 這個操作系統修改、移植相當便利,為 Unix 日后的普及打下了堅實的基礎。而 Unix 和C完美地結合成為一個統一體,C與 Unix 很快成為世界的主導。現代操作系統接管硬件的之時,也是新的一堵墻建立之日,從此程序員更多依靠編譯器優化代碼,利用鏈接器完成地址空間的組織,依靠 OS 來驅動硬件,利用硬件和 OS 來尋址和實現多任務,從 OS 層面,又劃分為內核程序員與用戶態程序員。

  現代:

Shawshank_Redemption_165

  “These walls are funny. First you hate ‘em, then you get used to ‘em. Enough time passes, you get so you depend on them. That’s institutionalized.”《Shawshank Redemption》

  體系結構(高墻)的建立使得計算機工業飛速發展,技術與效率的突飛猛進帶領我們快速步入云時代,但是,自由精神并沒有因此泯滅,相反的,以 Linux 為代表的開源軟件使得我們重新有機會去接觸并掌握那些我們“失去”已久的東西,程序員重新開始站在軟件的角度來審視硬件,通過編寫直接針對硬件或由軟件模擬硬件的代碼來重新獲取我們失去已久的自由。同時以 Google 和 Facebook 為代表的公司把 Full Stack 提升為衡量優秀程序員的標準也極大的激發了程序員的熱情。

  極客精神與挑戰極限

bird

  “Some birds aren’t meant to be caged, that’s all. Their feathers are just too bright.” 《Shawshank Redemption》

  “有的鳥畢竟是關不住的,它們的羽翼太光輝了!”

  極客精神的最核心要素是獨立思考并且熱衷于挑戰極限,有一句哲語是這樣描述的,“精神的最高境界是自由”,極客精神正是這句話的生動寫照,善于挑戰與打破極限是天才程序員與普通程序員的本質區別,具備極客精神的那些天才程序員能夠像鳥兒翱翔于藍天一樣穿梭于計算機體系結構的各個角落,能夠像夏洛特福爾摩斯閑庭信步于思維宮殿一樣游走于計算科學的各個領域,這些得益于在他們眼中,那些被高墻隔開的各個區域只不過是他們的一個個私有領地,天才固然有一部分因素來自于他們的天賦,但是更多的是來自于他們對于自由的渴望和挑戰極限的熱情,就像傳奇程序員 John Carmack 所言,”只要冰箱里有足夠的 Diet Coke 和最喜愛的 Pizza,我能用計算機實現任何事情“。

  就像那句話,真正被筑起的是心靈的高墻,不是要置人于千里,而是要看看誰會足夠在意自己,從而去推倒這座墻。


網載 2014-07-03 12:07:47

[新一篇] 左岸:如果你不知道下一步往哪走?

[舊一篇] 公司上市后 員工們都是怎么花錢的
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表