程序員用代碼改變世界,基於計算機硬件的迅猛發展,摩爾定律被漸漸遺忘,科學圈也受到了一系列的影響。近日,科學頂刊 Nature 發佈文章,介紹了上世紀五十年代以來改變科學圈的十大計算機代碼,固然,排名不分前後,僅供參考。python
編譯 | 八寶粥 責編 | 張文程序員
頭圖 | CSDN 下載自視覺中國算法
出品 | CSDN(ID:CSDNnews)數據庫
從 Fortran 到預印本,這些程序上的進步和平臺給生物、氣象和物理學帶來了顯著的提速。編程
若是你帶着你的手機回到幾十年前,就是超神同樣的存在,它的計算能力比起 NASA 在 1969 年登月時候都強的多。然而,手握一個甚至多個手機的咱們,可能極少數人會有本身的衛星和登月計劃吧?(這裏請馬斯克同志不要發言)。瀏覽器
計算機在航空航天、物理學、化學、生物學等多個領域,起到了催化劑和加速器的做用。今天咱們一塊兒來看 Nature 上總結出來爲科學變革加速的十大計算機代碼。編程語言
文章選出瞭如下十大名碼,分別是 Fortran、快速傅立葉變換、生物數據庫、氣候通常循環模型、BLAS、NIH/ImageJ/Fiji、BLAST、arxiv.org、Ipython Notebook 以及 AlexNet。工具
Fortran 誕生的年代,計算機操做還須要藉助打孔卡學習
Fortran,全稱:Formula Translation,誕生於 1957 年。那一年,ENIAC 也才 11 歲,那個帶手機穿越回去就能當成計算之神的年代,編程真的是太太太不友好了。即便機器語言和彙編語言容許用戶利用代碼編程,仍然須要熟悉計算機結構,然而這樣的人確定很少。不過,IBM 的工程師約翰·巴科斯(J. Backus)就給董事長斯伯特·赫德(Cuthbert Hurd)寫信,說每天寫這個太浪費青春了,咱們造一個新的語言吧?董事長也是有魄力,大手一揮就決定了。優化
也不知道真的看到了前景仍是說就是不服,反正當時的顧問馮·諾依曼的強烈反對沒有用就是了。雖然就在 Fortan 誕生這一年諾依曼就去世了,但大神就是大神,即便在當時 Fortran 尚未如後來通常名揚科學圈,諾伊曼依然對 Fortran 表示了認可。
從那時起,計算機再也不只是「計算機科學家的玩具」 ,其餘專業的科學家們就能訪問程序進行編程,也意味着科學計算、數值計算時代的到來,幾十年來,Fortran 在工程等數值計算領域影響巨大,直到如今還有不少流體動力學、航空航天領域依然在使用。編程語言能夠被後浪趕超,卻依然有本身的光芒。許多課題組的「祖傳代碼」就是 Fortran 語音寫成的,NASA 甚至在 2017 年招募 Fortran 大佬幫忙優化代碼。
既然說到 Fortran 就不能不說快速傅立葉變換(Fast Fourier Transform, FFT),那但是大大的有名呀。
1965 年,美國數學家 James Cooley 和 John Tukey 提出了一種加快傅立葉變換過程的方法,使用遞歸方法分而治之,快速計算串行的離散傅里葉變換或其逆變換,傅里葉分析將信號從原始域轉換到頻域的表示或者逆過來轉換。從離散傅立葉變換到快速傅立葉變換,複雜度從 O[N2]優化到了O[NlogN]。若是你是電氣或者自動化方向的,數字信號處理確定是你一輩子難忘的課程。
這一重大發現,在數字信號處理、圖像分析、結構生物學等領域均有頻繁而普遍的應用。美國數學家吉爾伯特·斯特朗把 FFT 描述爲「咱們一輩子中最重要的數值算法」,IEEE 科學與工程計算期刊也將其列入 20 世紀十大算法。
不過,英國牛津大學數學家尼克·特雷菲森(Nick Trefethen)表示,這個方法其實德國天才數學家高斯在 1805 年就完成了,只是沒有發表而已。目前該方法的潮流是"西方最快的傅立葉變換"( Fastest Fourier Transform in the West,FFTW),是快速傅立葉變換的最快的免費軟件實現。
讀到這篇文章的你,想必對數據庫會有必定的瞭解,在過去的幾十年當中,數據庫在生物學上的影響也是很是巨大而富有戲劇性的。
1965 年,三位做者合著《蛋白質序列和結構圖譜》,描述了當時 65 種蛋白質的序列、結構和類似程度。令人們對於氨基酸序列有了更深入的瞭解。1971 年啓動了蛋白質數據庫,現在該數據庫已經能描述 170000 多個分子結構。
隨着科技的進步和時間的推移,也涌現出了更新、更全面的生物學數據庫。美國國家生物技術信息中心(NCBI)前主任詹姆斯·奧斯特爾(James Ostell)表示:「這簡直就是不太瞭解計算機和統計學的生物學家的明燈,經過對比序列咱們就能瞭解到關於癌症的知識。」經過對數據集的整合,研究人員們還能發現更多的信息。
二戰時期,天氣對於交戰雙方而言是沒法改變的事情,率先了解天氣就能夠佔盡天時,在那個經驗爲主預測天氣的狀況下,諾伊曼創造性地採用「根據物理學定律進行"數值天氣預報"。不過在早期,這些實際問題沒法準確解決,算力和算法均沒法達到。
1940 年底,馮·諾伊曼在普林斯頓創建了天氣預報小組,15 年後,第二個團隊,也就是地球物理流體動力學實驗室,開始研究「無限預測」,也就是氣候建模。1958 年,Manabe 加入團隊,他的同事 Kirk Bryan 也將這些用於海洋。1969 年,他們成功地結合了兩者,創造了天然界計算的里程碑。
現在,該模型已經能夠將地球分紅 25×25 千米的正方形,將大氣也劃分紅十個層次,這比起當年來已經強了不少。
時間到了上世紀 70 年代,雖然矩陣和向量的計算在科學計算當中很常見了,可是尚未一套廣泛承認的操做工具,因而,研究者們就開始思考如何使用代碼來解決問題。他們須要一個標準!
而後就有了 BLAS (Basic Linear Algebra Subprograms)基本線性代數子程序。這是一個設計基本現行代數操做的數學標準,主要分三級,一級是向量之間或者向量與標量、常數間的運算;第二級是矩陣與向量間的操做,而第三級就是矩陣之間操做。
德克薩斯大學奧斯汀分校的計算機科學家 Robert van de Geijn 說,BLAS 「多是爲科學計算定義的最重要的接口」。
進入 80 年代,腦成像技術發展到了關鍵時期,因爲 X 射線膠片數字化以後沒法在計算機上顯示或者分析,程序員 拉斯班德(Rasband)編寫了一個程序來解決問題,當時的計算機仍是 PDP-11,價值 15 萬美圓。蘋果電腦出現後,對於醫學成像的顯示更加友好。
這裏的 NIH 不是別的,而是美國國立衛生研究院( National Institutes of Health (NIH),也就是說這是有國家衛生研究院監督的。後來拉斯班德又編寫了 Java 版本的 ImageJ。在插件的幫助下,ImageJ 工具能夠自動識別顯微鏡圖像中的細胞核。拉斯班德退休以後,它的團隊依然保持對於該產品的維護。
上面咱們提到了 BLAS,這裏咱們要說的是 BLAST,一字之差,意義大不一樣。來自美國國家生物技術信息公司,全稱 Basic Local Alignment Search Tool 。文章做者廣告詞都想好了「要搜索,找 Google,用遺傳,BLAST"。經過研究蛋白質之間的類似性,科學家們就能夠發現進化關係並剖析基因功能,於是分子信息庫就相當重要了。
經歷了」點對點突變「矩陣、FASTP、等等團隊開發了 」GeneMyers「並在多年以後提出了更強大的改進。1990 年 BLAST 正式公佈。搜一下,xiu 的一下!這種系統給當時處於萌芽狀態的基因組生物學提供了一種很是高效快捷的方法。
至關長一段時間裏面,科學家們相互交流的方式就是郵寄手稿,算是早期的「同行評議」,不過這種方式很容易使得一些並不有名氣的人被埋沒,即便天才如拉瑪努金,最初寄給幾位科學家的研究成果也被無視,直到哈代和利特爾伍德慧眼識珠。1991 年,在洛斯阿拉莫斯國家實驗室的金斯伯格(Ginsparg)編寫了電子郵件自動回覆程序,使得訂閱用戶可以天天收到預印本的清單,這個能夠說是論文界的 RSS 了。
最初金斯伯格的計劃是保留三個月,並限制在高能物理領域,隨着他研究學科愈來愈廣,這個系統也在 1993 年被放在了萬維網上,1998 年,正式得名 arXiv.org 。現在,距離最初那個郵件訂閱已經三十個年頭,arXiv 已經有 180 萬份預印本,每個月有一萬五千多投稿和三千萬次下載。同時,因爲其良好的口碑,受到基礎學科和計算機科學領域研究者們的熱愛,甚至《MIT 科技評論》都有一個周更的欄目——最好的 arXiv 物理文章(The Best of the Physics arXiv)
金斯伯格表示,使人欣慰的是,三十年前被視爲異端的食物,現在被普遍地接受,從這個角度來說,也算是一個成功的研究項目。
Jupyter notebook 對於初學 Python 的朋友簡直是一個無比友好的存在, 它能顯示 Markdown,也能顯示並執行代碼,比傳統的交互式和全腳本執行更加清晰和簡便,而它的前身就是來自費爾南多·佩雷斯(FernandoPérez)發明的 IPython Notebook。
2001 年的佩雷斯還在讀研仍是讀博,做爲 Mathematica 和 MAPLE 的重度用戶,他決定給 Python 一個更好的展示交互的平臺。因爲 Python 並非爲科學計算建立的語言,用戶在預加載模塊和保持數據可視化狀態上存在不少障礙,所以他就本身寫就了 IPython,2001 年 12 月,這個「交互式」 的 Python 解釋器單程了,總共 259 行。
十年以後,他和物理學家布萊恩·格蘭傑(Brian Granger)和數學家埃文·帕特森(Evan Patterson)合做,將該工具遷移到Web瀏覽器。今後,Python 也有了本身的筆記本,2014 年,它演變成了一個項目 Project Jupyter, 支持 100 多種語言,用戶就能夠在本身的筆記本上遠程訪問超算的算力和數據了。
2018 年,《天然》文章報道,Jupyter 已經成爲了數據科學家的標準,GitHub 上的 Jupyter notebook 也已經超過千萬,包括記錄引力波和黑洞成像的那些。
人工智能有兩種,一種使用編碼規則,一種使用計算機經過模擬大腦的結構來學習。幾十年來人們一直忽視後者。直到 2012 年,欣頓(Hinton)的研究生亞歷克斯(Alex Krizhevsky)和伊利亞(Ilya Sutskever)在 ImageNet 的比賽中發揮出色,在包含百萬個平常對象的圖像中訓練出的 AlexNet 能將錯誤率下降到 16% ,這是一般人工智能算法的一半。
他們的成功也點燃了包括數據集、硬件設備和 GPU 等的飛躍,忽然之間,人們發現能夠將算法的運行速度提高几十倍。這些生理預示着深度學習在實驗室、診所等領域的興起。現在手機也能理解語音查詢、圖像分析工具也能幫助細胞篩選。AlexNet 引領了人工智能界許多工具的質變。
文章最後,還特地作了一個調查,選出對你影響最深的 3 項工做。
截至目前爲止,Fortran 編譯器以 42.8 比 35.5 的比重領先第二名 FFT,選擇「其餘」選項的也佔有較大比例。結果見下圖:
顯然,在衆多讀者的眼中,Fortran 和 FFT 的地位舉足輕重,這些重要的代碼,改變了科學界,也改變了世界。你是否也有一個用代碼改變世界的夢想呢?歡迎下方留言評論,對你影響最大的代碼是哪些?你最得意的事情是用代碼作了什麼?
參考資料: