曾幾何時,利用Google搜索某問題的時候,意外地接觸到了一個網站:https://www.gitbook.com/。一個在線編輯書籍、文章的文章,具體描述可以去其網站觀看。該網站舊版地址:legacy.gitbook.com.
剛工作不到一年的時候,接觸到公司的商業項目,逐步意識到編程說難不難,說不難也難。之前看文章說學計算機繞不開的兩項技能:英語和數學,在此期間深刻體會到了其重要性。尤其是數學,我發現一般開發只需要中學數學知識就夠了,尤其是高中數學,當年只是為了高考,不知有何用,現在真要感謝高數的數學老師。當然搞人工智慧只有高中數學是不夠的,我想從事人工智慧行業的朋友應該對大學數學的作用有更深刻的認識。
編程中兩項核心能力——抽象和邏輯能力,都可以通過紮實的數學訓練得到加強。為什麼說編程的核心能力也是難點所在是抽象和邏輯能力呢?數據結構與算法是大部分程式設計師頭痛的地方,數據結構即抽象,是對現實世界的人和物的抽象表示;算法即邏輯。還有同樣令人頭疼的設計模式不也是因為太抽象了嗎? 還有一旦涉及到軟體系統設計,這也是抽象。
比如,程式語言的循環和遞歸,不就是數學歸納法的體現嗎?
再如幾個常見數學概念在計算機和軟體開發中的體現,
1.函數
數學函數三要素:定義域、對應法則、值域。
對應於程式語言中的函數:形式參數、函數主體(邏輯、計算規則)、返回值。
2.命題
(1)命題的真假對應分支語句的真與假
分支語句判斷條件有無遺漏,從以下兩點分析:
a.條件有沒有遺漏
分支語句範圍要完整,才不會有遺漏,導致邏輯錯誤。另外還要注意else if語句是排他的。
舉例,else if 語句:
if(x > 60){......}
else if(x > 40){......}
else if(x > 20){......}
b.條件有沒有重複
鋪墊了那麼長,就是想強調數學的趣味性和重要性。因此,本人就特意查找到了專門講解有關計算機科學的數學的課程,準備好好學習,並翻譯其教材,即精讀。翻譯工具即Gitbook。
初步成果展示連結:https://finit-xu.gitbook.io/msc20180606/。也可以點擊[閱讀原文](https://finit-xu.gitbook.io/msc20180606/)查看課程詳情。