十幾年前的小品《賣拐》中爷速,趙本山問范偉:1+1在什么情況下等于3央星?大家都知道答案了:在算錯(cuò)的情況下等于3。
我們都認(rèn)為這只是一個(gè)腦筋急轉(zhuǎn)彎而已惫东,但我說(shuō)“1+1”是蘊(yùn)含著大智慧的莉给。
如果你看到“1+1”,你會(huì)想到什么凿蒜?你會(huì)毫不猶豫地回答:等于2禁谦。但如果我告訴你,我們現(xiàn)在并不是使用十進(jìn)制算法废封,而是在使用電腦中常用的二進(jìn)制算法時(shí)州泊,那結(jié)果是10,而不是2漂洋。這道題目遥皂,看似連幼兒園小朋友都會(huì)回答力喷,現(xiàn)在卻難住了一些高學(xué)歷的人吧。
現(xiàn)在演训,我們?cè)龠M(jìn)一步弟孟,這下將要難住博士學(xué)位的人啦!
如果我告訴你样悟,“1+1”是三個(gè)漢字拂募,你會(huì)不會(huì)很驚訝?數(shù)字“1”實(shí)際上和漢字筆畫中的“豎”在字形上是完全一樣的窟她,但這一“豎”本身就是一個(gè)漢字陈症。簡(jiǎn)化字里當(dāng)然沒有這個(gè)字,但小篆和以前的古文字中卻包含這個(gè)字震糖,這個(gè)字念“滾”录肯。
因此我們需要從二進(jìn)制還是十進(jìn)制的糾結(jié)中跳出來(lái),也需要從漢字還是數(shù)學(xué)題的迷惑中走出來(lái)吊说,才能給出正確的答案论咏。但我們不能僅限于驚嘆,我們還要弄明白這到底意味著什么颁井?它能給我們的工作和生活帶來(lái)什么啟示厅贪?
【思維維度】
我認(rèn)為,這實(shí)際上是關(guān)于思維維度的問題雅宾。
電影《盜夢(mèng)空間》大概很多人都看過(guò)卦溢,電影里的三層夢(mèng)境其實(shí)就是一個(gè)思維維度的問題。有了《盜夢(mèng)空間》的三層夢(mèng)境基礎(chǔ)秀又,我們?cè)倩剡^(guò)頭來(lái)看“1+1”的場(chǎng)景就會(huì)容易一些。
當(dāng)我們看到“1+1”并把它和2畫等號(hào)時(shí)贬芥,我們實(shí)際上已經(jīng)跳過(guò)了兩個(gè)思維的維度吐辙,而直接到達(dá)了最終的第三個(gè)思維維度。第一個(gè)思維維度是:這是一道數(shù)學(xué)題還是漢字蘸劈,或者是其他的什么昏苏。我們并沒有經(jīng)過(guò)第一維度的判斷或詢問出題人,就自動(dòng)認(rèn)為這就是一道數(shù)學(xué)題威沫,于是我們進(jìn)入第二個(gè)維度:這是十進(jìn)制還是二進(jìn)制算法贤惯。于是我們又自動(dòng)確定了這是十進(jìn)制算法,直接進(jìn)入了第三個(gè)維度:計(jì)算1+1棒掠。于是錯(cuò)誤在某種情況下就發(fā)生了孵构。
這種錯(cuò)誤在絕大多數(shù)情況下是不會(huì)發(fā)生的,但一旦你在特定的領(lǐng)域工作烟很,或者遇到了特定的情況颈墅,這個(gè)直接跳過(guò)思維維度的做法蜡镶,就可能犯下方向性錯(cuò)誤,而踐行了古人“南轅北轍”這個(gè)成語(yǔ)恤筛。
【軟件領(lǐng)域的案例】
下面這個(gè)真實(shí)的案例官还,說(shuō)明了直接跳過(guò)高層的思維維度是多么可怕!
在軟件研發(fā)領(lǐng)域中毒坛,用戶發(fā)現(xiàn)了一個(gè)缺陷(叫Defect或Bug)望伦,程序員就需要修復(fù)這個(gè)缺陷。在修復(fù)的過(guò)程中煎殷,程序員找到了導(dǎo)致缺陷發(fā)生的那段代碼屯伞,發(fā)現(xiàn)有兩個(gè)條件判斷都有可能導(dǎo)致這個(gè)缺陷發(fā)生,經(jīng)過(guò)分析之后蝌数,確認(rèn)修改其中一個(gè)條件判斷就可以了愕掏,于是一切看起來(lái)很成功。
但這個(gè)缺陷發(fā)生的根源不在代碼那一層顶伞,而在于代碼之上數(shù)學(xué)模型饵撑!這個(gè)數(shù)學(xué)模型是驅(qū)動(dòng)代碼邏輯的,所以代碼是無(wú)辜的唆貌。具體情況是這樣的:這段程序代碼是處理一個(gè)數(shù)學(xué)模型的滑潘,而這個(gè)數(shù)學(xué)模型會(huì)在合適的條件下,將某個(gè)SQL語(yǔ)句轉(zhuǎn)化為一種簡(jiǎn)化的SQL語(yǔ)句锨咙。問題就出在“合適的條件”那里语卤!
代碼忠實(shí)地執(zhí)行了那個(gè)數(shù)學(xué)模型,但那個(gè)數(shù)學(xué)模型本身卻是錯(cuò)的酪刀!所以再怎么修改代碼層的東西粹舵,都不會(huì)起作用,相反骂倘,可能會(huì)引起副作用眼滤。
最終程序員通過(guò)修復(fù)數(shù)學(xué)模型本身的錯(cuò)誤,而修復(fù)了這個(gè)缺陷历涝。這個(gè)修復(fù)方案诅需,和之前的代碼層錯(cuò)誤修復(fù)方案,差別只在于一行代碼荧库,但這個(gè)方案在解決問題的同時(shí)避免了更大錯(cuò)誤的發(fā)生堰塌。
【結(jié)束語(yǔ)】
其實(shí),工作中還有很多更直觀的例子分衫,也屬于本文描述的思維維度問題场刑。例如,你的上級(jí)領(lǐng)導(dǎo)關(guān)注的是項(xiàng)目的時(shí)間蚪战,而你卻只是想把手頭的工作做到完美摇邦,想在崇尚速度的公司里踐行“工匠精神”恤煞。結(jié)果很顯然是:你越努力,越得不到重用施籍,因?yàn)槟愕乃季S維度和公司的思維維度是不同的居扒。
最后再說(shuō)說(shuō)我們能做點(diǎn)什么吧。確實(shí)丑慎,想在任何事情上都有思維維度的思考喜喂,是有相當(dāng)難度的,因?yàn)槲覀儫o(wú)法確定:我們的領(lǐng)域或當(dāng)下情況是否應(yīng)該做思維維度的思考竿裂。我的建議是:一方面玉吁,我們進(jìn)入一個(gè)新的工作領(lǐng)域時(shí),應(yīng)該有意識(shí)地思考一下腻异;另一方面进副,我們也可以在錯(cuò)誤發(fā)生之后,進(jìn)行反思悔常。
----------結(jié)束----------
作于2017-3-12影斑。