今天看了林欣浩老師的兩篇文章,結合生活和程式設計做個總結。
##理性和感性 && 抽象和離散
###一、古代猿人如何計數?
一開始比劃着預估物體數量,這就代表了感性思維。但是這樣計數不精确,不能量化。此時需要用理性思維解決精确度的問題,于是有了“離散”的概念,可以精确到“一個一個”,這種計數方式代表了理性思維。
衆所周知,計算機采用的是二進制,二進制隻有0,1兩個取值。可以說,計算機硬體計數方式也是離散的,比如全加器。是以計算機相關專業的課程中包含了一門特别的數學課——離散數學。
接下來進一步思考,能夠采用離散化的方法計數的基礎是什麼?即我們要達成什麼共識才能如此計數?
看這樣一到數學題:“小明原本有一塊錢硬币,小明媽媽再給了他一塊錢硬币,問此時小明總共有幾塊錢?”
呵呵一笑,秒算,答案是兩塊錢。我們大腦中的計算過程大緻是“1 + 1 = 2”。“1 + 1 = 2”的前提條件是什麼呢?這兩枚硬币在你心中是“一樣的”,也就是說,你不關心這兩枚硬币的光澤、磨損程度等屬性,如果将硬币看作是一個對象的話,你隻關心“數量”這個屬性。事實上,這個過程可以了解為“抽象”。隻關心你想關心的,這就是“共識”。
在計算機科學中,抽象無處不在。為何要抽象?抽象是為了屏蔽複雜的細節,為使用者提供便利,使用者隻需關心自身所需關心的。比如微軟提出的硬體抽象層(Hardware Abstraction Layer, HAL),該層屬于作業系統核心和硬體的接口層。接口層?是不是很熟悉?在面向對象設計思想中,我們都是面向接口程式設計的,這樣也有利于前後端分離。
抽象和接口經常成對出現。那麼抽象的好處是什麼呢?解耦。
###二、“等号=”裡的數學思維
在将兩個事物劃等号之前,我們是做過“比較”的。比較這個概念是理性思維的基礎。等号是比較的結果,這個判斷的過程就是抽象。
一旦你将兩個事物化了等号,就間接表明了你判斷的依據,即你看重的東西。
不僅僅是數學,生活中我們也經常“劃等号”。父母認為“好孩子”等價于“好好學習”;上司認為“好員工”等價于“能解決實際問題”。了解了等号背後更深層次的含義,有助于我們了解别人“劃等号”時隐藏的資訊。