個人編程生涯裏啓發個人15本書

從幾百本書中整理出一份書單是一件困難的事,可是從這些書中挑選出對本身影響比較大的書確是一件容易的事。 面試

在是一份遲來的書單,可是並非一份適用於每一個人的書單。這是我在學習編程過程當中看的一些書,啓發到個人書,有不少你可能沒有聽過,也有不少多是你耳熟能詳的。之因此說是啓發是由於不少說並無那麼好,可是我從上面獲取到了一些靈感。 算法

高中時期

高中時期,由於想開發遊戲的熱情才深刻計算機世界。而且高中也是一個至關無聊的時期,除了爲高考準備的考試,還有就是上課 編程

《C++遊戲開發》

有一些書,你就沒有必要去看了,好比這裏的第一本書《C++遊戲開發》,這本書是我在高中的時候翻了好幾遍的書 設計模式

enter image description here

這本書一直在說「C++是一門優雅的語言」,也介紹了不少我在以前編程中不懂的知識點:數組、指針,以及高級點的重載和繼承這一些面向對象的知識。這本書在遊戲開發方面講得不是不少,可是當時讓我腦洞大開的是——2.5D編程。簡單地來講,就是二張圖片疊加在一塊兒造成的3D效果。我才意識到固然我玩的不少遊戲是這樣作出來的。 數組

我那以前我只會寫點代碼,並不知道一個遊戲是如何在操做系統上運行的。在這本書中我學會了代碼是如何經過操做系統的API來建立窗口、操做文件、操做聲音等等。 微信

其實上面說到的遊戲開發的書應該是一整個系列,可是不少書啓發性彷佛並不大就不提了。記得還有《Java5 遊戲編程》、《網絡遊戲開發》、《遊戲開發核心技術•劇本與角色創造》等等的書。 網絡

《3D遊戲》

這是一本講述3D遊戲編程的書,實際上說的是如何去造一個遊戲引擎。上圖: 架構

enter image description here

固然不少內容都看得不是很懂,這本書對個人幫助並非技術自己,而是對於數學的提升和3D空間的理解。高中的知識自己並很少,多的是知識自己衍生出來的試題。換句話說,這樣的書和上一本書同樣,在咱們遇到瓶頸的時候是頗有幫助的,至關於幫咱們打開了另一片天空。本來咱們覺得世界是這樣的,後來咱們意識到了世界並非這樣的,世界比咱們想象中的要大。 框架

《Linux內核設計與實現》

這本書並非同上兩本是一本啓發性的書籍,可是是一本奠基基礎的書籍。 學習

enter image description here

出於某種緣由,加之發現一我的很難開發3D遊戲。便開始學習遊戲底層之下的技術——操做系統。因而很快地就從一個遊戲開發愛好者變成了一個Kernel Hacker。不少東西都已經忘了,可是不少東西都記得很清楚。如Linux是一個宏內核,可是藉助了微內核的不少思想。在當時的環境下,所謂的多進程是怎麼一回事,他們多久切換一次進程等等。

除此,不得不說起的一本書是《Orange'S:一個操做系統的實現》,這本書在當時的映像是很是不錯的。可是這本書放在個人家裏吃灰塵了~~。

《代碼之美》

這本書開啓了個人裝B史~~,上圖

enter image description here

因爲這是一本合集,因此書中的大部份內容我沒有看懂。可是,這本書讓我看到了各類很Diao的代碼。不過這並不重要,重要的是我在這本書裏面認識了Emacs。這就是爲何這本書會上榜的緣由。

enter image description here

這本書中有多篇提到了Emacs,而後我就去試了!!! 這本書中有多篇提到了Emacs,而後我就去試了!!! 這本書中有多篇提到了Emacs,而後我就去試了!!!

大學

大學學的是硬件,因此在軟件方面花費的經歷並非特別多,成長比較大的是大學最後的學習。

《設計模式》

之因此買這本書的緣由是:不少書中都提到了這本書,強調這本書是多麼的重要。而後,我就買了。

enter image description here

當時寫的語言基本上就是C、Python還有彙編,因此在當時並不特別懂,後面咱們會繼續說到。它給個人感受就是,WOCAO,我當年的C++連入門都算不上。雖然能看懂,可是隻知其一;不知其二。主要是當時代碼寫得並很少,主要是在博覽羣書。

《領域特定語言》

DSL大法好,DSL大法真的是一個很棒的想法。

enter image description here

它能夠用更簡潔的語言業表達你的想法。這是很美好的一個想法,若是咱們能夠把咱們的業務代碼抽象成外部DSL的話,那麼咱們就不擔憂架構的變動、技術框架的落後。

《SEO藝術》

當你有一篇好的文章,還有一個好的產品,你還須要什麼?SEO就是其中一個。

enter image description here

讓我意識到一點:事物間的關聯性——也就是Page Rank。當時對論文這種東西沒啥概念,後來發現這是很是有趣的一個算法。

enter image description here

這個原則不只僅適用於SEO領域,還適用於社交領域、大V經濟領域。PR高的網站連接PR高的網站可能沒有啥明顯的做用,可是對提交PR低的網站特別有用。

《重來》

《重來》彷佛是一本常常被說起的書,好在我也是看過的,還寫了幾篇相關的文章。

enter image description here

這本書有三點說得很不錯,換句話來講,這三點和我產生了共鳴:

  1. 賣掉代碼的副產品。事物間存在的鏈接屬性。
  2. 招聘筆桿子。這個就不用多說了,我寫了那麼多文章。
  3. 音樂應在你的指尖流淌。好的裝備確實能帶來一些幫助,但事實是,你的演奏水平是由你本身的手指決定的。

ThoughtWorks面試與實習

大四的時候就開始找工做了,而後我就遇到了ThoughtWorks。面試的時候醒悟到了《重構》能夠到《設計模式》,可是光醒悟並無啥卵用,下面這本書是我後來的後來才遇到的。

《重構與模式》

不知道在多少的場合裏,我一直在吐槽這本書應該是叫《重構到設計模式》。

enter image description here

雖然並無學到太多的實質性的東西——不少東西都在實習的時候已經學到了。重構和設計模式同樣,光一每天作一些智力練習並無啥用。從重構代碼到抽象出設計模式,是一種很迷人的體驗。

《重構》

這本書雖然看得很早,可是提得很晚的緣由是:主角老是最後纔出場的。

enter image description here

在當時我也花了不少時間去識別書中的一些Code Smell,而後去重構。親手把本身的代碼從一坨x變得更易讀是一種很棒的體驗,你說呢?

《敏捷軟件開發》

這又是一本Jolt效率大獎的書,這彷佛也是進入咱們公司應該讀的一本書。

enter image description here

這本書結合了敏捷方法、模式和麪向對象的一些思想,並提出了SOLID(單一功能、開閉原則、里氏替換、接口隔離以及依賴反轉)這五個基本原則。

工做

《持續交付 發佈可靠軟件的系統方法》

這倒不是一本對我啓發很是大的書,主要是由於這已是咱們的平常工做流程。

enter image description here

若是你先實踐了,而後再去看一本書,那麼你就不會以爲一本是多麼的棒。軟件自己是一種持續的過程,特別是Web開發來講。在這一點上來看,幾乎全部的互聯網公司均可以持續交付軟件。可是國內的大部分互聯網公司的代碼都是沒有測試的,而且呈現的是一種幾乎有問題的持續交付模式。

《面向模式的軟件架構 卷1:模式系統》

做爲另一本Jolt效率大獎的書,這本書名副其實。

enter image description here

能從混亂到有序就能夠抽象成一種架構模式,書中向咱們展現了各個層面的模式是如何發揮做用的。這本書讓我意識到了模式不只僅存在於代碼之間,又存在於架構之間,更是能夠存在於咱們的平常生活之中。

《實現領域驅動設計》

儘管這本書提到的不少東西我都很瞭解,我仍是不很是懂這本書。或許只是由於沒有鏈接概念到代碼上,讓我在有空的時候再細細理解這本書。

enter image description here

雖是如此,可是這本書中提到的六邊形架構讓我映象深入,又能夠稱之爲「端口和適配器架構」。

enter image description here[+]查看原圖

還有CQRS(命令和查詢責任分離)架構,這種風格和咱們現有系統的架構是相似的。在咱們系統的架構中,讀和寫是兩個不一樣的數據源,我相信這種結構也存在於不少的系統中。

enter image description here

還有我以前提到過的編輯-發佈-開發分離也是相似於這種風格的架構。

enter image description here[+]查看原圖

《浮現式設計 專業軟件開發的演進本質》

最後出現的這本書,讓我從新理解了軟件開發的演進。

enter image description here

浮現式設計這個概念很棒,軟件不是一開始就產生的,面向Web開發的軟件更是如此。因爲業務發現的須要,咱們不可能在一開始想到一切的可能性,咱們只能在業務演進的同時發展咱們的架構。

更多歡迎內容容許關注個人微信公衆號:

enter image description here

相關文章
相關標籤/搜索