對你影響最深的編程書籍是哪一本?
CSAPP 深入理解計算機系統
一本書的話:《UNIX編程藝術》,Eric Raymond
第二本書:《APUE》
SICP
計算機程序構造和解釋
PC遊戲編程:基礎篇。因為那是我第一次參與寫書。
SICP
參見書評: http://book.douban.com/review/4559081/
一本太少了吧~~
作者:phodal
鏈接:我的編程生涯里啟發我的15本書 - Phodal - 手工藝人 - 知乎專欄
來源:知乎
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
從幾百本書中整理出一份書單是一件困難的事,但是從這些書中挑選出對自己影響比較大的書確是一件容易的事。
在是一份遲來的書單,但是並不是一份適用於每個人的書單。這是我在學習編程過程中看的一些書,啟發到我的書,有很多你可能沒有聽過,也有很多可能是你耳熟能詳的。之所以說是啟發是因為很多說並沒有那麼好,但是我從上面獲取到了一些靈感。
高中時期高中時期,因為想開發遊戲的熱情才深入計算機世界。並且高中也是一個相當無聊的時期,除了為高考準備的考試,還有就是上課
《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。面試的時候醒悟到了《重構》可以到《設計模式》,但是光醒悟並沒有啥卵用,下面這本書是我後來的後來才遇到的。
《重構與模式》不知道在多少的場合里,我一直在吐槽這本書應該是叫《重構到設計模式》。
雖然並沒有學到太多的實質性的東西——很多東西都在實習的時候已經學到了。重構和設計模式一樣,光一天天做一些智力練習並沒有啥用。從重構代碼到抽象出設計模式,是一種很迷人的體驗。
《重構》這本書雖然看得很早,但是提得很晚的原因是:主角總是最後才出場的。
在當時我也花了很多時間去識別書中的一些Code Smell,然後去重構。親手把自己的代碼從一坨x變得更易讀是一種很棒的體驗,你說呢?
《敏捷軟體開發》這又是一本Jolt效率大獎的書,這似乎也是進入我們公司應該讀的一本書。
這本書結合了敏捷方法、模式和面向對象的一些思想,並提出了SOLID(單一功能、開閉原則、里氏替換、介面隔離以及依賴反轉)這五個基本原則。
工作《持續交付 發布可靠軟體的系統方法》這倒不是一本對我啟發非常大的書,主要是因為這已經是我們的日常工作流程。
如果你先實踐了,然後再去看一本書,那麼你就不會覺得一本是多麼的棒。軟體本身是一種持續的過程,特別是Web開發來說。在這一點上來看,幾乎所有的互聯網公司都可以持續交付軟體。但是國內的大部分互聯網公司的代碼都是沒有測試的,並且呈現的是一種幾乎有問題的持續交付模式。
《面向模式的軟體架構 卷1:模式系統》作為另外一本Jolt效率大獎的書,這本書名副其實。
能從混亂到有序就可以抽象成一種架構模式,書中向我們展示了各個層面的模式是如何發揮作用的。這本書讓我意識到了模式不僅僅存在於代碼之間,又存在於架構之間,更是可以存在於我們的日常生活之中。
《實現領域驅動設計》
儘管這本書提到的很多東西我都很了解,我還是不非常懂這本書。或許只是因為沒有連接概念到代碼上,讓我在有空的時候再細細理解這本書。
雖是如此,但是這本書中提到的六邊形架構讓我映象深刻,又可以稱之為「埠和適配器架構」。
還有CQRS(命令和查詢責任分離)架構,這種風格和我們現有系統的架構是類似的。在我們系統的架構中,讀和寫是兩個不同的數據源,我相信這種結構也存在於很多的系統中。
還有我之前提到過的編輯-發布-開發分離也是類似於這種風格的架構。
《浮現式設計 專業軟體開發的演進本質》
最後出現的這本書,讓我重新理解了軟體開發的演進。
浮現式設計這個概念很棒,軟體不是一開始就產生的,面向Web開發的軟體更是如此。由於業務發現的需要,我們不可能在一開始想到一切的可能性,我們只能在業務演進的同時發展我們的架構。
代碼大全.Code Complete.我認為這本作為一個程序員一定要看,它讓我們了解到什麼才是編程,而不是敲代碼.
編程書籍的話。。《Thinking in Java》
《Linux C編程一站式學習》
領域驅動設計 (豆瓣)
這本書強調了編程的本質是對真實世界的抽象和重繪。開發人員如果想編寫出可擴展性的代碼,必須先去理解代碼本身要去解決的領域業務。
這本書中對「術」的運用(比如貧血模型,領域層等概念)固然很有幫助,但是更重要的是理解了」業務「和」技術「之間的關係。&<&< 敏捷軟體開發 -- 原則、模式與實踐 &>&>
《代碼大全》
我說一下害我最深的一本書,譚浩強的C語言。
江蘇省信息學奧賽教程中學高級本
給所有非科班的同學推薦強烈推薦:
不答這個我對不起我自己。
為什麼?
請移步:27歲開始的程序員人生
《C++語言的設計與演化》,當時在圖書館看完的這本書,當合上書的時候,差點兒哭了,從此以後成為了Bjarne與C++的腦殘粉。
如果只挑一本,我100%推薦《UNIX編程藝術》!
可以認為其它書都是「術」,這本書是「道」,而且這些「道」在我工作經歷中都是印象深刻的。
如果只能選一本的話,《重構》
MSDN,不是書,勝似書。
Hardcore Visual Basic
認識自己正在使用的語言的優勢與劣勢。
學會自律,養成良好的編碼習慣。
推薦閱讀:
※寫代碼導致晚上睡不著怎麼辦?
※有哪些短小且有內涵的代碼可以作為文身,能讓人一眼看出你是個 coder 卻又看不明白你的文身內容?
※程序員喝醉酒寫代碼是一種什麼樣的體驗?
※有什麼方法可以去掉Baidu或者Google地圖裡的文字標註?
※想在婚戒上刻段代碼,有什麼好建議?