《黑客與畫家》

這本書經常聽人推薦,最近有時間,學習學習大神的思想,書名挺特別的,沒看之前,會很難想象黑客與畫家之間會有什麼聯繫。

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

    作者自己青少年時期的經歷,一個“書呆子”的自白。但我始終覺得作者本身並不是“書呆子”,而“書呆子”只是自己給自己貼的標籤而已,感覺作者只是想給我們說明一個問題,“書呆子”通常在學校是不受歡迎的,但是爲什麼會這樣?。
    學校裏存在這樣的一類“怪人”,他們聰明,不善交際,會收到其他同學的排斥。這種排斥或者說不收歡迎,作者認爲來源於其他孩子對於聰明的嫉妒。但我覺得,其實展望整個成年人的世界,也是一樣的,在學校時期大家嫉妒的是聰明,在社會時期大家嫉妒的是金錢,青少年和成年人對待書呆子的態度會有所不同,只是他們嫉妒的焦點變了而已。
    在這個本就無聊和殘酷的學校或者社會環境中,瞭解自己不受歡迎的原因,客觀的看待它並接受它,並鼓勵這些人找到自己在乎的事情,向着自己的目標前進就好。

2.黑客與畫家

    黑客與畫家,作者的雙重職業,程序員這個職業就如同城市裏某個工地角落裏的搬磚的工人,不,自信點,就是個搬磚的。讀完後,有點飄,像個藝術家,逼格提升好幾個檔次。當然,這只是句玩笑話。
    計算機科學並不是一門基礎科學,基礎科學是發現世界本身規律的,規律本身存在,科學家門只需要發現就可以,不需要創造。而計算機科學是一門工程學,是藉助已有的基礎科學進行創造,創造出這個世界本不存在的事物。我們應該像畫家一樣,不斷地創作,磨練自己的繪畫功底(編程技術),通過作品(軟件)來提升自己的創作水平,打磨出流傳後世的經典之作。其實我想不光是程序員,很多職業(建築師、音樂人、作家、產品設計師)都應該對自己的職業有重新的認識,把自己看待成藝術家,利用自己的智慧和才能完成自己的作品,而不是像完成任務一般。
    還有一點我感觸挺深,就是作者說的,寫程序先不要想得去優化或者完善它,一股腦不管對錯,先把代碼堆上去,確保大體上是正確的,然後再慢慢修改。如同做一幅人物畫,先勾勒出人物的輪廓樣貌,再通過不斷地修改,完善每一個細節,最終完成作品。記住,永遠不要過早的進行優化。

3.不能說的話

    有什麼話是這個時代不能說的,爲什麼不能說?思考這個問題能夠幫我們更正確客觀的看待這個時代。歷史的常態似乎就是,任何一個年代的人們,都會對一些荒謬的東西深信不疑 。他們的信念還很堅定。只要有人稍微表示一點懷疑,就會惹來大麻煩。現在言之鑿鑿的東西,有可能在未來人的眼裏卻是荒誕不經。就如同我們現在去回頭看看10年前流行的東西,都會笑出聲,然後感嘆,那時的自己真夠傻的。
    如何能使自己不受流行的影響,獨立思考,可能幫助我們找到真相。如果自己就是潮水的一部分,怎麼能看見潮流的方向呢?你只能永遠保持質疑,才能不被潮水淹沒。

4.良好的壞習慣

    大衆眼裏,“黑客hacker”就是入侵計算機的人。可是,在程序員眼裏,“黑客”指的是優秀的程序員。而黑客還有一個特點,就是他們看似非常不服管教,喜歡突破束縛,其實是他們更向往自由。他們認爲不服管教的這種行爲,解放了自身的創造力,是財富與力量的源泉。而這種行爲本身是則是黑客自己“良好的壞習慣”。

5.另一條路

    互聯網應用對於桌面應用的優勢,就好比在過去大型機對於個人電腦優勢一樣,他只是現階段的一個發展趨勢,並不是永久的,有一天肯定會出現新的軟件形式替代之,這就是作者所說的另一條路。任何一個事物的發展總是走向更專業化的分工,互聯網讓用戶可以更簡單的使用軟件,把軟件複雜的運行維護、安全防護交給更爲專業的互聯網公司去做,這有助於他們不斷地完善自己的軟件已幫助用戶完成自己的需求。

6.如何創造財富

    財富不等於金錢,財富是勞動創造的實際價值,而金錢是實現實際價值交換的介質。創業的本質是在極短的時間內創造足夠的財富,想象一下把你低強度的工作四十年壓縮成你以極限強度工作四年,你可能創造出超高的價值。
    說到工作,我們必須足夠的瞭解工作的本質,工作到底是什麼,工作是的本質創造出人們需要的東西,而不是你是否加入一家公司。你加入一家公司,是加入一個集體,他同樣是爲別人製造需要的東西。
    瞭解到工作的本質後,還要明白一點,要致富,你需要兩樣東西,可測量性和可放大性。小團隊=可測量性,高科技=可放大性。
    可測量性其實就是每個人的創造的財富可測量,小團隊在這方面有天然的優勢。大公司和創業公司的區別在於,大公司往往無法統計個人的貢獻,就好比有一艘1000人開的大船,優秀的人滑地再努力,也不會對船速有太大影響,他們的貢獻都被平均化了,但如果從中選擇前1%的划船高手組成一個小船團隊,他們的效率會得到無限的提升,因爲每個人的努力都會影響船速,優秀的人往往更願意和優秀的人合作。創業就是要組建這樣一個小團隊,這個小不是小村莊的小,而是需要全明星第一陣容的那種小。
    可放大性說的簡單點,就是可複製性,比如麥當勞,就是設計一套快餐服務體系,複製到全世界的每一個角落。同時還要懂得構建自己的技術壁壘,增加別人複製的難度。
    最後,還要有一個適合創業的社會環境,也就是在這個時代,法律會保護創造財富的人,防止他們的財富不被別人搶奪。

7.關注貧富分化

    “一個社會需要有富人,這主要不是因爲需要富人的指出創造就業機會,而是因爲你需要他們在支付的過程中做出的事情。”即他們創造財富的過程。

8.防止垃圾郵件

    利用統計學設計出來的垃圾郵件過濾系統,要比普通通過內容判斷的方式要精確很多,最主要的是,它的誤判率很低。其實這也給我們一些啓發,計算機中有很多基於統計學的算法,他們不會對某個問題作出準確的判斷,只做出概率性的判斷,例如,一個質數如果通過了多少次的“費馬小定律”檢查,他就有百分之多少的概率爲質數。這是一種更好的思維方式,在解決某些問題時,它能幫我們突破瓶頸。

9.設計者的品味

    品味就像美醜一樣,是有好壞之分的。雖然這個世界有人喜歡“美”,也有人喜歡“醜”,但是美醜的界限是分明的,就如同品味的高低一樣。好的設計具備這些特點、簡單、永不過時、解決主要問題、有點趣味性、看似容易、對稱、模仿大自然、一種再設計、能夠複製、奇特、成批出現、大膽的。作者總結的特點有點多,但是我們可以通過這些特點反過來驗證自己的設計是否稱得上是一個好設計。

10.編程語言解析

    編程語言的發展過程像一個倒三角型,下層是機器語言,上層是各種高級語言,高級語言通過編譯器或者解釋器將自己的語言翻譯成機器語言運行。高級語言更接近人類的語言,或者說更符合人類的思維習慣,這樣做有很多的好處,可複製、可移植等等。但是從語言發明出來,程序員之間就存在着語言的歧視,其中談論最多的就是靜態類型語言和動態類型語言之爭,理論上來講,每種程序都是可以被這些高級語言實現的,語言這種東西,仁者見仁,智者見智吧。

11.一百年後的編程語言

    語言的發展離不開機器的發展,當計算機發展到一定程度,語言也會發生一些變化,就像計算機的性能在不斷提升,這使得程序的運行效率在某些情況下變得不是那麼重要,比如對比一個編譯器類型語言的程序和解釋器類型語言的程序,在之前的計算機,編譯器肯定是效率會高於解釋器,但是隨着機器硬件的性能提升,這種效率差異正在縮小,甚至可以被忽略,這時人們就開始更在意另一些特性,也就是腳本語言在程序運行期的靈活性,再比如說編程語言的便利性。按照這種思路去構思下一百年後的編程語言有助於你更好的理解和應用你目前使用的語言。

12.拒絕平庸

    Lisp語言是一門比較優秀的語言,它由表達式構成,沒有一些聲明性的語句,這樣的程序寫出來結構非常簡單,簡單到你能夠直面問題本身,而不被其他語言本身的問題困擾。

13.書呆子的復仇

“技術本來就應該是尖端的。編程語言的所謂“業界最佳實踐”,實際上不會讓你變成最佳,只會讓你變得更很平常。如果你想在軟件業獲得成功,就是用你知道的最強大的語言,用它解決你知道的最難的問題,並且等待競爭對手的經理做出自甘平庸的選擇。”

14.夢寐以求的編程語言

    語言的流行不取決於它本身,還依賴於語言本身的計算機系統。一種好的編程語言,具備的一下特點:簡潔,用它寫出的代碼足夠的少。可編程性,也就是給編程者足夠的自由,能讓他們按照自己的意願去編寫程序。一次性程序,方便編程者去編寫一些一次性使用的程序。函數庫,有強大的函數庫支持。效率,運行效率較快。時間,經得起時間的考驗。再設計,適合軟件的不斷完善和修改。其實這些特徵與作者第九章講的好的設計特徵很吻合。

15.設計與研究

    畫家之間流傳着一句諺語:“畫作永遠沒有完工的一天,你只是不再畫下去而已”。軟件又何嘗不是如此呢。

    很值得一看的一本書,引人深思。最近剛好接觸到Lisp語言,對作者後面幾章的觀點理解更深刻,Lisp確實很優秀。大家有時間也可以學習學習。

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