我的程式設計生涯裡啟發我的15本書
從幾百本書中整理出一份書單是一件困難的事,但是從這些書中挑選出對自己影響比較大的書確是一件容易的事。
在是一份遲來的書單,但是並不是一份適用於每個人的書單。這是我在學習程式設計過程中看的一些書,啟發到我的書,有很多你可能沒有聽過,也有很多可能是你耳熟能詳的。之所以說是啟發是因為很多說並沒有那麼好,但是我從上面獲取到了一些靈感。
高中時期
高中時期,因為想開發遊戲的熱情才深入計算機世界。並且高中也是一個相當無聊的時期,除了為高考準備的考試,還有就是上課
《C++遊戲開發》
有一些書,你就沒有必要去看了,比如這裡的第一本書《C++遊戲開發》,這本書是我在高中的時候翻了好幾遍的書
這本書一直在說“C++是一門優雅的語言”,也介紹了很多我在之前程式設計中不懂的知識點:陣列、指標,以及高階點的過載和繼承這一些物件導向的知識。這本書在遊戲開發方面講得不是很多,但是當時讓我腦洞大開的是——2.5D程式設計。簡單地來說,就是二張圖片疊加在一起形成的3D效果。我才意識到當然我玩的很多遊戲是這樣做出來的。
我那之前我只會寫點程式碼,並不知道一個遊戲是如何在作業系統上執行的。在這本書中我學會了程式碼是如何通過作業系統的API來建立視窗、操作檔案、操作聲音等等。
其實上面說到的遊戲開發的書應該是一整個系列,但是很多書啟發性似乎並不大就不提了。記得還有《Java5 遊戲程式設計》、《網路遊戲開發》、《遊戲開發核心技術•劇本與角色創造》等等的書。
《3D遊戲》
這是一本講述3D遊戲程式設計的書,實際上說的是如何去造一個遊戲引擎。上圖:
當然很多內容都看得不是很懂,這本書對我的幫助並不是技術本身,而是對於數學的提高和3D空間的理解。高中的知識本身並不多,多的是知識本身衍生出來的試題。換句話說,這樣的書和上一本書一樣,在我們遇到瓶頸的時候是很有幫助的,相當於幫我們開啟了另外一片天空。原本我們以為世界是這樣的,後來我們意識到了世界並不是這樣的,世界比我們想象中的要大。
《Linux核心設計與實現》
這本書並不是同上兩本是一本啟發性的書籍,但是是一本奠定基礎的書籍。
出於某種原因,加之發現一個人很難開發3D遊戲。便開始學習遊戲底層之下的技術——作業系統。於是很快地就從一個遊戲開發愛好者變成了一個Kernel Hacker。很多東西都已經忘了,但是很多東西都記得很清楚。如Linux是一個單核心,但是藉助了微核心的很多思想。在當時的環境下,所謂的多程式是怎麼一回事,他們多久切換一次程式等等。
除此,不得不提及的一本書是《Orange'S:一個作業系統的實現》,這本書在當時的映像是非常不錯的。但是這本書放在我的家裡吃灰塵了~~。
《程式碼之美》
這本書開啟了我的裝B史~~,上圖
由於這是一本合集,所以書中的大部分內容我沒有看懂。但是,這本書讓我看到了各種很Diao的程式碼。不過這並不重要,重要的是我在這本書裡面認識了Emacs。這就是為什麼這本書會上榜的原因。
這本書中有多篇提到了Emacs,然後我就去試了!!! 這本書中有多篇提到了Emacs,然後我就去試了!!! 這本書中有多篇提到了Emacs,然後我就去試了!!!
大學
大學學的是硬體,所以在軟體方面花費的經歷並不是特別多,成長比較大的是大學最後的學習。
《設計模式》
之所以買這本書的原因是:很多書中都提到了這本書,強調這本書是多麼的重要。然後,我就買了。
當時寫的語言基本上就是C、Python還有彙編,所以在當時並不特別懂,後面我們會繼續說到。它給我的感覺就是,WOCAO,我當年的C++連入門都算不上。雖然能看懂,但是一知半解。主要是當時程式碼寫得並不多,主要是在博覽群書。
《領域特定語言》
DSL大法好,DSL大法真的是一個很棒的想法。
它可以用更簡潔的語言業表達你的想法。這是很美好的一個想法,如果我們可以把我們的業務程式碼抽象成外部DSL的話,那麼我們就不擔心架構的變更、技術框架的落後。
《SEO藝術》
當你有一篇好的文章,還有一個好的產品,你還需要什麼?SEO就是其中一個。
讓我意識到一點:事物間的關聯性——也就是Page Rank。當時對論文這種東西沒啥概念,後來發現這是非常有趣的一個演算法。
這個原則不僅僅適用於SEO領域,還適用於社交領域、大V經濟領域。PR高的網站連結PR高的網站可能沒有啥明顯的作用,但是對提交PR低的網站特別有用。
《重來》
《重來》似乎是一本經常被提及的書,好在我也是看過的,還寫了幾篇相關的文章。
這本書有三點說得很不錯,換句話來說,這三點和我產生了共鳴:
- 賣掉程式碼的副產品。事物間存在的連線屬性。
- 招聘筆桿子。這個就不用多說了,我寫了那麼多文章。
- 音樂應在你的指尖流淌。好的裝備確實能帶來一些幫助,但事實是,你的演奏水平是由你自己的手指決定的。
ThoughtWorks面試與實習
大四的時候就開始找工作了,然後我就遇到了ThoughtWorks。面試的時候醒悟到了《重構》可以到《設計模式》,但是光醒悟並沒有啥卵用,下面這本書是我後來的後來才遇到的。
《重構與模式》
不知道在多少的場合裡,我一直在吐槽這本書應該是叫《重構到設計模式》。
雖然並沒有學到太多的實質性的東西——很多東西都在實習的時候已經學到了。重構和設計模式一樣,光一天天做一些智力練習並沒有啥用。從重構程式碼到抽象出設計模式,是一種很迷人的體驗。
《重構》
這本書雖然看得很早,但是提得很晚的原因是:主角總是最後才出場的。
在當時我也花了很多時間去識別書中的一些Code Smell,然後去重構。親手把自己的程式碼從一坨x變得更易讀是一種很棒的體驗,你說呢?
《敏捷軟體開發》
這又是一本Jolt效率大獎的書,這似乎也是進入我們公司應該讀的一本書。
這本書結合了敏捷方法、模式和麵向物件的一些思想,並提出了SOLID(單一功能、開閉原則、里氏替換、介面隔離以及依賴反轉)這五個基本原則。
工作
《持續交付 釋出可靠軟體的系統方法》
這倒不是一本對我啟發非常大的書,主要是因為這已經是我們的日常工作流程。
如果你先實踐了,然後再去看一本書,那麼你就不會覺得一本是多麼的棒。軟體本身是一種持續的過程,特別是Web開發來說。在這一點上來看,幾乎所有的網際網路公司都可以持續交付軟體。但是國內的大部分網際網路公司的程式碼都是沒有測試的,並且呈現的是一種幾乎有問題的持續交付模式。
《面向模式的軟體架構 卷1:模式系統》
作為另外一本Jolt效率大獎的書,這本書名副其實。
能從混亂到有序就可以抽象成一種架構模式,書中向我們展示了各個層面的模式是如何發揮作用的。這本書讓我意識到了模式不僅僅存在於程式碼之間,又存在於架構之間,更是可以存在於我們的日常生活之中。
《實現領域驅動設計》
儘管這本書提到的很多東西我都很瞭解,我還是不非常懂這本書。或許只是因為沒有連線概念到程式碼上,讓我在有空的時候再細細理解這本書。
雖是如此,但是這本書中提到的六邊形架構讓我映象深刻,又可以稱之為“埠和介面卡架構”。
還有CQRS(命令和查詢責任分離)架構,這種風格和我們現有系統的架構是類似的。在我們系統的架構中,讀和寫是兩個不同的資料來源,我相信這種結構也存在於很多的系統中。
還有我之前提到過的編輯-釋出-開發分離也是類似於這種風格的架構。
《浮現式設計 專業軟體開發的演進本質》
最後出現的這本書,讓我重新理解了軟體開發的演進。
浮現式設計這個概念很棒,軟體不是一開始就產生的,面向Web開發的軟體更是如此。由於業務發現的需要,我們不可能在一開始想到一切的可能性,我們只能在業務演進的同時發展我們的架構。
更多歡迎內容允許關注我的微信公眾號:
相關文章
- 我的程式設計職業生涯程式設計
- 給程式設計生涯充電的 10 本書程式設計
- 我買的第一本程式設計書程式設計
- [圖靈贈書]《我的第一本程式設計書》轉發贈書圖靈程式設計
- 我讀過的最佳程式設計書:一本沒有程式碼的書程式設計
- 回顧15年程式設計師生涯,我總結的7點經驗程式設計師
- 我的十年程式生涯:建模啟航
- 程式設計師的副業:我的第一本書出版啦!程式設計師
- 開啟我的程式設計之路程式設計
- 講講我的開發生涯
- 對我影響最大的一本書———《JavaScript高階程式設計》JavaScript程式設計
- 影響我最深的一本書 C++ 程式設計規範C++程式設計
- 先奮鬥後躺平,學習風變程式設計開啟了我的“躺平”生涯程式設計
- 伴隨我成長的程式設計書程式設計
- 我是如何閱讀程式設計書的程式設計
- 我這幾年程式設計師生涯的一點體會(轉)程式設計師
- 我寫了本開源書:《3D程式設計模式》3D程式設計設計模式
- 從我一年程式設計生涯中得到的經驗教訓程式設計
- 程式設計師的副業:2021年初,寫完了我的第一本書程式設計師
- 風變,我的程式設計啟蒙老師程式設計
- 我的程式設計人生程式設計
- 我的程式設計之路程式設計
- 5年程式設計師生涯,我學到最重要的6個教訓程式設計師
- 我所理解的 iOS 併發程式設計iOS程式設計
- 2018年,我印象最深刻的一本書《實戰Java高併發程式設計》Java程式設計
- 《我的第一本程式設計書》第八章 可以操作的程式,操作方塊程式設計
- 激發程式設計師創意的6本書程式設計師
- Head First —— 我的程式設計啟蒙老師程式設計
- 盲人程式設計師的程式設計生涯程式設計師
- 陳梓瀚:伴隨我成長的程式設計書程式設計
- 我是如何自學程式設計的——“3遍讀書法”程式設計
- 《我的第一本程式設計書》第三章 迴圈,讓程式變短程式設計
- 我的程式設計師之路程式設計師
- 感悟我的程式設計之路程式設計
- 我的好書我做主:曬出原創《Go語言程式設計 》的大致目錄Go程式設計
- java架構師之路:JAVA程式設計師必看的15本書Java架構程式設計師
- 《我的第一本程式設計書》第六章 會動的程式,讓方塊下落程式設計
- 不思量自難忘:我的 10 年程式生涯