天天看點

關于邏輯、數學和程式設計的深層次思考

衆所周知,程式設計離不開數學和邏輯。誠然,很多程式員數學能力并不強,也沒有系統的邏輯能力。但是,他們在無意識中,日常工作中,有意無意的就在使用邏輯和數學,并将它們運用于代碼中。先看看下面幾個例子:

  1. 我是程式員
  2. 小婷是測試工程師
  3. 小強是設計師

上面的三句話在日常生活中我們說的非常多,可能這種句子形式過于簡單,是以沒人去思考過他們。這三個句子都是主謂賓的形式,可以抽象為:

主體+是+職位

這就是命題,在數學中,一般把判斷某一件事情的陳述句叫做命題。從上面三個命題我們可以提取共同的部分,構造成函數:

F:{我,小婷,小強} -> {程式員,測試工程師,設計師}

為了便于記号,我們用小寫字母表示職員,用大寫字母表示職位,上面的公式可以記作下面的形式:

F: {a, b, c} -> {A, B, C} (a, b, c ∈ 職員, A, B, C ∈ 職務)

通過上面的例子,我們從邏輯(命題)過渡到了函數。那麼,在程式設計階段,我們通常是怎麼做的呢?我們會定義一個函數,通過調用這個函數來達到某個目的得出結果。首先,我們需要定義對象,即命題中的主語和賓語:職員、職務。參考如下:

class User{}

class Duty{}

為了表示關系,我們通常将職務定義為人員的屬性:

class User{

Duty duty;

// getter setter

}

從上面這個例子,我們可以很容易思考出來邏輯、數學、程式設計三者之間的關聯。邏輯用于描述事物,表達事物之間的關聯關系;數學将邏輯抽象為函數,并對邏輯進行規範化公式化的定義;而程式設計則是将邏輯和函數用一種規範書寫出來,通過輸入、執行、輸出來表述邏輯與函數。

如果你是程式員,那麼邏輯和數學對你而言是非常重要的。要成為一個優秀的程式員,這兩門學科的知識,你可能需要學習很多。