《程式設計師的數學》第2版來了!
大家好!我是結城浩。歡迎閱讀《程式設計師的數學》。
本書是為程式設計師朋友們寫的數學書。
程式設計的基礎是電腦科學,而電腦科學的基礎是數學。因此,學習數學有助於鞏固程式設計的基礎,寫出健壯的程式。
有的讀者可能會說“但我數學不好啊”。特別是很多讀者“一碰到算式就跳過不讀”。坦率而言,我自己遇到書中的算式也想跳過不看。
本書儘可能減少了“大家不想看的算式”,也沒有過多的定義、定理和證明。
這是為幫助程式設計師更容易理解程式設計而寫的書。希望你能通過本書學到有助於程式設計的“數學思維”。
數學思維示例
學習“數學思維”說起來太抽象了,我們來舉些具體的例子。
【條件分支和邏輯】
在程式設計時,我們按照條件將處理方法分為多個“分支”。對此,C 語言和Java 語言等很多程式語言中使用的是if 語句。具體方法為:當滿足條件時執行這條語句,不滿足條件時執行另一條語句。這時,我們就使用了數學領域的“邏輯”來控制程式。因此,程式設計時必須熟練掌握“ 與”“或”“非”“蘊涵”等邏輯構成元素。
【迴圈和數學歸納法】
我們在處理大量的資訊時,使用程式進行“迴圈”操作。比如使用for 語句可以迴圈處理大量資料。迴圈中使用的就是“數學歸納法”。
【分類和計數方法】
在將許多條件和資料“分類”時,程式設計師必須注意不能有遺漏。這時加法法則、乘法法則、排列、組合等“計數方法”將助你一臂之力。這是程式設計師應該熟記於心的數學工具。通過本書,也可以學到遞迴、指數、對數、餘數等重要的基礎數學概念。
人類和計算機的共同戰線
我們寫程式是為了解決人類解決不了的問題。程式設計師理解問題,編寫程式;計算機執行程式,解決問題。
人類不擅長重複勞動,很容易厭倦,有時還會出錯,但人類擅長解決問題。與此相對,計算機擅長重複勞動,但不能自行解決問題。
於是,人機合力,如虎添翼。
遇到難題,光靠人類不能解決,光靠計算機也不能解決。而人機合力就能解決問題。這也是本書要傳達的主旨之一。
不過,編寫程式也非易事,無論人類和計算機如何齊心合力,總有解決不了的問題。本書也對人類和計算機的極限進行了分析。
希望你在讀完本書後能對以程式為媒介的人機合作有更深刻的理解。
本書面向的讀者
本書主要面向的讀者是程式設計師。不過若你對程式設計或數學感興趣,讀起來也會一樣有意思。
你不需要精通數學。除附錄以外,書中不會出現∑ 和 ∫ 等很難的算式,因此自認為數學不太好的讀者也完全可以閱讀。閱讀本書只需要具備四則運算(+ – ×÷)和乘方(23 = 2 × 2 × 2)等基礎知識。除此以外的知識在書中皆有說明。
如果你對數字和邏輯感興趣,可能會更喜歡本書。
你也不需要精通程式設計。不過如果稍有一些程式設計經驗,可能會更容易理解本書內容。書中有個別例子是用C 語言寫的程式,不過即使不懂C 語言也不妨礙理解。
本書結構
本書各章內容可以按任意順序閱讀,但我推薦從第1 章開始按順序閱讀。
第1 章對0 進行討論,以按位計數法為核心,學習如何用0 來簡化規則,並對“無即是有”的意義進行了思考。
第2 章學習使用邏輯來整理煩瑣的內容,介紹邏輯表示式、真值表、德摩根定律、三值邏輯、卡諾圖等。
第3 章討論餘數。我們要記住“餘數就是分組”的觀點。對於一些難題,有時只要找到週期性規律就能解決。
第4 章學習數學歸納法。數學歸納法只需要兩個步驟就能證明無窮的斷言。這一章還會舉例介紹使用迴圈不變式寫出正確的迴圈。
第5 章學習排列組合等計數方法。計數的關鍵在於“認清物件的性質”。
第6 章學習自己定義自己的遞迴,通過漢諾塔、斐波那契數列、分形圖形等,練習從複雜事物中發現遞迴結構。
第7 章學習指數爆炸。計算機也很難解決含有指數爆炸的問題。我們將在這裡思考研究如何將指數爆炸為我所用,解決大型問題。另外這一章還將以二分法檢索為例,學習將問題空間一分為二的意義。
第8 章以停機問題為例,來說明許多程式上的問題是計算機如何發展都解決不了的。這一章也會學到反證法和對角論證法。
第9 章回顧本書學習內容,思考人類全面把握結構的能力對解決問題有多大幫助,以及人機協作具有何種意義。
附錄學習近年備受關注的機器學習中的幾個基本概念。
《程式設計師的數學(第2版)》已經上市了,新一版增加了機器學習內容,涉及感知器、損失函式、梯度下降法和神經網路,旨在帶領讀者走進機器學習的世界。
目前《程式設計師的數學(第2版)》已經上架網店,購買地址:
京東:程式設計師的數學 第2版 噹噹:程式設計師的數學 第2版
《程式設計師的數學》系列一共三本,除了《程式設計師的數學》,還有《程式設計師的數學2:概率統計》和《程式設計師的數學3:線性代數》,同《程式設計師的數學》一樣,這兩本書內容也很基礎,內容涉及程式設計所需的數學知識,同時對於普通讀者來說,也是不錯的數學入門書籍。
相關文章
- 程式設計師的數學程式設計師
- 微軟程式設計師最好的時代來了微軟程式設計師
- 程式設計師薅羊毛神器來了!程式設計師
- 程式設計師越來越值錢了程式設計師
- 反轉!BAT程式設計吸金榜來了,AI程式設計師刷爆了......BATAI程式設計師
- 新來的菜鳥程式設計師闖禍了程式設計師
- 《程式設計師的數學》思考題(一)程式設計師
- 幽默:js程式設計師的數學不好?JS程式設計師
- 程式設計師4月書訊:Angular來了!程式設計師Angular
- 程式設計師的未來程式設計師
- 相愛相殺:程式設計師的數學程式設計師
- 淺談程式設計師的數學修養程式設計師
- 程式設計師的數學筆記2--餘數程式設計師筆記
- 那些學了 Python 的程式設計師,程式設計能力都“退化”成什麼樣了?Python程式設計師
- 程式設計師週刊(第4期):程式設計師的財富觀程式設計師
- 程式設計師:學校教的數學知識,程式設計根本用不到!程式設計師
- 為了成為優秀的程式設計師,我需要擅長數學嗎?程式設計師
- 好書妙評之《程式設計師的數學》程式設計師
- [TEAP早期試讀]《程式設計師的數學》- 前言程式設計師
- 程式設計師迷茫的未來程式設計師
- 程式設計師,請你不要在坑程式設計師了?程式設計師
- 學Python的程式設計師,程式設計能力都“退化”成什麼樣了?Python程式設計師
- 一個程式設計師的數學學習探索之旅程式設計師
- 當程式設計師面對小學數學題程式設計師
- 程式設計師的哲學程式設計師
- 我也 30 了,來談談程式設計師的迷茫年齡程式設計師
- 扎心了,程式設計師!程式設計師
- 洩了氣的老程式設計師程式設計師
- 程式設計師的春天來了?能抓住嗎?高階工程師速成指南!程式設計師工程師
- 程式設計師數學之數學魔術人人皆會變程式設計師
- 數學,離一個程式設計師有多近?程式設計師
- 程式設計師數學四部曲程式設計師
- 優秀的程式設計師需要擅長數學嗎?程式設計師
- 糟糕的、差勁的,以及不該來當程式設計師的程式設計師程式設計師
- 第一個想取代程式設計師的AI程式設計師,失敗了?程式設計師AI
- 程式設計師的數學 開發你的創造力程式設計師
- 好程式設計師寫出來的程式碼,就叫好程式碼嗎?你錯了!程式設計師
- 程式設計師福布斯排行榜,看你學的語言排第幾?程式設計師