錄
1 The Art of Doing Science and Engineering
2 The Mythical Man-Month: Essays on Software Engineering 人月神話
3 Probability and Computing
4 The Cathedral & the Bazaar 大教堂與集市
5 Staff Engineer
6 Designing Data Intensive Applications
7 Software Engineering at Google 谷歌軟件工程
8 Economics Rules 經濟學規則
9 Computer Systems: A Programmer's Perspective
本文集合了鵝廠程序員們強烈推薦的9本經典計算機圖書,“工作以后重新讀來讓我有種醍醐灌頂之感”,這是他們對這些書籍的評價。
這9本書涵蓋了計算機理論科學、軟件工程、分布式系統等,做到了既經典又全面。如果你在規劃自己的學習計劃,不妨將這幾本書放進自己的書單,結合實際工作和問題場景去閱讀,相信會給你帶來全新的體會和認知。
01
The Art of Doing Science and Engineering
這本書是 Richard Wesley Hamming(1968 年的圖靈獎得主、20 世紀最著名的應用數學家之一、編碼論的奠基人)一門課程的口述稿,是 Hamming 一生關于學術、研究、智慧的結晶。本書的主題是以下幾個問題:
在書中,Hamming 根據他自己的學術生涯經驗總結了計算機科學與技術的主要領域,并在書的最后給出了很多關于研究與工程的真知灼見。You and Your Research 是 Richard Hamming 最著名的演講,收錄于本書的最后一章。對我影響最大的幾個觀點是:
我最為贊同“學習有復利效應”這個觀點。從上學到現在,我經常見到和我同齡甚至比我小的人,知識量的淵博和觀點的深刻都遠超于我許多倍。Richard 也有過這個糾結(他甚至在書中講了一個完全類似的故事),而他得到的答案是,學習的復利效應很明顯,所以開卷有益,而且是遠超想象的收益。所以我一直不遺余力地宣傳程序員也應該持續學習,多讀書。學不進去的最后都轉行去開寵物樂園了。
02
The Mythical Man-Month: Essays on Software Engineering 人月神話
人月神話這本書的經典之處在于,本書第一版上市于 1975 年,距今已有近 50 年的歷史。在技術更新換代如此之快的今天,這本書的觀點與理論仍舊具有超越時代的指導意義。
計算機領域飛速發展了近 50 年,性能更強的硬件、延遲更低速度更快的網絡、更加極致彈性的計算、存儲資源、更加完善的框架、更多花活的編程語言、更為先進的設計思想……軟件工程領域過往存在的問題,卻并沒有隨著底層技術的進步、基礎設施的完善而得到解決,反而更加凸顯:工作量仍舊無法評估、進度排期仍舊難以合理安排、萬事不決疊人力、 Bug 反復出現大家都是草臺班子、大量軟件陷入失敗……
人月神話領先于時代地指出,人力和時間并不呈現線性關系。以大量人員和較短的時間,并不能縮短軟件的開發進度。一窩蜂的作業方式無助于軟件生產,且會制造麻煩,產生出更差的軟件。向進度落后的項目追加人力,只會使進度更加落后。
“沒有銀彈”,是人月神話的又一個經典。在這個微服務解決一切問題的當下,技術選型上的迷信和爭論仍舊喋喋不休。越深入軟件開發,讀起《人月神話》你的感觸和體悟會更深。
03
Probability and Computing
常讀常新。概率論在計算機科學的應用的經典之作。這本書中的知識和技巧應該是做算法與系統設計的必備。
概率論近幾十年在計算機科學中的應用可謂顯學,在不同的領域,尤其是算法設計、數據庫、網絡、機器學習、大數據中有極其廣泛的應用。
本書每一個章節都從概率知識開始講起,以在計算機科學中的實際應用收尾。作者 Michael Mitzenmacher 是隨機算法、網絡方面的專家,特別是深耕過一系列關于 Bloom Filter 的領域。熟讀這本書能夠為理解概率數據結構、Sketching 等工程中常用工具提供堅實的理論基礎,對讀相關的論文也有幫助。
這本書編排很實用。它的出發點是為計算機科學家所寫,所以主要聚集于離散過程,不需要像普通的概率論教材一樣從測度論開始。測度論當然很有趣,但對工作的作用的測度為 0。
04
The Cathedral & the Bazaar 大教堂與集市
本書討論的是兩種不同的軟件開發模式:
本書的核心要義是“讓夠多人看到源代碼,錯誤將無所遁形”(Given enough eyeballs, all bugs are shallow)林納斯定律。
簡單摘錄幾句書中的經典觀點,你就能 get 到本書的含金量:
優秀的程序員知道寫什么,卓越的程序員知道改寫(和重用)什么。
好的軟件作品,往往源自于開發者的個人需要。
當你對一個程序不再感興趣時,你最后的責任就是把它交給一個可以勝任的接棒者。
當你開始社區建設的時候,你需要能夠呈現一個可行的 前景。你的程序不一定要工作的非常好。它可以是粗糙的、 問題多多的、不完整的、缺少文檔記錄的。它一定不能失敗的是(1)能運行,(2)說服潛在的合作者它可以在可預 見的將來進化成真正漂亮的東西。
05
Staff Engineer
Will Larson 的作品,可以命名為“高階程序員生存指南”。這本書不是關于計算機科學知識,而是關于軟件工程。更確切地,這本書是“微觀軟件工程”,描述了作為一名高階工程師的工作任務和職責,以及常見的陷阱需要避免。
這本書可以完美地回答“TL 到底有什么用”的問題。尤其,它解釋了為什么一個高 T 一年不寫幾行代碼并不代表他沒有干活。書中的答案是:
需要務實、深思熟慮、關注長期趨勢。不要過度關注自己感興趣的技術,而是理解和解決組織的真正需求。
這本書嚴重地警告 “Stop Chasing Ghosts”:一個高級管理在空降到一家公司的時候,會完全地誤判了當前的真正挑戰,而立刻驅動一項重大的戰略轉變。他們在原本公司里面的成功或是失敗的經驗會極強地影響他們對新公司情況的理解,以至于他們把熟悉的當成重要的。
不要過度個人英雄主義。給初級工程師提供指導,給高級工程師提供支持。
沒有一個技術產品是純“技術”產品。商業產品往往是多個視角的結合體:商業、技術、產品、運營、設計……
為高層的商業策略提供“技術”層面角度,不要讓技術缺席,出現“這個需求很簡單,怎么實現我不管”。
每個 TL 都應該是一個好的產品經理。如果一個老板覺得 TL 只應該管技術的事情,連參與討論產品都不應該,那這個老板是外行,而你也應該準備跑路了。
是否仍然寫代碼應該看項目的具體情況。但是如果寫太多,如同你在更低的級別,那往往是躺在舒適區、而沒有把時間放在更重要的任務上的表現。
當然,不寫代碼不應該是因為不會,而應該是優先度不高。對大部分高階工程師來說,Code review 仍然很常見。
衡量一個 TL 的代碼水平,不應該看他的代碼質量,而應該看他所管理的項目的代碼質量。
不管是哪個級別的同學,這本書都值得一讀,雖然可能體會不同。這也是一本常讀常新的書。
06
Designing Data Intensive Applications
可能是數據密集型應用開發最好的入門書。雖然有 data-intensive 這個定語使得這本書看上去應用面比較窄,但是 data-intensive 是與 computation-intensive 對應的,現代工業界的大部分系統都是數據密集型的。這本書難得地融合了學術界理論與工業界實踐。
這本書已經有太多人推薦了,在此不再贅述。在此稍微提一點讀書的心得:應該把這本書作為知識體系的基礎,以”修書“的方式來讀這本書。
07
Software Engineering at Google 谷歌軟件工程
大部分軟件工程的教材會很詳細地描述軟件工程的整個生命周期,設計、需求、建模、開發、測試、發布、維護,但是對具體的工程實踐所涉甚少。
歸根結底,一方面軟件工程還處于發展的初期,還沒有系統的方法論;另一方面,軟件工程的主體不是軟件,而是人,而人是極其復雜的,很難有簡化的模型。所以,業界的共識是,對軟件工程,尤其是工程師的產出,進行量化,至少在現在是不可能的。但是,軟件開發的復雜性是切實的,又需要對項目進行管理。
SE@Google 這本書非常誠實地描述了 G 家對軟件開發的核心復雜度的認識:復雜度來自于時間,所謂 軟件工程=代碼*時間。他們的軟件工程都是在與時間導致的復雜度做斗爭,主要分為文化、流程和工具三種。我尤其關注了工具部分,因為與本職工作更相關。
這本書好就好在它不光講了怎么做,還講了為什么要這么做:每一樣大規模推廣的工程實踐都詳細地闡述了動機,甚至對其中的子決定的取舍都做了敘述。其中書中的大部分實踐,也正是我們在日常工作中都需要的:
不過,學習別人的實踐要做到三層境界:“怎么做/WHAT”,“為什么這么做/WHY”,“為什么不用別的辦法做/WHY NOT”。選擇某些實踐可能看上去理由充分,但是為什么不選擇同樣合理的其它實踐呢?這可能只是由于公司的慣性和歷史等很多因素,而這并不為外人所知。那么,如果只是單純地復制別人的實踐,很容易東施效顰。一定要結合組織的實際情況(正如 Staff Engineer 中所說,stop chasing the ghost)。在做大型的軟件工程治理時,應該治大國如烹小鮮,謀定而后動;而一動下定決心,就應該不再回頭。
08
Economics Rules 經濟學規則
解決了我長久以來的困惑:如果抽象的模型是簡化的,那么它在映射到現實世界時不會失靈嗎?如果會的話,那么抽象模型的意義是什么呢?
果然,這個困惑不只是我專有:著名的經濟學家 Ariel Rubinstein 說,“‘模型’一詞聽起來比‘寓言’或‘童話’更科學,(但)我看不出它們有多大的區別。”。這本書并不是計算機書籍,而是一本經濟學家的反思之作:“部分由于經濟學家把自然科學當作榜樣,他們有誤用模型的傾向。他們常常會把具體模型誤解為無論何時皆適用的普適模型。經濟學家必須克服這種傾向。他們必須根據條件變化、根據關注對象的變化而謹慎選擇模型。他們需要學習如何更自如地在不同模型之間轉換”。
這本書給我的啟示是,軟件工程并不是自然科學,而更像經濟學/社會學/管理學。如果沒有模型,軟件工程也很難進行知識創造,但是,濫用模型,把所有的問題訴諸于使用某些大銀彈,會極大地增加模型失靈的風險。
不應該在軟件工程中過度使用數學方法。不應該建立關于軟件工程的基本假設,然后在此建立復雜的數學推理進行模型推演以得到一些自己都說不定不信的結論。
這本書同時回答了我另一個困惑:為什么知道這么多道理,但還是過不好這一生。因為所有的道理都是簡化的模型。這個世界上只有這個世界才是真實的模型,在此之外,不過是你的,還是別人的,還是暢銷書的道理、真理、方法論,都是簡化的模型。拉普拉斯之妖并不存在,計算的極限也說明決定論是不存在的,而心智的成熟就是我們內心中那個模型逐漸完善的過程。
09
Computer Systems: A Programmer's Perspective
本書的中文譯名叫《深入理解計算機系統》,但實際上原意更符合“系統開發者的視角”看計算機系統,這是本操作系統入門書,不是所謂讀一本就精通 os 的萬靈藥。無論是北大上交還是 CMU,這本書都是作為大一大二的 ICS 計算機系統導論課進行教學。
這本書在國內計算機領域的地位非常穩健,無論是本科階段的教學還是考研階段的進階,都會大量運用到本書作為學習工具。對國內的計算機專業學生而言,這本書更像是一種啟蒙,而非30天精通的畢業之作。
然而現實情況是,大多數計算機專業畢業生直到參加工作,都未必對本書有多深入的了解。盡管如此,它仍舊值得每個沒有接觸過類似書籍的人去認真閱讀。
理想家生活#
本內容來源于@什么值得買APP,觀點僅代表作者本人 |作者:52赫茲de鯨
大家好,我是愛分享的52赫茲de鯨!作為一名閱讀愛好者,隨著閱讀的積累,就如上次值友評論說的,還是有必要學習一些基礎理論,“內功修煉好了,學什么都快,看什么都清”。今天就想分享幾本入門書!籍!>,非專業研究,只業余閱讀分享。有不對的,請各位值友多多包涵并批評指正。
全家福
心理學是研究人類和動物的心理活動與行為的一門學科。它包括多個子領域,如認知心理學、發展心理學、社會心理學等。心理學旨在理解、預測和改善個體及群體的行為和心理狀態,對教育、健康、商業等多個領域都有重要影響。通過實驗、觀察等方法,心理學家探索意識、學習、記憶、情緒等心理過程,為解決實際問題提供科學依據。
之前也說過,曾經有一段時間,我的悲觀主義深深困惑著我,也影響著我生活上的方方面面,那段時間讀了很多心理學方面的書籍,它們一直鼓勵著我。而作為入門,我推薦以下兩本:
《社會心理學》豆瓣評分9.4
《社會心理學》是一本在學術界享有崇高地位、內容全面深入的心理學經典之作,也是美國700+所大專院校社會心理學指定教材,出版至今深受心理學愛好者歡迎,目前中文翻譯已是第 11版。作者戴維·邁爾斯是美國密歇根霍普學院的心理學教授,因其在社會心理學領域的突出貢獻,曾獲得美國心理學會的“高爾頓·奧爾波特獎”等多項大獎。
該書系統介紹了社會心理學的基礎理論、研究方法以及主要研究領域,包括社會思維、社會影響、社會關系和應用社會心理學等四個部分,這幾乎是所有社會心理學知識了。且每個論點運用研究案例、實驗數據、圖像、甚至連環畫等生動形象進行統計分析,闡釋實驗結果,做到有理有據,不僅讓你讀起來沒那么枯燥,還能更直觀輕松掌握知識,這也是我非常喜歡并堅持讀下去的原因。
書中還提出了一些提高生活質量的方法,如親密關系、堅持信仰、參加志愿活動、積極的思維習慣、感受大自然、心流活動等,個人覺得很受用。
這本書讓我更加了解社會中人與人之間的關系,社會各種現象背后的本質原因,更讓我學會多方面思考問題,也換個角度看待自己。
《被討厭的勇氣》豆瓣評分8.3
阿德勒被譽為“自我啟發之父”,其理論對現代心理學產生了深遠影響。《被討厭的勇氣》由日本哲學家岸見一郎和作家古賀史健共同編著,通過對話體的方式,將阿爾弗雷德·阿德勒的心理學思想深入淺出地呈現。
書中圍繞“人是如何能夠獲得幸福”這一主題,探討我們的不幸是誰的錯、一切煩惱都來自人際關系、要有被討厭的勇氣、認真的人生“活在當下”等核心議題,還通過分析生活中種種煩惱的根源,給出了相應的對策。
跟隨書中“禪師”和“青年”的對話,讓我對如何面對自己的問題、如何改善人際關系、如何獲得幸福有了一些深層次的思考。其中,讓我深刻的認識到人生是自己選擇的結果,往后的人生是可以通過自己的改變而改變的。還有就是課題的研究,不是自己的課題不用過多考慮;人實現自我的最高層次是他者奉獻。
哲學本質上是人理解人、人認識人的理性活動,是關于世界觀的理論體系,它研究宇宙的性質、人在宇宙中的位置等基本問題,涵蓋自然觀、歷史觀、人性論、認識論等。因此,我認為哲學是解決一切問題的根源所在。
以下兩本,是我讀到覺得比較易懂的兩本:
《劉擎西方現代思想講義》豆瓣評分9.2
這是一本針對當代西方哲學思想的講解書籍。作者劉擎,作為華東師范大學的政治學教授及世界政治研究中心主任,憑借其深厚的學術背景和豐富的研究成果,以其清晰的邏輯和生動的語言,為我們呈現了一幅西方現代思想發展的宏偉畫卷。
本書的核心內容圍繞自啟蒙時期以來的西方哲學思想,尤其是那些對社會科學研究具有深遠影響的思想流派。通過對關鍵人物如馬克斯·韋伯、漢娜·阿倫特、哈貝馬斯等人的思想進行解讀,闡述了“世界的祛魅”、“諸神之爭”和“現代的鐵籠”等核心概念,還討論了理性、自由主義、批判理論等多樣的話題。
通過閱讀這本書,加深了我對西方思想史的理解,也促進我對現代社會問題和個人存在的深層次思考,諸如為什么現代人感受到更多的孤獨? 為什么很多人都在追求價值感? 為什么我們每天996? 像個牢籠又無法出離? 為什么現在主流是積極心理學?……這些一直困擾著我的問題,也有了新的啟發和思考。
《感知·理知·自我認知》豆瓣頻分8.7
《感知·理知·自我認知》就是以“感知”、“理知”和“自我認知”為核心,逐步引導我們認識自己與世界的關系,讓我們可以逐漸理解哲學的基本問題和思考方法。陳嘉映先生的論述方式極具親和力,他用通俗易懂的語言將復雜的哲學問題表述得清晰明了,讓諸如我這些初次接觸哲學的讀者也能夠輕松理解書中的內容,并產生濃厚的閱讀興趣。
書中除了關注哲學理論的探討,還結合了實際生活中的例子和科學研究成果,讓你加深對哲學思想的理解和感悟。
作為一本哲學入門書籍,《感知·理知·自我認知》讓我有了一個全新的視角來看待世界和自己。它鼓勵我勇敢地面對內心的困惑和疑慮,通過哲學的思考來尋找答案和解決問題。尤其在今天這個理知落幕的時代,面對技術化、數字化的大形勢,如何認知我們在世界中的位置,如何認知我們自身在人之中的位置,讓我有了一個深入而又有新意的視角。
自從觀看了紀錄片《河西走廊》、《中國簡史》后,我便對古人們洞窟畫的精雕細琢、使用器皿的文化內涵等感到無比震撼,又認識到藝術的發展與當時的經濟、政治、階級、信仰等有著密不可分的關系,于是對藝術的整個發展歷程產生了濃厚的興趣,便開始讀這方面的書籍。
作為入門,個人覺得這兩本比較全面:
《藝術的故事》豆瓣評分9.5
整書介紹了從古代到現代各個時期的藝術發展歷程,包括建筑、繪畫、雕塑等各個領域。作者敘述簡潔流暢、侃侃而談,讀起來就如讀故事書一般,讓你能輕輕松松了解藝術背后的文化背景和風格,藝術作品的獨特價值和意義。更重要的是,讓如我這般初步接觸藝術史的人建立了全新的看待藝術的視角,和理解藝術史的方法。
書本賞心悅目的裝幀設計讓我愛不釋手,里面還有大量的圖文對比,413件藝術作品貫穿,閱讀過程就像是一種享受,讓人心花怒放!
《美的歷程》豆瓣評分9.2
這本書帶我穿越了中國數千年的美學史,從石器時代到明清時期,全面展現了中華民族審美意識的發生、形成和流變。這種宏觀的視野,使我一覽中國美學的全貌,理解其深厚的文化底蘊和歷史脈絡。我無比驚嘆于古人對美的追求和創造,也感受到了藝術與生活之間的緊密聯系。
作者李澤厚先生是當代著名哲學家、美學家和思想學家。他認為,美不是抽象的概念,而是與現實生活緊密相連的生動體驗。從石器時代的幾何紋樣,到唐詩宋詞的“韻外之致”,再到筆墨間的藝術表現,生活中的每一處風景、每一件藝術品,都蘊含著深厚的文化和歷史背景,都是我們審美趣味的反映。
《美的歷程》就是這樣一部內容豐富、見解獨特且富有深度的文藝理論著作,它還被譽為中國美學史的經典之作,馮友蘭先生曾評價該書為“幾部大書”,足以見其影響力和價值。
作者聲明本文無利益相關,歡迎值友理性交流,和諧討論~
要自學黑客卻沒人教怎么辦,看完這五本書,你也能成為黑客大佬
第一本《黑客攻防:從入門到精通》這是一本面向計算機零基礎讀者的入門級讀物,書中利用通俗易懂的文字和圖片,循序漸進地介紹了黑客攻防的概念以及技術,并且演示了黑客攻擊和防御的實際操作,書中包括了網絡安全基礎、常見攻擊手段、密碼破解、木馬和病毒、數據庫攻擊等系統知識,可以說時黑客入門的啟蒙讀物
第二本《kali Linux高級滲透測試》這是一本關于使用kali Linux進行滲透的實踐指南,這是黑客最常用的滲透方式之一,書中從淺到深介紹了各種滲透測試技術,包括了漏洞掃描、端口掃描、溢出測試等方面,并且提供了大量的實例和實驗,能讓讀者更好的理解相關知識,是一本非常實用的入門書籍
第三本《計算機網絡自頂向下方法》這是一本計算機網絡教學的經典教材,它采用自頂向下的方法,從應用層協議開始,逐步深入傳輸層協議、網絡層協議、鏈路層協議,詳細的闡述了計算機網絡工作原理以及設計思想,并且書中配備了大量的實例和圖標,更方便讀者理解和掌握,是了解計算機網絡的不二之選
第四本《python編程從入門到實踐》這是一本適合零基礎讀者學習python的入門書籍,它通過一系列有趣的項目,逐步引導讀者掌握python的基礎知識和技能,包括了變量、數據類型、函數、模塊等,并且還介紹了python的眾多應用場景,是業內公認的經典python入門書籍
第五本《社交黑客》這是一本介紹社交工程學攻擊和防御的書籍,主要講述了社交工程學攻擊的原理、方法、技巧,比如如何利用心理學和社交行為的弱點,通過欺騙、偽裝、恐嚇等手段獲取信息,當然除了攻擊手段外,本書還介紹了防御的方法和策略,可以說攻防一體,是一本非常實用的書籍,不過這本書在進階時候看更合適