布爾代數(shù) 是計(jì)算機(jī)的基礎(chǔ)。沒有它,就不會(huì)有計(jì)算機(jī)。
布爾代數(shù)發(fā)展到今天,已經(jīng)非常抽象,但是它的核心思想很簡單。本文幫助你理解布爾代數(shù),以及為什么它促成了計(jì)算機(jī)的誕生。

我依據(jù)的是《編碼的奧妙》的第十章。這是一本好書,強(qiáng)烈推薦。

一、數(shù)理邏輯的起源
18世紀(jì)早期,英國數(shù)學(xué)家喬治·布爾(George Boole,1815-1864)突發(fā)奇想:人的思想能不能用數(shù)學(xué)表達(dá)?
此前,數(shù)學(xué)只用于計(jì)算,沒有人意識到,數(shù)學(xué)還能表達(dá)人的邏輯思維。

兩千年來,哲學(xué)書都是用文字寫的。比如,最著名的三段論:
所有人都是要死的,
蘇格拉底是人,
所以,蘇格拉底是要死的。
喬治·布爾認(rèn)為,這種推理可以用數(shù)學(xué)表達(dá),也就是說,哲學(xué)書完全可以用數(shù)學(xué)寫。這就是數(shù)理邏輯的起源。
二、集合論
喬治·布爾發(fā)明的工具,叫做"集合論"(Set theory)。他認(rèn)為,邏輯思維的基礎(chǔ)是一個(gè)個(gè)集合(Set),每一個(gè)命題表達(dá)的都是集合之間的關(guān)系。

比如,所有人類組成一個(gè)集合 R ,所有會(huì)死的東西組成一個(gè)集合 D 。
所有人都是要死的
集合論的寫法就是:
R X D = R
集合之間最基本的關(guān)系是并集和交集。乘號( X )表示交集,加號( + )表示并集。上面這個(gè)式子的意思是, R 與 D 的交集就是 R 。
同樣的,蘇格拉底也是一個(gè)集合 S ,這個(gè)集合里面只有蘇格拉底一個(gè)成員。
蘇格拉底是人
// 等同于
S X R = S
上面式子的意思是,蘇格拉底與人類的交集,就是蘇格拉底。
將第一個(gè)式子代入第二個(gè)式子,就得到了結(jié)論。
S X (R X D)
= (S X R) X D
= S X D
= S
這個(gè)式子的意思是,蘇格拉底與會(huì)死的東西的交集,就是蘇格拉底,即蘇格拉底也屬于會(huì)死的東西。
三、集合的運(yùn)算法則
前面的三段論比較容易,一眼就能看出結(jié)論。但是,有些三段輪比較復(fù)雜,不容易立即反應(yīng)過來。
請看下面這兩句話。
"鴨嘴獸是卵生的哺乳動(dòng)物。鴨嘴獸是澳洲的動(dòng)物。"
你能一眼得到結(jié)論嗎?
鴨嘴獸 X 卵生 = 鴨嘴獸
鴨嘴獸 x 澳洲 = 鴨嘴獸
將第一個(gè)式子代入第二個(gè),就會(huì)得到:
鴨嘴獸 X 卵生 x 澳洲 = 鴨嘴獸
// 相當(dāng)于
卵生 x 澳洲 = 鴨嘴獸 + 其他
因此,結(jié)論就是"有的卵生動(dòng)物是澳洲的動(dòng)物",或者"有的澳洲的動(dòng)物是卵生動(dòng)物"。
還有更不直觀的三段論。
"哲學(xué)家都是有邏輯頭腦的,一個(gè)沒有邏輯頭腦的人總是很頑固。"
請問結(jié)論是什么?
這道題會(huì)用到新的概念:全集和空集。集合 A 和所有不屬于它的元素(記作 -A)構(gòu)成全集( I ),這時(shí) A 和 -A 的交集就是一個(gè)空集( 0 )。
A + (-A) = I
A X (-A) = 0
因此,有下面的公式。
B
= B X I
= B X (A + -A)
= B X A + B X (-A)
回到上面那道題。
哲學(xué)家 X 邏輯 = 哲學(xué)家
無邏輯 X 頑固 = 無邏輯
根據(jù)第一個(gè)命題,可以得到下面的結(jié)論。
哲學(xué)家 X 無邏輯
= (哲學(xué)家 X 邏輯) X 無邏輯
= 哲學(xué)家 X (邏輯 X 無邏輯)
= 哲學(xué)家 X 0
= 0
即哲學(xué)家與沒有邏輯的人的交集,是一個(gè)空集。
根據(jù)第二個(gè)命題,可以得到下面的結(jié)論。
無邏輯 X 頑固
= 無邏輯 X 頑固 X (哲學(xué)家 + 非哲學(xué)家)
= 無邏輯 X 頑固 X 哲學(xué)家 + 無邏輯 X 頑固 X 非哲學(xué)家
= 0 X 頑固 + 無邏輯 X 頑固 X 非哲學(xué)家
= 無邏輯 X 頑固 X 非哲學(xué)家