算法歷史中的“第一次”

算法一直是程序員們“難啃的骨頭”。但早在計算機被髮明以前,人們對於算法就已經研究了很長的時間。


算法歷史上的每一個“第一次”,都爲計算機的發展帶來了重大影響。那算法爲什麼是計算機程序的靈魂?其實可以從它的發展史中略窺一二。


異步君將帶領大家從算法的每個“第一次”開始,瞭解“好”算法的性質,還會送給大家一些算法的基礎學習方法!


  

算法的每一個“第一次”


算法概念的第一次被提出


自古老的公元前1世紀開始,《周髀算經》就作爲中國最古老的天文學和數學著作,在算法的歷史上寫下了濃墨重彩的一筆。


作爲算經的十書之一,《周髀算經》採用最簡便可行的方法確定天文曆法,揭示日月星辰的運行規律,囊括四季更替,氣候變化,包涵南北有極,晝夜相推的道理。爲後來者的生活作息提供了有力保障。


經過幾個世紀的發展,到公元9世紀,波斯數學家al-Khwarizmi第一次在數學上提出了“算法”這個概念——演算法(algorithm)。他提出的算法概念,仍舊沿用至今:


1.算術運算


指按照規定的法則和順序對式題或算式進行運算,並求出結果的過程。包括:加法、減法、乘法、除法、乘方、開方等幾種運算形式。


運算和計算略有區別,計算是指把橫式中的數按運算符號和規定的順序求得結果,可以按運算法則,也可以按口算或其他簡便的方式直接求得結果。而運算則是指求得結果的過程。


2.關係運算


關係的基本運算有兩類:一類是傳統的集合運算(並、差、交等),另一類是專門的關係運算(選擇、投影、連接、除法、外連接等),有些查詢需要幾個基本運算的組合,要經過若干步驟才能完成。


3.邏輯運算


邏輯運算又稱布爾運算。布爾用數學方法研究邏輯問題,成功地建立了邏輯演算。他用等式表示判斷,把推理看作等式的變換。這種變換的有效性不依賴人們對符號的解釋,只依賴於符號的組合規律 。這一邏輯理論人們常稱它爲布爾代數。


歷史上第一個算法


公元前330年,被人們稱爲“幾何之父”的歐幾里得出生了。在歐幾里得生活的那個時期,幾何學存在一個很大的缺點和不足,就是缺乏系統性。


這一時期的古希臘幾何學,大多數是片斷、零碎的知識,公理與公理之間、證明與證明之間並沒有什麼很強的聯繫性,更不要說對公式和定理進行嚴格的邏輯論證和說明。


於是歐幾里得下定決心,要在有生之年完成對幾何學的系統化理論化。由此,經過無數個日夜的撰寫,人類史上第一個算法——歐幾里得算法誕生了


對現在的計算機行業來說,歐幾里得算法是目前最經典的幾大算法之一。


歷史上的第一個算法程序


19世紀80年代,“軟件之母”Ada Byron爲巴貝奇分析機編寫了求解伯努利方程的程序。這是人類史上的第一個算法程序。 


巴貝奇分析機


Ada關於算法的研究實現了計算機科學的本質性飛躍。在她去世一百年之後的1953年,她之前所翻譯《分析機概論》留下的筆記被重新公佈,再一次震驚了世人。人們因此認爲,Ada對現代計算機與軟件工程造成了重大影響。


從現在的觀點來看,Ada首先爲了計算製作了“算法”,然後製作了“程序設計流程圖”,這個珍貴的計劃被認爲是“第一件計算機程序”


“軟件之母”Ada Byron


作爲世界上的第一位程序員,Ada爲編程的發展做出了極大的貢獻。


第一次解決算法定義的難題


進入20世紀,算法得到了進一步的巨大發展。這個世紀,英國數學家圖靈提出了著名的圖靈論題,並提出一種假想的計算機的抽象模型,這個模型被稱爲圖靈機。


圖靈機的構造


所謂的圖靈機就是指一個抽象的機器,它有一條無限長的紙帶,紙帶分成了一個一個的小方格,每個方格有不同的顏色,有一個機器頭在紙帶上移來移去。


機器頭有一組內部狀態,還有一些固定的程序。每個時刻,機器頭都要從紙帶上讀入一個方格信息,然後結合內部狀態查找程序表,再根據程序輸出信息到紙帶方格上,並轉換自己的內部狀態進行移動。


雖然圖靈機十分地簡單,但它可以用來模擬任何算法。圖靈機對人們使用紙筆進行數學計算的過程進行了抽象,實現了用機器代替人類進行數學計算。圖靈機的出現,解決了算法定義的難題。


算法是計算機程序的靈魂,掌握了算法,就可以離開發出優秀的程序更近一步。


「Have Fun ~ Tester !」

「FunTester」,一羣有趣的靈魂,騰訊雲&Boss認證作者,GDevOps官方合作媒體。


「點擊閱讀閱文,查看FunTester歷史原創集合」


本文分享自微信公衆號 - FunTester(NuclearTester)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章