只要你繼續畫——黑客與畫家

去年讀過一本非常火的書《黑客與畫家》,其實這本書一直沒有看完,總是差了一點,原因就是連續看了幾篇大讚Lisp語言的文章後,就覺得有點煩了,但是還是靜下心來,將它讀完了,把這本書回顧一下,總結一下自己以前的感悟

      Paul Graham是一個創業大牛,文中的每一行都可以看出他的性格來,追求完美,深入思考再加上每一個成功創業者多少都有的偏執,這個並非一定是貶義,因爲用英語說,應該是insist on 。並無褒貶,只是人的一種行爲特質。

      開始讀這本書的時候,我一直在尋找一個問題的答案,作者爲什麼會這樣命名這本書,譯者說是作者想表明黑客和藝術家一樣,都是再創造好的作品。其實從作者的很多文字中看,作者有一種作爲黑客潛在的孤獨,特別是在對於Lisp語言的問題上,他始終強調這是最強大的語言,但是又不得不面對其流行度不高的現實。

     看待編程語言的問題


 

     書中連續幾篇文章討論,如何去看待一門編程語言,什麼樣的語言算是功能更強的語言,他提到了幾個因素 :外部因素,簡潔性,可編程性,一次性,函數庫,效率,時間,再設計。

      外部因素,指的就是有沒有一本精簡的入門教材,有沒有方便的在線文檔。我覺得這不僅僅適用於編語言,到現在各大陣營開放平臺盛行的階段,也適用於各個平臺,這也是linux和android等開源項目成功發展的一個原因,但這個僅僅是針對開發者而言的。額,的確,對編程語言感冒的也只有開發人員吧。但有一個特例就是ios,一個學習資源不多,API文檔不方便,但是已經把Objective-C推向編程語言頂端的系統,所以外部因素現在應該包含更多層面了,利潤或許驅動了程序員的刻苦。

      Paul再講解簡潔性的時候,把java作爲了一個反例,一個hello world在java中顯得如此複雜。我並不覺得很妥當,因爲畢竟我們寫的都不是hello world ,我們做的都是一個更大更爲複雜的邏輯處理過程。類是抽象具體事物和封裝信息所需要的,當真正的處理事物的時候,他並並不會複雜,反而會更簡潔。我覺的這個不是簡潔與否的問題,而是語言的使用場景的問題,我們要處理一些數學表達式,當然不會首先想到java,java就像一個工程隊,你不可能要一個工程隊來解決一個數學家的規模不大,需要深思的問題,這時候C,Lisp也許就更加合適了。

     再一個就是,可編程性。。我覺得翻譯的不好,原文是Hackability ,其實理解爲自由度更強比較好,以前在做編譯原理的實驗的時候,我就覺得C用起來很過癮,爲什麼會過癮,我曾經有想過,或許不是因爲指針,而是以爲各種各樣的宏定義,每次用宏的時候,我就覺得這個代碼真真正正的是屬於我的。但是想到團隊性的合作編程,這就又不方便了,所以什麼都不是萬能的。。。

     一次性就不說了,作者貌似在描述軟件工程中迭代開發的一個過程,下一個就是函數庫,這個在很多面向對象語言體現的比較多,其實我認爲一些算法就可以已經在函數庫中實現好。但是算法的學習是必要的,我認爲學習算法是爲了使程序員變得更加的聰明而不是讓人變的更加的思維僵化,就像惡化的高考一樣。比如在回顧排序的演變的時候,我們就可以看到人們追求更好的排序的一個思考的過程,能體現算法是讓人好好思考以至於能更好的用巧妙的辦法解決問題的一本書是《編程珠璣》。書中的第一個查找電話的例子就讓人感覺受益匪淺。有一次參加rr面試的時候,面試官問過我一個算法+實際解決問題的題目“rr主頁右上角的聯繫人搜索如果要你來做,你怎麼實現”,我覺得這樣的問題就是好的問題,我給出了他一個方案,他很高興的說他們公司就是這麼做的,之後他叫我寫代碼實現一個縮水版,我沒有寫太好,但沒有影響通過面試。這個問題中,沒有問什麼排序什麼搜索之類的成型的問題,因爲成型的東西你可以在3秒鐘之後從google上找到答案,而一個實際的問題,就沒有那麼容易了。

     接下來是效率和時間,效率指的是程序的效率,而時間指的是編程語言的聲明週期。Paul最厲害的地方在於他的預見性,這個一會再詳細說,他很早的就意識到,今後的效率的核心問題不是單純的計算速度,而是同時處理多請求的能力,也就是現在將的並行計算,的確這顯然已經成爲了很多企業的重點技術研究方向,服務器分佈的範圍越來越大,每分鐘幾百萬的訂單,都在考驗並行的能力。

   關於程序語言的週期性,我們知道一個產品都有他的週期性,最初的引進,到推廣,到成熟再到衰退。我一直在想語言和平臺的關係,始終也想不明白,二者究竟是誰在推誰,又或者兩者是相互的。但有一點是肯定的,只要誕生語言的環境還在,那麼語言就仍舊有生命力,比如C和UNIX。

 

    產品


 

    作者讓我最欽佩的還是其強大的預見性,他在2001年的文章,曾這樣寫道“但是,蘋果公司還沒有失敗,如果他能把ipod升級爲手機,並將網絡瀏覽器包括在其中,那麼微軟公司的麻煩就大了”,2007年蘋果發佈了首款iphone,那一年真正的開始了喬布斯的時代。其實Paul的本意是認爲web應用的重要性,雖然iphone的成功並不在於其瀏覽器有多麼的出衆,但是這種思想是一致的,即web store的概念,用戶從網上購買自己喜歡的應用。

    很多時候,我們找不到需求,因爲我們並不追求完美,而這恰恰是黑客的特質。

    文章的最後,書中出現了黑客和畫家,一個產品就向繪畫一樣“畫作永遠沒有完工的一天,你只是不再繼續畫下去罷了”。以此結尾吧,每個人的生活也是如此,只要你繼續畫。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章