Linus說: "爛程序員關(guān)心的是代碼。好程序員關(guān)心的是數(shù)據(jù)結(jié)構(gòu)和它們之間的關(guān)系。"
代碼體現(xiàn)的是過程。數(shù)據(jù)結(jié)構(gòu)(和它們之間的關(guān)系)體現(xiàn)的是實(shí)體。
這里講的過程和實(shí)體,都是模型,是人類思維對(duì)現(xiàn)實(shí)世界認(rèn)知進(jìn)而處理的手段。
相比較而言,人類對(duì)實(shí)體的掌握,似乎要優(yōu)于對(duì)過程。我們覺得實(shí)體比過程更直觀和易處理。
所以面對(duì)復(fù)雜和大規(guī)模的過程,人們借助實(shí)體,來增強(qiáng)認(rèn)知和處理能力 -
- 一方面,我們借助實(shí)體,對(duì)過程做分割和組合。比如賣個(gè)東西,是個(gè)復(fù)雜的過程,我們借助訂單、出庫單、送貨單等實(shí)體,把這個(gè)過程分解為相互配合的多個(gè)過程,通過分解降低了過程的復(fù)雜性。
- 另一個(gè)方面,我們借助實(shí)體,對(duì)過程作記錄和可視。比如用賬目來記錄經(jīng)營過程,用看板來可視化生產(chǎn)。雖然沒有直接降低復(fù)雜性,但幫助了認(rèn)知和理解。
以上來看,實(shí)體是我們對(duì)付世界的首選武器,即使不得不處理過程,我們也人為地引入實(shí)體來幫忙。
回到Linus的話,說代碼與數(shù)據(jù)結(jié)構(gòu),實(shí)際上說的是程序員如何建模設(shè)計(jì)的問題。我理解Linus的意見是,多用實(shí)體,輔助過程,符合人類思維模式,是聰明的選擇。