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

做者:劉國輝           轉載請註明出處
在個人上一篇文章中(不朽傳奇-雲計算技術背後的那些天才程序員:Qemu的做者法布里斯貝拉)提到了Bellard是一個極具黑客氣質的天才程序員,從某種意義上來講,只有黑客精神能完美闡述Bellard那些「離經叛道」也好,難以想象也好的行爲背後的驅動力。注:這裏的「黑客」和咱們常常在影視做品或傳媒中出現的,主要進行計算機或網絡攻擊,破壞等行爲沒有任何關係,Eric Raymond對此有過清晰的描述,在此再也不贅述,爲了不誤讀,本文統稱爲極客。html

虛擬世界中的極客精神程序員

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,ALide

中世紀:
Space-Surfers
「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層面,又劃分爲內核程序員與用戶態程序員idea

現代:
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,我能用計算機實現任何事情「。

就像那句話,真正被築起的是心靈的高牆,不是要置人於千里,而是要看看誰會足夠在乎本身,從而去推倒這座牆。

相關文章
相關標籤/搜索