計算的發展:從算盤到電子計算機

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

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

從10以內加減法到10以上的加減法,大數計算從幾分鐘完成到幾秒內完成,這一切的變化經歷了哪些發展,說明了哪些道理?我們一起來看看吧。

一、計算的回顧

10以內的加減法運算

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

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

整個運算的過程分成四部分:

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

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

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

4. 對最終全部伸開的手指狀態進行數數。得出最終的結果

整個計算過程經歷4個狀態變化:

整個計算過程,有輸入數據2和3,有計算方法+,有輸出結果5。

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

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

10以上的加減法運算

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

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

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

顯然此時我們使用了三種規格容器,10的容器,100的容器,1000的容器。在各個容器內計算的時候,我們使用的計算還是可以簡化成10以內的數據計算。

豎式的方式擴大了我們可使用的容器規模和數量,可使用的容器本身極大的拓展了我們的計算能力。

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

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

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

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

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

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

2. 使用越多的容器,容器之間的關聯關系越多。雖然基本的規則是簡單的,但是當容器的數量多到一定程度或者重復到一定程度的時候,我們的認知就會迷路了。重復的東西會讓我們無法回到出發點。

相信大家有過以下經歷:

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

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

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

解決思路有哪些?

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

兩個思路:

1. 訓練大腦

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

2. 發明設備

訓練大腦,當然是可行的方式,很多數學天才都通過這種方式,取得了了不起的成就。除此之外的另一條道路就是發明設備。

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

計算如何被模擬的?

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

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

約翰·馮·諾依曼繼續發展的基礎上提出的現代計算機的模型使計算機又前進了一大步,計算機的被抽象為5大模塊:控制器、運算器、存儲器、輸入設備、輸出設備。

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

2. 用合適的設備模擬計算

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

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

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

3. 計算機語言的模擬

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

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

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

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

我們設想一個場景:

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

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

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

當然有些從事軟件開發的人可能并未意識到自己使用各種設計模式,大家使用的Spring、Hibernate、Struct等各種軟件架構就是在各種設計模式的指導下設計的。

正常的軟件系統開發時,使用的框架圖、類圖、流程圖等就是軟件開發時的施工藍圖,只有設計足夠精良的施工藍圖才能帶來更健壯、更容易升級和復用的軟件系統。

三、一些認知副產品

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

互聯網領域有一個特別令人恐懼和厭煩的角色 — 電腦黑客,指的是不經過權限人同意用惡意的手段繞過別人的權限系統,非法的獲取別人的信息,從而獲取利益。

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

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

真誠才能行之更遠。

本文由 @我是產品張 原創發布于人人都是產品經理。未經許可,禁止轉載

題圖來自Unsplash,基于CC0協議

該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發揮!