計算的發(fā)展:從算盤到電子計算機(jī)

0 評論 1648 瀏覽 0 收藏 14 分鐘

這篇文章,我們來復(fù)盤一下計算的發(fā)展歷史,從開始的扳手指到現(xiàn)在的電腦,以及整個過程的原因和解決方案。

從10以內(nèi)加減法到10以上的加減法,大數(shù)計算從幾分鐘完成到幾秒內(nèi)完成,這一切的變化經(jīng)歷了哪些發(fā)展,說明了哪些道理?我們一起來看看吧。

一、計算的回顧

10以內(nèi)的加減法運(yùn)算

嬰兒識數(shù)使用的最早的計算器是什么?

顯然是手指,1+1=2,2+2=4,5+5=10,10以內(nèi)的加減法是最容易學(xué)習(xí)的,10以內(nèi)的計算其實就是在數(shù)手指。2+3=5就是伸出2個手指 再接著伸出3個手指,然后按照順序從開始數(shù)到5,我們才知道2+3等于5。

整個運(yùn)算的過程分成四部分:

1. 將左手5個手指全部拳起來,是為初始狀態(tài)

2. 從小手指開始依次伸出兩個手指,是為被加數(shù)

3. 從中指開始再伸出三個手指,是為加數(shù)

4. 對最終全部伸開的手指狀態(tài)進(jìn)行數(shù)數(shù)。得出最終的結(jié)果

整個計算過程經(jīng)歷4個狀態(tài)變化:

整個計算過程,有輸入數(shù)據(jù)2和3,有計算方法+,有輸出結(jié)果5。

2+3=5之所以能用手指表示出來因為我們的5個手指充當(dāng)了容器。10以內(nèi)的計算實際就是將2和3分別放到容器里,然后再讀出容器的刻度。如果沒有容器,或者容器不足以承載2和3,那么自然就不可能讀出5。

10以內(nèi)的加減法,我們都可以非常容易的計算出來,因為我們天然帶著這個容器,哪怕20以內(nèi)的加減法,小朋友們也會聰明的用十個手指加十個腳趾完成,再多用我們身體自帶的計算容器顯然就不夠用了。

10以上的加減法運(yùn)算

10以上的加減法是怎么算的呢?

此時我們開始使用列豎式的方式,234+789=?

我們的算法是234與789個位與個位對齊,十位與十位對齊,我們從低到高依次計算,4+9=13=10+3,個位留3,十位進(jìn)1,依次計算我們可以得到1023。

顯然此時我們使用了三種規(guī)格容器,10的容器,100的容器,1000的容器。在各個容器內(nèi)計算的時候,我們使用的計算還是可以簡化成10以內(nèi)的數(shù)據(jù)計算。

豎式的方式擴(kuò)大了我們可使用的容器規(guī)模和數(shù)量,可使用的容器本身極大的拓展了我們的計算能力。

我們中國古人發(fā)明了算盤,從算珠的排列方式上,可知算盤是很強(qiáng)大的計算容器和計算工具。

無論是列算式還是用算盤,能計算對的前提都是,使用算式或算盤的人需要按照計算的規(guī)則,完成算式的運(yùn)算。這個過程非常依賴人的注意力,如果注意力不夠集中,很容易算錯,從而得到錯誤結(jié)果。

二、計算難度的原因分析和解決方案

10以上的加減法為什么這么難?

古人為什么要發(fā)明算式或者算盤哪?肯定是因為我們用人腦算這些東西比較吃力,為什么會吃力哪?

1. 越復(fù)雜的計算需要越多的容器,比如10以內(nèi),十個手指可以勝任,100以內(nèi)就沒有手指可以勝任了。紙張和算盤可以承載足夠多復(fù)雜的容器。

2. 使用越多的容器,容器之間的關(guān)聯(lián)關(guān)系越多。雖然基本的規(guī)則是簡單的,但是當(dāng)容器的數(shù)量多到一定程度或者重復(fù)到一定程度的時候,我們的認(rèn)知就會迷路了。重復(fù)的東西會讓我們無法回到出發(fā)點(diǎn)。

相信大家有過以下經(jīng)歷:

1. 看別人的文章和視頻,看了一遍覺得懂了,自己動手就不會了。所謂的眼睛懂了但是手還是不會,這本質(zhì)上是因為對這個事情還沒有真正掌握,還需要強(qiáng)化訓(xùn)練。眼睛懂了是因為,分解后的每個動作確實是容易的,當(dāng)嘗試整體落地的時候就需要腦袋里有一個足夠大的容器,能夠把這些很多簡單分解動作組合起來。中間有任何一個步驟錯誤,都會導(dǎo)致無法達(dá)到最終的目標(biāo)。

2. 為什么我們大部分人是很難欣賞純音樂,一首純音樂,前后的呼應(yīng)或音符的敘事中間有很多其他的音符。未經(jīng)訓(xùn)練的大腦,并不是一個合格的純音樂容器,無法容納足夠多的音符變化。聽懂的人是因為聽到的內(nèi)容和前文的一些音符形成了呼應(yīng),而大部分的人已經(jīng)忘記前文是什么了。

學(xué)過計算機(jī)的同學(xué),可能已經(jīng)意識到,前文一直提到的容器,在計算機(jī)語言里就是堆棧,是各種數(shù)據(jù)結(jié)構(gòu)。我們不僅要能將步驟、音符等信息裝到容器里,還需要做到隨時可以取出來。如果不能隨時取出來,這些堆棧里的信息就是死的信息了。

解決思路有哪些?

如何提高堆棧處理能力哪?

兩個思路:

1. 訓(xùn)練大腦

  • 要提高數(shù)學(xué)的心算能力,可以通過學(xué)習(xí)各種心算技巧,并大量的練習(xí)。很多少兒心算培訓(xùn)班走的就是這條路。
  • 要提高音樂的欣賞能力,可以學(xué)習(xí)演奏樂器、大量的欣賞音樂。
  • 要提高閱讀的學(xué)習(xí)能力,可以通過大量的閱讀強(qiáng)化。

2. 發(fā)明設(shè)備

訓(xùn)練大腦,當(dāng)然是可行的方式,很多數(shù)學(xué)天才都通過這種方式,取得了了不起的成就。除此之外的另一條道路就是發(fā)明設(shè)備。

發(fā)明設(shè)備實際就是實現(xiàn)對人的計算行為的模擬。模擬人的行為顯然是不容易的,好在現(xiàn)代計算機(jī)的廣泛使用早就宣告了這種模擬已經(jīng)成功了。我們可以踏著前人的路徑簡單回顧下,前人是如何模擬的。

計算如何被模擬的?

1. 識別被模擬對象有哪些模塊及相互之間的關(guān)系

計算機(jī)科學(xué)史上最偉大的模型之一,自然是圖靈機(jī),圖靈機(jī)的輸入和輸出都使用的是紙帶,輸入的內(nèi)容通過程序的轉(zhuǎn)換可以轉(zhuǎn)換為紙帶上的輸出。圖靈機(jī)模型被提出不久,就得到很多科學(xué)家的一致認(rèn)可。

約翰·馮·諾依曼繼續(xù)發(fā)展的基礎(chǔ)上提出的現(xiàn)代計算機(jī)的模型使計算機(jī)又前進(jìn)了一大步,計算機(jī)的被抽象為5大模塊:控制器、運(yùn)算器、存儲器、輸入設(shè)備、輸出設(shè)備。

  • 存儲器和控制器的結(jié)合可以實現(xiàn)堆棧的模擬功能,只要有足夠的內(nèi)存,不僅10的容器、100的容器、1000的容器,更大更多的容器也可以被模擬出來。
  • 運(yùn)算器和控制器的結(jié)合可以實現(xiàn)加減乘除的容器操作。
  • 輸入設(shè)備和控制器的結(jié)合可以模擬加數(shù)、被加數(shù)、減數(shù)、被減數(shù)、乘數(shù)、被乘數(shù)等各種輸入。
  • 輸出設(shè)備和控制器的結(jié)合可以模擬各種輸出的結(jié)果,不僅是文字,還包括圖形和圖像。

2. 用合適的設(shè)備模擬計算

對計算的模擬早已有之,人們嘗試了各種有計算潛力的系統(tǒng),包括水力、熱力、機(jī)械力,顯然只有到近代電力科學(xué)的發(fā)展才給人類提供了更容易控制的耗散系統(tǒng)模型。

在電子計算器發(fā)展以前,人們的計算更多的都還集中在對時間的計算。中西方都嘗試過用水、熱、機(jī)械等各種方式驅(qū)動鐘表的運(yùn)轉(zhuǎn),顯然鐘表的運(yùn)轉(zhuǎn)是比較早的計算了。

隨著計算機(jī)的發(fā)展,計算器已經(jīng)從最初占地170平方米發(fā)展到手提式筆記本、手機(jī)、智能穿戴設(shè)備。

3. 計算機(jī)語言的模擬

和計算機(jī)一起發(fā)展的自然是編程語言。在軟件編程領(lǐng)域,大部分的編程都已經(jīng)從面相過程的編程切換到面相對象的編程。

面相對象的編程方式在各種設(shè)計模式的加持下壟斷了大部分的軟件設(shè)計開發(fā)。

面相過程向面相對象切換的本質(zhì)原因是什么哪?

前文我們提到計算能力的差異本質(zhì)是堆棧的深度決定的,堆棧就是容器。

我們設(shè)想一個場景:

某探測隊發(fā)現(xiàn)一個直徑為半米的深洞,派人下去和派機(jī)器下去會有什么區(qū)別。顯然在幽閉的管道環(huán)境里,人可能下去二十米就到極限了,再繼續(xù)下沉人就會迷失了,如果停留的時間過長,人會發(fā)瘋。如果派機(jī)器下去哪?顯然只要電力供應(yīng)跟的上,下面的環(huán)境只要不損壞設(shè)備,機(jī)器下沉幾千米幾萬米都能正常返回。

同樣道理,面相對象編程并不是為了適應(yīng)計算機(jī),恰恰是為了適應(yīng)人。各種設(shè)計模式的加持就是讓人可以不在代碼的汪洋中迷失,設(shè)計模式的工廠模式、代理模式、原型模式、中介者模式、責(zé)任鏈模式等等模式如同地圖上的參照物,沒有這些豐富的參照物僅僅靠看太陽,你不可能知道自己究竟是在北京還是在上海,是在家里還是在單位。

在一定程度上,編寫程序就像在挖地道,而按照設(shè)計模式設(shè)計的架構(gòu)就像地道開挖前,打的各種豎井,瞄著各種豎井挖地道不容易走偏。每挖一段就可以探出頭來透透氣。

當(dāng)然有些從事軟件開發(fā)的人可能并未意識到自己使用各種設(shè)計模式,大家使用的Spring、Hibernate、Struct等各種軟件架構(gòu)就是在各種設(shè)計模式的指導(dǎo)下設(shè)計的。

正常的軟件系統(tǒng)開發(fā)時,使用的框架圖、類圖、流程圖等就是軟件開發(fā)時的施工藍(lán)圖,只有設(shè)計足夠精良的施工藍(lán)圖才能帶來更健壯、更容易升級和復(fù)用的軟件系統(tǒng)。

三、一些認(rèn)知副產(chǎn)品

人們發(fā)明計算機(jī)的重要原因是因為不同人的心理堆棧的深度是不同的,有些人經(jīng)過特殊的訓(xùn)練,心理堆棧更深,可以從事更復(fù)雜的任務(wù)。有些人某些方面的心理堆棧沒有經(jīng)過訓(xùn)練,深度較淺,在理解某些復(fù)雜問題的時候就會吃力。

互聯(lián)網(wǎng)領(lǐng)域有一個特別令人恐懼和厭煩的角色 — 電腦黑客,指的是不經(jīng)過權(quán)限人同意用惡意的手段繞過別人的權(quán)限系統(tǒng),非法的獲取別人的信息,從而獲取利益。

同樣的對人也存在一些這樣的黑客,利用一些手段,讓用戶的心理堆棧溢出,從而打開別人的錢包,非法的獲取別人的錢財。比如各種邪教、詐騙都部分的使用了這個原理。

就像電腦黑客是不被歡迎的,人心黑客也是如此,無論做技術(shù)還是做人,我們還是堅持,真誠才是必殺技的好。

真誠才能行之更遠(yuǎn)。

本文由 @我是產(chǎn)品張 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自Unsplash,基于CC0協(xié)議

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)。

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!