天天看點

【更新中】黑客與畫家讀書筆記

【更新中】黑客與畫家讀書筆記

序和前言

我讀的是精裝本,譯者阮一峰的序前面有詳細介紹保羅的生平,一個非常令人欽佩的創業者。

他的求學生涯看似迷茫混沌,但他對多個次元知識領域的追求卻成就了他之後的事業發展豐碑。從他的閱曆我們似乎可以看到一模一樣的事情在中國網際網路領域正在發生,而他的思想和決策在當時矽谷的創業圈取得了偉大的成功。相信他的智慧同樣對今天中國的網際網路從業者們有借鑒意義。

譯者阮一峰在序裡面嘗試用最直白的方式向大衆普及本書中黑客的含義和黑客文化和對世界的影響,意在把保羅的思想傳播給更廣大的群體。因為世界正在被黑客一點點改變,每個想要跟上時代步伐的人都有必要了解這個群體和他們的所做所想。

1. 為什麼書呆子不受歡迎

來自一個Nerd的深度吐槽。第一章我幾乎全程笑看看完的,譯者成功的傳達了保羅的段子手氣質,诙諧幽默,一針見血的語言有點兒王爾德的風格。

他從國小開始吐槽美國的教育體制。拿工業革命前學徒制下的年輕人和現在在學校中的年輕人做對比。得出了幾個非常有意思的結論。而他作為班級裡“書呆子”群體的一員,自然對令他倍感煎熬和受挫的成長環境有吐不完的槽。

他總結校園生活用了兩個詞: 殘忍和無聊。盡管各國教育體制有所差異,但是看他的吐槽居然也會讓在中國應試教育下土生土長的我們産生共鳴。

2. 黑客與畫家

點題的第二章,保羅是為數不多的與計算機無關的東西感興趣的程式員。他喜歡寫小說,學過哲學,人工智能研究了一半居然跑去學畫畫。

看書名,你很難把這兩個身份聯系起來,但是仔細研究黑客的工作性質和方式,你就會贊同這種類比。

現階段人們喜歡對凡是涉及到計算機的工種統為計算機科學,但是保羅又将這個學科的人分成了三類,一種是借概念拿經費的數學家,一種是研究專門性題目的計算機博物學家,最後一種才是緻力于設計優美軟體的黑客。

而大學,實驗室甚至是公司都不是黑客理想的土壤,他認為,優秀的黑客最好是通過創業來施展拳腳。

3. 不能說的話

讀這一章,你能清楚的看到保羅對曆史發展脈絡的把握,他能輕松的提煉出适用于當今時代特征的規律來達到他的目的。

保羅提供了5種姿勢教我們發現“不能說的話”:

  1. 看這些話是不是符合:不能說出口+正确的條件
  2. 關注被貼上标簽的概念:思考與标簽相關的想法
  3. 将當代觀念與不同時期的古代觀念diff一下,或者把世界各地的文化觀念diff一下
  4. 尋找那些一本正經的捍衛者,看看他們到底在捍衛什麼
  5. 觀察禁忌是如何産生的,又是怎麼被大衆接受的

每個時代都有用這些“不能說的話”框定的範圍,範圍之外的禁忌限制着人們的思維行動也影響着社會的運作機制和曆史發展。

保羅總結:禁忌的發起者往往是勢力中等但想要強化自身同時打壓競争者的團體,因為關于禁忌的鬥争屬于思想層面,更有煽動性和破壞性。

之前保羅吐槽過工業時代之後的教育體制,在這裡,他甚至從未成年兒童的成長語境做了絕對的否定:大人們本能的對孩子們的保護就是一種禁锢:使他們的語境遠離“不能說的話”,使他們認識的世界遠離真實的存在。

那我們為什麼要去發現這些“不能說的話”呢,就像每個此刻閱讀本書的讀者一樣,我們有好奇心,不願意随大流上當,喜歡訓練自己思考……更重要的是,優秀的作品往往就是從這些“不能說的話”背後脫穎而出的。

對于“不能說的話”,保羅主張不要做無謂的犧牲,他說:

與笨蛋辯論,你也會變成笨蛋
自由思考比暢所欲言跟重要

如果保羅生在二戰,我想他應該是圖靈,而不會是戰場上沖鋒陷陣的某将士。

而“不做無謂的犧牲”并不代表沒有行動,不能正面剛,但是我們可以攻擊禁忌的抽象描述(看看那啥之後是怎麼撥亂反正的),或者使用隐喻(《1984》,《動物莊園》等作品層出不窮)還有幽默感(用笑話擊垮禁忌)

4. 良好的壞習慣

保羅對于黑客的贊賞甚至多少是有些偏激的,如果脫離語境,很可能其中的一些觀點會遭到别人強烈的抨擊。

但我們單從黑客精神積極的一面來看,它就意味着創新。黑客們對于開源的呼籲和企業對知識産權的保護,在經曆多年的博弈後,終于形成了自由又有組織的開源社群。

通過對黑客精神的抽象,保羅把話題從計算機領域拉到了更大的政策以及公民自由的讨論。也許他的論據相對于系統的社會學和經濟學文章來說不夠嚴謹和客觀。但是當時表現出的隐憂還是有一定前瞻性的。

5. 另一條路

這一章前半段幾乎是保羅對自己設計的網際網路軟體的一篇推廣,但是寫得極有前瞻性,1995年,他就決定放棄開發PC軟體,轉向Web應用。2004年成書,裡面關于他對網際網路服務的闡述,很多都能看到當今雲計算的雛形。而2004年之後不久,雲計算就開始從實驗室萌芽了。

随着軟體工程從傳統PC轉向網際網路,從運維更新到盈利模式都發生了革新性的變化,這也為資訊工業進入雲計算提供了關鍵的過渡。

一個能夠從哲學次元思考的架構師才是好産品經理。喬布斯是這樣,保羅也是這樣,他從使用者的購買習慣中,悟到一個樸素的道理:如果某樣東西易于購買,你就會多買一點。于是他把一次性出售軟體版權的模式改為了按期訂閱的方式。多年後,這個道理在馬雲那裡被發揮到機制。現如今,雲計算中的Iaas、Paas、Saas,無一例外,都在使用訂閱的售賣方式。

保羅是個耿直的程式員,他毫不忌諱地談到軟體行業的價格歧視。同樣的産品,也許都是同一套代碼,賣給大型企業和軍方的價格可能比賣給小企業的價格相差十倍。事實上,從此之後,網際網路對于真正想有所作為的初創公司敞開了機會的大門。網際網路公司托管了公司所有的IT職能,讓團隊可以專注于業務本身,而網際網路技術的發展有反過來幫助公司的業務創新。

是以回頭看,保羅成為創業之父的道路可以說是水到渠成。

文章後半段,保羅在講述了自己的創業故事之後,就開始為躍躍欲試的創業者們搖旗呐喊,鼓勵他們積極投身創業,直面風險,用強大的意志力和才華與大型企業争奪資源,彎道超車。網際網路能掀起如此之久,如此龐大的浪潮,就是因為,在網際網路的世界裡,可以創造一個又一個以小博大,以弱勝強的創業神話。

回過頭再來看那個激情澎湃的時代,也許如今的市場又變成了大型企業壟斷話語權的階段,大企業盤踞在開源社群基金會的席位,大資料體量下的創新需要投入更大的人力和資本。普通的獨立創業者似乎沒有太多的機會。但是風水輪流轉,不好說在将來的哪一天,又會成為個人英雄迸發無限力量的時候。

6. 如何創造财富

這是個很大的話題,從定義财富到實操指導再到最後的知識改變世界的結論。保羅用自己的創業故事向躍躍欲試的創業者們提供了一個發家緻富的範例。

他認為,科技創業是人類史上最正直的緻富方式吧畢竟縱觀曆史,最常見的擷取大量财富的方式主要是:繼承、婚姻、征服、沒收。

而創業的初衷總是想要解決一個具體的問題,即使從形而上學的觀點上,這個動機最終會帶來不好的結果,但它确實在當下創造了财富,為世界提供了新的解決方案。

7. 關注貧富分化

不太客氣的說,這部分内容實際上是保羅對自己取得财富合理性的辯護,随着矽谷創業潮崛起的新一代富豪被越來越多人讨論和批評,保羅給出了非常激進的觀點:他認為,因為技術革新帶來的貧富差距非但不是有害的,而是正面和積極的。

如果隻是從鼓勵創業的角度出發,我們可以了解他這種觀點展現了一種社會資本對于技術創新的青睐,但是其中的利害關系真的就那麼簡單嗎?當資本開始限制技術攻堅,股東成了可以左右研發方向的重要因素時,科研價值和财富價值不再是互相促進的正相關關系。所謂的貧富差距還是公平和積極的嗎?這一點保羅沒有講,但是他的行為早就說明了這一點:賣掉自己的産品,不去伺候難搞的董事會。

8. 防止垃圾郵件的一種方法

這篇技術挂的文章說明一個道理:學得好數學的重要性。大多數計算機工科生可能不太能第一時間想到拿起數學工具解決問題。但事實上,數學,才是最優美,最簡潔的解決方式。

盡管研究所學生課程中一直有機率論、矩陣論這類高等數學的科目,但是很難讓學生直接體會到它們對實際應用中起到的作用。保羅這篇文章很适合被編入大學(大學也有機率論)教材裡去。

9. 設計者的品味

保羅總結歸納的關于好設計的特點,值得每個人抄下來貼在電腦邊上作為座右銘:

好設計是簡單的設計

好設計是永不過時的設計

好設計是解決主要問題的設計

好設計是啟發性的設計

好設計是艱苦的設計

好設計是看似容易的設計

好設計是對稱的設計

好設計是模仿大自然的設計

和設計是一種再設計

好設計是能夠複制的設計

好設計是呈批出現的

好設計常常是大膽的設計

從大自然到繪畫到電子産品再到軟體程式,似乎都遵循着這些規律。

10. 進階語言

每個計算機專業大學生可能都經曆過彙編語言的折磨,這可能也是踏入計算機行業最先要經受的煎熬吧,雖然說,這個東西在将來的學業和工作中,幾乎不會再涉及,但是對于一個入門者,它的意義可能就在于:來一次和計算機真正的親密接觸。

C語言已經成為介于彙編語言和進階語言之間的存在。如非必要,越來越多的開發項目選擇了更為高效的進階語言,大多數作業系統還都是用C語言寫的,不過随着各家硬體廠商的努力,C語言的這方面優勢也在逐漸的壓縮,而它的劣勢則越來越顯著,就像保羅開玩笑講的一樣:人們還是希望“緩存區溢出攻擊”繼續存在再去,以便讓大家時時保持警惕。

看一位程式員大佬跟你聊語言是非常舒爽的事。他有足夠豐富的開發經驗和廣闊的技術視野。對于:什麼是最好的語言?面向過程好還是面向對象好?之類的問題,他不會給出一個确切的答案,而是仔細分析對比其中的優劣,并且可以輕輕松松拿生活中執行個體做有趣的類比。這對于每一位開發者來說,也是一種警醒:對未知保持敬意和好奇,對已知保持客觀冷靜的态度。

11. 一百年後的程式設計語言

探讨這個問題很有趣,這幾乎是程式開發領域的投資問題:看準哪個語言将來會異軍突起,就去鑽研這個語言。

在考慮這個問題的時候,硬體技術的發展是不容忽視的問題。如今很多計算機語言在十多年前看來簡直是對硬體運算能力的糟蹋。至于語言本身,保羅認為是緩慢的:變成語言的進化速度更想數學符号的進化速度,而不像真正的技術。

在保羅思考這個問題的時候,其實有兩個如今已成為現實的技術已經呼之欲出:雲計算,AI。

**12. 拒絕平庸 **

讀完保羅對于Lisp語言的安利,我就在網上找到了一片關于Lisp更系統的介紹文章。看完後隻想閉嘴,去找本《Ansi Common Lisp》翻一翻。

Lisp 是象牙塔的産物,是人工智能研究的工具;是以,它對于程式設計界的俗人而言總是陌生的,甚至是帶有神秘色彩的。然而,當今的程式員們開始慫恿彼此,“在你死掉之前至少試一試 Lisp”,就像這是一種令人恍惚入迷的緻幻劑似的。盡管 Lisp 是廣泛使用的程式設計語言中第二古老的(隻比 Fortran 年輕一歲),程式員們也仍舊在互相慫恿。想象一下,如果你的工作是為某種組織或者團隊推廣一門新的程式設計語言的話,忽悠大家讓他們相信你的新語言擁有神力難道不是絕佳的政策嗎?—— 但你如何能夠做到這一點呢?或者,換句話說,一門程式設計語言究竟是如何變成人們口中“隐晦知識的載體”的呢?

https://www.oschina.net/news/101976/lisp-became-gods-programming-language

13. 書呆子的複仇

Lisp在設計之初,其實并沒有打算将它作為變成語言。Lisp之父約翰 麥卡錫最初隻是想找到一種方式可以更加簡潔地定義圖靈機。是他的學生拉塞爾後來為Lisp做出了解釋器,才讓Lisp成為真正的程式設計語言。

是以保羅評價Lisp:它本質上不是一種技術,而是數學,數學是不會過時的。

計算機從業者高山仰止的産物一開始竟然并不是為解決計算機問題設計的。這也許僅僅是個巧合,但如果仔細分析Lisp的特點,就會發現,這個巧合神秘地成為了之後主流程式設計語言發展的燈塔,讓我們回到20世紀50年代,那個還沒有一個語言支援遞歸運算的時候,看看Lisp有多前衛。

  1. 條件結構
  2. 函數也是一種資料類型,函數與整數或字元串一樣,能夠存儲在變量中,也能當做參數傳遞。一切資料類型應該有的功能,它都有
  3. 遞歸(Lisp是第一種支援遞歸的語言)
  4. 變量的動态類型。所有變量實際上都是指針,指向的值有類型之分,而變量本身沒有。
  5. 垃圾回收機制
  6. 程式由表達式組成。每個表達式都傳回一個值
  7. 符号類型。符号實際上是一種指針,指向符号字元串散清單的存儲位置。
  8. 代碼使用符号和常量組成的樹形表示法
  9. 無論什麼時候,整個語言都是可用的,不區分讀取期、編譯期和運作期。

看起來,很多特征都像在描述如今的Java、Python。但是在Lisp誕生時,它的設計思想都是與當時的主流語言背道而馳的。

14. 夢寐以求的程式設計語言

繼續閱讀