超越離散數學

早些時候曾寫過一篇程序員的數學修養,介紹了一些程序員可以學習的數學分支。雖然與編程有一定的相關,但自學起來也不是一件容易的事。所以本文再推薦一些專門爲程序員寫的數學書,可以用作入門。有了一定基礎知識,可以再根據需要去學習和選讀一些更偏向數學的書。說到程序員數學,可能第一反應就是離散數學,再就是算法。國外的幾本經典教材可能大家也都耳熟能詳,所以本文會側重一些不是很熱門或者新出版的書籍。


1.抽象代數

《From Mathematics to Generic Programming》和《The Elements of Programming》,兩本書出自同一作者。後者中文名《編程原本》,是一本老書,可能更出名一些。前者則更爲新一些,而且內容不那麼枯燥。除了抽象代數和數論等基礎知識,還額外介紹了一些編程中的應用及相關歷史人物生平簡介等。總體上來說,還是一本值得讀一讀的好書。讀過之後,可以再考慮挑戰後一本。


2.範疇論

《Basic Category Theory for Computer Scientists》,作者是大牛,除了這本還寫了可能更爲有名的《Type of Programming Language》。此外,還有一本《Category Theory for Programmers》評價也很不錯。值得一提的是作者還在不斷完善更新,並在國外的自出版網站Lulu上出售。按需印刷,價格非常低廉。


3.信息論

作爲程序員怎能不知信息論。首先是兩本科普性質的書《Decoding the Universe》和《The Information》,後者是個大部頭,英文原版不太好讀,前者則用詞和內容都更爲簡潔一些。如果讀過覺得還不夠過癮,還可以看看《A Mind at Play》介紹信息論之父香農的生平事蹟。但這幾本畢竟都是科普自傳類的,要真正深入學習還是得艱苦一些,這裏推薦口碑爆棚的《An Introduction to Information Theory: Symbols, Signals and Noise》。Dover出版,非常便宜。


4.線性代數

說到線性代數,可能唯一一本能入選本文的就是那本《Coding the Matrix: Linear Algebra through Applications to Computer Science》。全書除了介紹理論,還用Python真正代碼實現,可以說是對碼農們相當友好了。


5.邏輯

邏輯在計算機科學中主要是自動證明,《Logic in Computer Science: Modelling and Reasoning about Systems》評價還不錯。再就是“小不點”系列中的《The Little Prover》和《The Reasoned Schemer》。最後一本還沒入手,據說要看第二版,第一版非常的繞。


6.關係代數

作爲數據庫理論的關係代數,主要涉及集合論和邏輯。關於這方面的知識有兩本好書可以參考,《Database in Depth: Relational Theory for Practitioners》和《Applied Mathematics for Database Professionals》。前者據說是關係理論之父的好友,內容觸及關係理論的本質,不可不讀。


7.大全

還有一些比較全面的書,比如大名鼎鼎的《具體數學》,還有新出的《A Programmer’s Introduction to Mathematics》。後者排版很一般,內容尚可,作爲這一類爲數不多的書還是支持推薦一下吧。除此之外,還是忍不住推薦一本有點像離散數學教材的百科大全式的書《Mathematics for Computer Science》。此書的開本非常誇張,加上超過1000頁的厚度,可以說是一本巨無霸。相信如果真能讀完,必會內功大漲。不過估計大部分真能買實體書的同學,也可能像我一樣,只是當參考書查閱。

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