Ⅰ 編程都有哪些語言
編程的語言非常之多,這里就介紹一些流行、常見的語言。
目前最主要的便是這五種語言:
1.Python:
Python是一門易讀、易維護,並且被大量用戶所歡迎的、用途廣泛的語言。由於具有豐富和強大的庫,又被稱為膠水語言,Python 極其容易上手,主要源於Python有極其簡單的說明文檔。Python 的應用領域分為系統編程,用戶圖形介面,Internet 腳本,組件集成,資料庫編程,快速原型,數值計算和科學計算編程,游戲、圖像、人工智慧、XML 、機器人編程等等。
2.java
Java擁有跨平台、面向對象、泛型編程的特性,非常受企業的喜歡,廣泛應用於企業級Web應用開發和移動應用開發。Java發展到現在,按應用來分主要分為三大塊:J2SE、J2ME、J2EE。三塊應用范圍不同,但卻相互補充。廣泛應用於PC、數據中心、游戲控制台、科學超級計算機、行動電話和互聯網,同時擁有全球最大的開發者專業社群。
3.C語言/C++:
C語言是一種通用的命令式編程語言,它起源於19世紀70年代,是大學裡面計算機專業學的第一門編程語言,使用相當廣泛,並且深遠地影響了其後的幾乎每一種語言。C++最初是作為C語言的增強版出現,C++是一種靜態數據類型檢查的、支持多重編程範式的通用程序設計 語言。C++被用在一些知名軟體中,比如Firefox、 Winamp以及Adobe programs。目前而言,C語言主要用來開發底層模塊(比如驅動、解碼器、演算法實現),服務應用(比如web伺服器)和嵌入式應用(比如微波爐里的程序)。C++也可以做這些,不過由於C++的復雜性和標准問題,人們還是更願意使用C來做。
4.JavaScript:
JavaScript是一種基於對象和事件驅動並具有相對安全性的客戶端腳本語言。聽起來好像和java有些關系,然而卻不是的,只不過名字像而已。同時JavaScrip也是一種廣泛用於客戶端Web開發的腳本語言,常用來給HTML網頁添加動態功能,比如響應用戶的各種操作。JavaScript也可以用在游戲開發等方面。
5.PHP:
PHP(Hypertext Processor) 是一種免費的強大的伺服器端腳本語言,主要目標是允許網路開發人員快速編寫動態頁面,同時也被廣泛應用於其他領域。如 Web 開發並可嵌入 HTML 中去,受到web開發者的歡迎。包括Wordpress、Digg以及Facebook在內均使用了該語言。PHP的語法利用了C、Java 和Perl,易於學習。目前PHP的應用范圍已經相當廣泛,尤其是在網頁程式的開發上。
不同的語言有不同的優缺點,也有不同的應用范圍,可以根據自己的需要選擇一門合適的語言開始學習。
Ⅱ C語言中的MPI編程和多線程有什麼區別,MPI編程中針對的是一台電腦多核還是多台電腦謝謝!
MPI(MPI是一個標准,有不同的具體實現,比如MPICH等)是多主機聯網協作進行並行計算的工具,當然也可以用於單主機上多核/多CPU的並行計算,不過效率低。它能協調多台主機間的並行計算,因此並行規模上的可伸縮性很強,能在從個人電腦到世界TOP10的超級計算機上使用。缺點是使用進程間通信的方式協調並行計算,這導致並行效率較低、內存開銷大、不直觀、編程麻煩。OpenMP是針對單主機上多核/多CPU並行計算而設計的工具,換句話說,OpenMP更適合單台計算機共享內存結構上的並行計算。由於使用線程間共享內存的方式協調並行計算,它在多核/多CPU結構上的效率很高、內存開銷小、編程語句簡潔直觀,因此編程容易、編譯器實現也容易(現在最新版的C、C++、Fortran編譯器基本上都內置OpenMP支持)。不過OpenMP最大的缺點是只能在單台主機上工作,不能用於多台主機間的並行計算!如果要多主機聯網使用OpenMP(比如在超級計算機上),那必須有額外的工具幫助,比如MPI+OpenMP混合編程。或者是將多主機虛擬成一個共享內存環境(Intel有這樣的平台),但這么做效率還不如混合編程,唯一的好處是編程人員可以不必額外學習MPI編程。
Ⅲ 各大互聯網公司的後端用啥編程語言
c,c++,python,java等等。
C語言是一門面向過程的、抽象化的通用程序設計語言,廣泛應用於底層開發。C語言能以簡易的方式編譯、處理低級存儲器。
C語言是僅產生少量的機器語言以及不需要任何運行環境支持便能運行的高效率程序設計語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著跨平台的特性,以一個標准規格寫出的C語言程序可在包括類似嵌入式處理器以及超級計算機等作業平台的許多計算機平台上進行編譯。
C++是C語言的繼承,它既可以進行C語言的過程化程序設計,又可以進行以抽象數據類型為特點的基於對象的程序設計,還可以進行以繼承和多態為特點的面向對象的程序設計。
C++擅長面向對象程序設計的同時,還可以進行基於過程的程序設計,因而C++就適應的問題規模而論,大小由之。
Python由荷蘭數學和計算機科學研究學會的Guido van Rossum於1990 年代初設計,作為一門叫做ABC語言的替代品。
Python提供了高效的高級數據結構,還能簡單有效地面向對象編程。Python語法和動態類型,以及解釋型語言的本質,使它成為多數平台上寫腳本和快速開發應用的編程語言。
Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。
Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程。
Ⅳ 超級計算機可運用於什麼領域
1991年6月,美國研製成CM-200超級電子計算機其運算速度為每秒90億次以上,可供100多個用戶同時使用。每台售價1000萬美元,可應用於全球天氣預報、石油勘探和汽車設計等領域。
1991年11月,美國克雷公司宣布研製出世界上功能更強的並行矢量(VECTOR)式計算機系統克雷Y-mpc90。這種超級計算機有16個中央處理單元,運算速度峰值為16京浮點(即每秒運算160億次),每台售價3000萬美元。並行矢量式計算機是按指令順序運行的,其處理問題的能力和速度可以與含有成千上萬個微處理器的並行計算機相媲美。
隨後,德國Parsytec公司又研製出每秒進行4000億次浮點運算的超級計算機。這種計算機使用16384Transputer處理器晶元,這種處理器晶元具有通信和存儲能力,並用一種新方法把這些處理器連接起來,使運算能力得到突破。
Ⅳ 超級計算機用什麼操作系統
據統計,在全球頂尖的500台超級計算機中,有約60%安裝了Linux操作系統,相對於其他類型的操作系統,Linux系統在高性能計算應用中占據了絕對優勢。
從開始時作為一個大學生的私房愛好,Linux系統的發展已經歷了較長時間。近幾年中,經過IBM、惠普、Novell和Red Hat的專業計算機編程者對其不斷改進,Linux現在已成為了技術強大的代名詞-Linux操作系統在全球超級計算機上的應用遠較其他系統普遍。有機構稱,在全球頂尖的500台超級計算機中,估計有約60%安裝了Linux操作系統,取代了此前這些機器上安裝的曾廣泛用於高性能計算的Unix操作系統。
Linux目前已成為高性能計算的首選操作系統。據德國曼海姆大學計算機教授漢斯-魏納-穆爾(Hans Werner Meuer)統計,在全球頂尖的500台超級計算機中,有301台上使用了Linux操作系統,相比之下,只有189台使用了Unix操作系統,2台使用了Unix的改進型FreeBSD操作系統,1台使用了微軟的操作系統,另有7台上使用的操作系統不詳。
美國勞倫斯利弗莫爾國家實驗室先進技術部門助理副主管馬克-西格(Mark Seager)表示,「Linux系統已經主宰了高性能計算的市場。」該實驗室有5台超級計算機位列全球頂尖500台超級計算機之中,其中包括世界上性能最強大的超級計算機「藍色基因/L」和排名第5的「雷鳴」。這兩台計算機與該實驗室的其他超級計算機一樣,都安裝了Linux操作系統。此前這些機器上安裝的是IBM版本的Unix操作系統--AIX操作系統。
西格認為,該實驗室選擇Linux系統的部分原因是它是「開放源代碼」的,這意味著使用者可以配合自身的需求,對代碼進行修改。另外,使用
Linux系統也無需付出授權費用。此外,西格表示,Linux系統超出Unix操作系統(如IBM的AIX操作系統和Sun微系統的Solaris操作系統)的原因是,這些系統包含了很多針對商業應用的特點,但是這些也相應限制了系統的性能。西格舉例解釋說,AIX操作系統所擁有的「虛擬功能」,允許許多軟體共享同一處理器,但是這「正好降低了性能」。
Linux系統的創始人李納斯.托瓦茲(Linus Torvalds)認為,Linux系統受歡迎是因為其可以在使用包括英特爾微處理器和IBM及惠普的RISC處理器在內的20多種硬體架構上運行,而與此同時,Unix操作系統僅能在一至兩種硬體架構上運行。托瓦茲表示,「當然,這20多種架構中僅有少數與高性能計算有關。但這仍是個巨大的優勢。Linux容易獲取,沒有授權費用,具備一切相應的基礎結構,並且在任意硬體上都運行順暢。」
當然也有少量的使用windows的超級操作系統的。還有UNiX
Ⅵ 和C++相比用Fortran編程是怎樣的體驗
從編程的角度來看,使用FORTRAN 77的體驗絕對不好,如果要用一個字形容,那就是「臟「。相比C++,FORTRAN顯得非常木訥和笨拙,語言特性也很原始。但這樣的特性也有它的內在邏輯。FORTRAN編程的邏輯是絕對的計算效率至上。用FORTRAN寫的程序往往是運行在超級計算機上的科學計算項目,由於運算規模很大,它們對性能有著近乎偏執的極端追求。計算效率和程序的可讀性往往無法兼容。極端的效率至上要求我們在循環中盡量用明確的代碼代替條件語句,以減少跳轉導致的CPU流水線的「氣泡」(pipeline bubble);盡可能不調用函數,而是把計算程序全部寫在一起,以減小調用函數導致的效率損失;不用OOP,特別要避免頻繁創建、銷毀和傳遞對象,這些操作可以讓一個原本10分鍾就能完成的計算拖滿一整天。
Ⅶ 《自然》評選改變科學的10個計算機代碼項目
從Fortran到arXiv.org,這些計算機編碼和平台讓生物學、氣候科學和物理學等學科的發展達到了真正「日新月異」的速度。
2019年,事件視界望遠鏡團隊讓世界首次看到了黑洞的樣子。不過,研究人員公布的這張發光環形物體的圖像並不是傳統的圖片,而是經過計算獲得的。利用位於美國、墨西哥、智利、西班牙和南極地區的射電望遠鏡所得到的數據,研究人員進行了數學轉換,最終合成了這張標志性的圖片。研究團隊還發布了實現這一壯舉所用的編程代碼,並撰文記錄這一發現,其他研究者也可以在此基礎上進一步加以分析。
這種模式正變得越來越普遍。從天文學到動物學,在現代每一項重大科學發現的背後,都有計算機的參與。美國斯坦福大學的計算生物學家邁克爾·萊維特因「為復雜化學系統創造了多尺度模型」與另兩位研究者分享了2013年諾貝爾化學獎,他指出,今天的筆記本電腦內存和時鍾速度是他在1967年開始獲獎工作時實驗室製造的計算機的1萬倍。「我們今天確實擁有相當可觀的計算能力,」他說,「問題在於,我們仍然需要思考。」
如果沒有能夠解決研究問題的軟體,以及知道如何編寫並使用軟體的研究人員,一台計算機無論再強大,也是毫無用處的。如今的科學研究從根本上已經與計算機軟體聯系在一起,後者已經滲透到研究工作的各個方面。近日,《自然》(Nature)雜志將目光投向了幕後,著眼於過去幾十年來改變科學研究的關鍵計算機代碼,並列出了其中10個關鍵的計算機項目。
這台CDC 3600型計算機於1963年交付給位於科羅拉多州博爾德的國家大氣研究中心,研究者在Fortran編譯器的幫助對其進行了編程
語言先驅:Fortran編譯器(1957年)
最初的現代計算機並不容易操作。當時的編程實際上是手工將電線連接成一排排電路來實現的。後來出現了機器語言和匯編語言,允許用戶用代碼為計算機編程,但這兩種語言都需要對計算機的架構有深入的了解,使得許多科學家難以掌握。
20世紀50年代,隨著符號語言的發展,特別是由約翰·巴克斯及其團隊在加州聖何塞的IBM開發的「公式翻譯」語言Fortran,這種情況發生了變化。利用Fortran,用戶可以用人類可讀的指令來編程,例如x = 3 + 5。然後由編譯器將這些指令轉換成快速、高效的機器代碼。
不過,這一過程仍然很不容易。早期的程序員使用打孔卡來輸入代碼,而復雜的模擬可能需要數萬張打孔卡。盡管如此,新澤西州普林斯頓大學的氣候學家真鍋淑郎(Syukuro Manabe)還是指出,Fortran讓非計算機科學家也能編程,「這是我們第一次能夠自己給計算機編程」。他和同事們利用這種語言開發的氣候模型是最早取得成功的模型之一。
Fortran發展至今已經到了第八個十年,它仍然廣泛應用於氣候建模、流體動力學、計算化學等學科,這些學科都涉及到復雜線性代數並需要強大的計算機來快速處理數字。Fortran生成的代碼速度很快,而且仍然有很多程序員知道如何編寫。古早的Fortran代碼庫仍然活躍在世界各地的實驗室和超級計算機上。「以前的程序員知道他們在做什麼,」美國海軍研究院的應用數學家和氣候模型師弗蘭克·吉拉爾多說,「他們非常注重內存,因為他們擁有的內存非常少。」
信號處理器:快速傅立葉變換(1965)
當射電天文學家掃描天空時,他們捕捉到的是隨時間變化的復雜信號雜音。為了理解這些無線電波的本質,他們需要看到這些信號作為頻率的函數時是什麼樣的。一種名為「傅里葉變換」的數學過程可以幫到研究人員,但它的效率很低,對於一個大小為N的數據集需要N^2次計算。
1965年,美國數學家詹姆斯·庫利和約翰·杜基想出了一種加速該過程的方法。快速傅里葉變換(FFT)通過遞歸(一種通過重復將問題分解為同類的子問題而解決問題的編程方法)將計算傅里葉變換的問題簡化為N log2(N)步。隨著N的增加,速度也會提高。對於1000個點,速度提升大約是100倍;100萬個點則是5萬倍。
這個「發現」實際上是一個再發現,因為德國數學家高斯在1805年就對此進行了研究,但他從未發表過。而詹姆斯·庫利和約翰·杜基做到了,他們開啟了傅里葉變換在數字信號處理、圖像分析、結構生物學等領域的應用,成為應用數學和工程領域的重大事件之一。FFT在代碼中的應用已有很多次,近年一個流行的方案是FFTW,被認為是世界上最快的FFT。
保羅·亞當斯是加州勞倫斯伯克利國家實驗室分子生物物理學和綜合生物成像部門的主任,他回憶稱,當他在1995年改進細菌蛋白質凝膠的結構時,即使使用FFT和超級計算機,也需要「很多個小時,甚至數天」的計算。「如果在沒有FFT的情況下嘗試做這些,我不知道在現實中應該如何做到,」他說,「那可能要花很長時間。」
分子編目:生物資料庫(1965年)
資料庫是當今科學研究中不可或缺的組成部分,以至於人們很容易忘記它們也是由軟體驅動的。過去的幾十年中,資料庫資源的規模急劇膨脹,影響了許多領域,但或許沒有哪個領域的變化會比生物學領域更引人注目。
蛋白質資料庫Protein Data Bank擁有超過17萬個分子結構的檔案,包括這種細菌的「表達子」(expressome),其功能是結合RNA和蛋白質合成的過程。
今天,科學家所用的龐大基因組和蛋白質資料庫源於美國物理化學家瑪格麗特·戴霍夫的工作,她也是生物信息學領域的先驅。20世紀60年代初,當生物學家們致力於梳理蛋白質的氨基酸序列時,戴霍夫開始整理這些信息,以尋找不同物種之間進化關系的線索。她與三位合著者於1965年發表了《蛋白質序列和結構圖譜》,描述了當時已知的65種蛋白質的序列、結構和相似性。 歷史 學家布魯諾·斯特拉瑟在2010年寫道,這是第一個「與特定研究問題無關」的數據集,它將數據編碼在打孔卡中,這使得擴展資料庫和搜索成為可能。
其他「計算機化」的生物資料庫緊隨其後。蛋白質資料庫Protein Data Bank於1971年投入使用,如今詳細記錄了超過17萬個大分子結構。加州大學聖地亞哥分校的進化生物學家拉塞爾·杜利特爾在1981年創建了另一個名為Newat的蛋白質資料庫。1982年,美國國立衛生研究院(NIH)與多個機構合作,成立了GenBank資料庫,這是一個開放獲取的DNA序列資料庫。
這些資料庫資源在1983年7月證明了其存在價值。當時,由倫敦帝國癌症研究基金會蛋白質生物化學家邁克爾·沃特菲爾德領導的團隊,與杜利特爾的團隊各自獨立報道了一個特殊的人類生長因子序列與一種導致猴子出現癌症的病毒蛋白質之間的相似性。觀察結果顯示了一種病毒誘發腫瘤機制——通過模仿一種生長因子,病毒會誘導細胞不受控制地生長。美國國家生物技術信息中心(NCBI)前主任詹姆斯·奧斯特爾說:「這一結果讓一些對計算機和統計學不感興趣的生物學家頭腦里靈光一閃:我們可以通過比較序列來了解有關癌症的一些情況。」
奧斯特爾還表示,這一發現標志著「客觀生物學的到來」。除了設計實驗來驗證特定的假設,研究人員還可以挖掘公共數據集,尋找那些實際收集數據的人可能從未想到的聯系。當不同的數據集連接在一起時,這種力量就會急劇增長。例如,NCBI的程序員在1991年通過Entrez實現了這一點;Entrez是一個可以讓研究人員在DNA、蛋白質和文獻之間自由檢索和比對的工具。
預測領先者:大氣環流模式(1969年)
在第二次世界大戰結束時,計算機先驅約翰·馮·諾伊曼開始將幾年前用於計算彈道軌跡和武器設計的計算機轉向天氣預測問題。真鍋淑郎解釋道,在那之前,「天氣預報只是經驗性的」,即利用經驗和直覺來預測接下來會發生什麼。相比之下,馮·諾伊曼的團隊「試圖基於物理定律進行數值天氣預測」。
新澤西州普林斯頓的美國國家海洋和大氣管理局(NOAA)地球物理流體動力學實驗室的建模系統部門負責人Venkatramani Balaji表示,幾十年來,人們已經熟知這些方程式。但早期的氣象學家無法實際解決這些問題。要做到這一點,需要輸入當前的條件,計算它們在短時間內會如何變化,並不斷重復。這個過程非常耗時,以至於在天氣狀況實際出現之前還無法完成數學運算。1922年,數學家劉易斯·弗萊·理查森花了幾個月時間計算德國慕尼黑的6小時預報。根據一段 歷史 記載,他的結果是「極不準確的」,包括「在任何已知的陸地條件下都不可能發生的」預測。計算機使這個問題變得很容易解決。
20世紀40年代末,馮·諾伊曼在普林斯頓高等研究院建立了天氣預報團隊。1955年,第二個團隊——地球物理流體動力學實驗室——開始進行他所謂的「無限預測」,也就是氣候建模。
真鍋淑郎於1958年加入氣候建模團隊,開始研究大氣模型;他的同事柯克·布萊恩將這一模型應用在海洋研究中。1969年,他們成功將二者結合起來,創造了《自然》雜志在2006年所說的科學計算「里程碑」。
今天的模型可以將地球表面劃分為一個個25公里 25公里的正方形,並將大氣層劃分為數十層。相比之下,真鍋淑郎和布萊恩的海洋-大氣聯合模型劃分的面積為500平方公里,將大氣分為9個層次,只覆蓋了地球的六分之一。盡管如此,Venkatramani Balaji表示,「這個模型做得很好」,使研究團隊第一次能夠通過計算機預測二氧化碳含量上升的影響。
數字運算機:BLAS(1979年)
科學計算通常涉及到使用向量和矩陣進行相對簡單的數學運算,但這樣的向量和矩陣實在太多了。但在20世紀70年代,還沒有一套普遍認可的計算工具來執行這些運算。因此,從事科學工作的程序員會將時間花在設計高效的代碼來進行基本的數學運算,而不是專注於科學問題。
加州勞倫斯利弗莫爾國家實驗室的Cray-1超級計算機。在BLAS編程工具於1979年問世之前,並沒有線性代數標准可供研究人員在Cray-1超級計算機等機器上工作
編程世界需要一個標准。1979年,這樣的標准出現了:基本線性代數程序集(Basic Linear Algebra Subprograms,簡稱BLAS)。這是一個應用程序介面(API)標准,用以規范發布基礎線性代數操作的數值庫,如矢量或矩陣乘法。該標准一直發展到1990年,為向量數學和後來矩陣數學定義了數十個基本常式。
美國田納西大學計算機科學家、BLAS開發團隊成員傑克·唐加拉表示,事實上,BLAS把矩陣和向量數學簡化成了和加法和減法一樣基本的計算單元。
美國德克薩斯大學奧斯汀分校的計算機科學家Robert van de Geijn指出,BLAS「可能是為科學計算定義的最重要的介面」。除了為常用函數提供標准化的名稱之外,研究人員還可以確保基於BLAS的代碼在任何計算機上以相同方式工作。該標准還使計算機製造商能夠優化BLAS的安裝啟用,以實現在其硬體上的快速操作。
40多年來,BLAS代表了科學計算堆棧的核心,也就是使科學軟體運轉的代碼。美國喬治·華盛頓大學的機械和航空航天工程師洛雷娜·巴爾巴稱其為「五層代碼中的機械」。而傑克·唐加拉說:「它為我們的計算提供了基礎結構。」
顯微鏡必備:NIH Image(1987年)
20世紀80年代初,程序員韋恩·拉斯班德在馬里蘭州貝塞斯達的美國國立衛生研究院的腦成像實驗室工作。該實驗室擁有一台掃描儀,可以對X光片進行數字化處理,但無法在電腦上顯示或分析。為此,拉斯班德寫了一個程序。
這個程序是專門為一台價值15萬美元的PDP-11小型計算機設計的,這是一台安裝在架子上的計算機,顯然不適合個人使用。然後,在1987年,蘋果公司發布了Macintosh II,這是一個更友好、更實惠的選擇。拉斯班德說:「在我看來,這顯然是一種更好的實驗室圖像分析系統。」他將軟體轉移到新的平台上,並重新命名,建立了一個圖像分析生態系統。
NIH Image及其後續版本使研究人員能在任何計算機上查看和量化幾乎任何圖像。該軟體系列包括ImageJ,一個拉斯班德為Windows和Linux用戶編寫的基於Java的版本;以及Fiji,這是ImageJ的分發版,由德國德累斯頓的馬克斯普朗克分子細胞生物學和遺傳學研究所的Pavel Tomancak團隊開發,其中包括關鍵的插件。「ImageJ無疑是我們所擁有的最基礎的工具,」布洛德研究所(由麻省理工學院和哈佛大學聯合創立)成像平台的計算生物學家貝絲·契米妮說,「我從來沒有和一個使用過顯微鏡,但沒有使用過ImageJ或Fiji的生物學家說過話。」
拉斯班德表示,部分原因可能是這些工具是免費的。但威斯康星大學麥迪遜分校的生物醫學工程師Kevin Eliceiri指出,另一個原因是用戶可以很容易地根據自己的需求定製工具。自拉斯班德退休後,Kevin Eliceiri的團隊一直領導著ImageJ的開發。ImageJ提供了一個看似簡單、極簡主義的用戶界面,自20世紀90年代以來基本上沒有改變。然而,由於其內置的宏記錄器(允許用戶通過記錄滑鼠點擊和菜單選擇的序列來保存工作流)、廣泛的文件格式兼容性和靈活的插件架構,該工具具有無限的可擴展性。該團隊的編程主管柯蒂斯·魯登表示,有「數以百計的人」為ImageJ貢獻了插件。這些新添加的功能極大擴展了研究人員的工具集,例如在視頻中跟蹤對象或自動識別細胞的功能。
Kevin Eliceiri說:「這個程序的目的不是做到一切或終結一切,而是服務於用戶的目標。不像Photoshop和其他程序,ImageJ可以成為你想要的任何東西。」
序列搜索器:BLAST (1990年)
可能沒有什麼能比把軟體名稱變成動詞更能說明文化的相關性了。提到搜索,你會想到谷歌;而提到遺傳學,研究者會立刻想到BLAST。
通過諸如替代、刪除、缺失和重排等方式,生物將進化中的改變蝕刻在分子序列中。尋找序列之間的相似性——特別是蛋白質之間的相似性——可以讓研究人員發現進化關系,並深入了解基因功能。在迅速膨脹的分子信息資料庫中,想要快速而准確地做到這一點並不容易。
瑪格麗特·戴霍夫在1978年提供了關鍵的進展。她設計了一種「點接受突變」矩陣,使研究人員不僅可以根據兩種蛋白質序列的相似程度,還可以根據進化距離來為評估它們的親緣關系。
1985年,弗吉尼亞大學的威廉·皮爾森和NCBI的大衛·利普曼引入了FASTP,這是一種結合了戴霍夫矩陣和快速搜索能力的演算法。
數年後,利普曼與NCBI的沃倫·吉什和斯蒂芬·阿特舒爾,賓夕法尼亞州立大學的韋伯·米勒,以及亞利桑那大學的吉恩·邁爾斯一起開發了一種更強大的改進技術:BLAST(Basic Local Alignment Search Tool)。BLAST發布於1990年,將處理快速增長的資料庫所需的搜索速度,與提取進化上更為遙遠的匹配結果的能力結合起來。與此同時,該工具還可以計算出這些匹配發生的概率。
阿特舒爾表示,計算結果出來得非常快,「你可以輸入搜索內容,喝一口咖啡,搜索就完成了。」但更重要的是,BLAST很容易使用。在一個通過郵寄更新資料庫的時代,沃倫·吉什建立了一個電子郵件系統,後來又建立了一個基於網路的架構,允許用戶在NCBI計算機上遠程運行搜索,從而確保搜索結果始終是最新的。
哈佛大學的計算生物學家肖恩·艾迪表示,BLAST系統為當時處於萌芽階段的基因組生物學領域提供了一個變革性的工具,即一種根據相關基因找出未知基因可能功能的方法。對於各地的測序實驗室,它還提供了一個新穎的動詞。「它是眾多由名詞變成動詞的例子之一,」艾迪說,「你會說,你正准備BLAST一下你的序列。」
預印本平台:arXiv.org (1991年)
20世紀80年代末,高能物理學家經常將他們已投稿的論文手稿副本郵寄給同行,徵求他們的意見——但只發給少數人。物理學家保羅·金斯帕格在2017年寫道:「處於食物鏈較低位置的人依賴於一線研究者的成果,而非精英機構中有抱負的研究人員則往往身處特權圈以外。」
1991年,當時在新墨西哥州洛斯阿拉莫斯國家實驗室工作的金斯帕格編寫了一個電子郵件自動應答程序,希望建立一個公平的競爭環境。訂閱者每天都會收到預印本列表,每一篇都與文章標識符相關聯。只需通過一封電子郵件,世界各地的用戶就可以從實驗室的計算機系統中提交或檢索論文,並獲得新論文的列表,或按作者或標題進行搜索。
金斯帕格的計劃是將論文保留三個月,並將內容限制在高能物理學界。但一位同事說服他無限期地保留這些文章。他說:「就在那一刻,它從布告欄變成了檔案館。」於是,論文開始從比各個領域如潮水般涌來。1993年,金斯伯格將這個系統遷移到互聯網上,並在1998年將其命名為arXiv.org,沿用至今。
arXiv成立已近30年,擁有約180萬份預印本,全部免費提供,而且每月有超過1.5萬份論文提交,下載量達3000萬次。十年前,《自然-光子學》(Nature Photonics)的編輯在評論arXiv創立20周年時寫道:「不難看出為什麼arXiv的服務會如此受歡迎,這個系統讓研究人員能快速而方便地插上旗幟,顯示他們所做的工作,同時避免投稿傳統同行評議期刊時的麻煩和時間成本。」
arXiv網站的成功也促進了生物學、醫學、 社會 學和其他學科同類預印本網站的繁榮。在如今已出版的數萬份關於新冠病毒的預印本中就可以看到這種影響。「很高興看到30年前在粒子物理學界之外被認為是異端的方法,現在被普遍認為是平淡無奇和自然而然的,」金斯伯格說,「從這個意義上說,它就像一個成功的研究項目。」
數據瀏覽器:IPython Notebook (2011年)
2001年,費爾南多·佩雷斯還是一位希望「尋找拖延症」的研究生,當時他決定採用Python的一個核心組件。
Python是一種解釋型語言,這意味著程序是逐行執行的。程序員可以使用一種稱為「讀取-評估-列印循環」(read–evaluate–print loop,簡稱REPL)的計算調用和響應工具,在其中輸入代碼,然後由解釋器執行代碼。REPL允許快速 探索 和迭代,但佩雷斯指出,Python的REPL並不是為科學目的而構建的。例如,它不允許用戶方便地預載入代碼模塊,也不允許打開數據可視化。因此,佩雷斯自己編寫了另一個版本。
結果就是IPython的誕生,這是一個「互動式」Python解釋器,由佩雷斯在2001年12月推出,共有259行代碼。十年後,佩雷斯與物理學家布萊恩·格蘭傑和數學家埃文·帕特森合作,將該工具遷移到web瀏覽器上,推出了IPython Notebook,開啟了一場數據科學革命。
與其他計算型Notebook一樣,IPython Notebook將代碼、結果、圖形和文本合並在一個文檔中。但與其他類似項目不同的是,IPython Notebook是開源的,邀請了大量開發者社區的參與其中。而且它支持Python,一種很受科學家歡迎的語言。2014年,IPython演變為Jupyter,支持大約100種語言,允許用戶在遠程超級計算機上 探索 數據,就像在自己的筆記本電腦上一樣輕松。
《自然》雜志在2018年寫道:「對於數據科學家,Jupyter實際上已經成為一個標准。」當時,在GitHub代碼共享平台上有250萬個Jupyter Notebook;如今,這一數字已經發展到1000萬個,在2016年引力波的發現,以及2019年的黑洞成像工作中,它們都發揮了重要的作用。佩雷斯說:「我們對這些項目做出了很小的貢獻,這是非常值得的。」
快速學習器:AlexNet(2012年)
人工智慧有兩種類型。一種是使用編碼規則,另一種則通過模擬大腦的神經結構來讓計算機「學習」。加拿大多倫多大學的計算機科學家傑弗里•辛頓表示,幾十年來,人工智慧研究人員一直認為後者是「一派胡言」。但在2012年,他的研究生亞力克斯·克里澤夫斯基和伊爾亞·蘇茨克維證明了事實並非如此。
在一年一度的ImageNet比賽中,研究人員被要求在一個包含100萬張日常物體圖像的資料庫中訓練人工智慧,然後在一個單獨圖像集上測試生成的演算法。辛頓表示,當時最好的演算法錯誤分類了大約四分之一的圖像。克里澤夫斯基和蘇茨克維的AlexNet是一種基於神經網路的「深度學習」演算法,它將錯誤率降低到了16%。辛頓說:「我們基本上把錯誤率減半了,或者說幾乎減半了。」
辛頓還指出,該團隊在2012年的成功反映了足夠大的訓練數據集與出色的編程,以及新出現的圖形處理單元的強大能力的結合。圖形處理單元是最初設計用來加速計算機視頻性能的處理器。「突然之間,我們可以將(演算法)運行速度提高30倍,」他說,「或者說,學習多達30倍的數據。」
真正的演算法突破實際上發生在三年前,當時辛頓的實驗室創建了一個神經網路,可以比經過幾十年改進的傳統人工智慧更准確地識別語音。「只是稍微好一點,」辛頓說,「但這已經預示了某些東西。」
這些成功預示著深度學習在實驗室研究、臨床醫學和其他領域的崛起。通過人工智慧的深度學習,手機能夠理解語音查詢,圖像分析工具能夠很容易地在顯微照片中識別出細胞;這就是為什麼AlexNet會成為眾多從根本上改變科學,也改變世界的工具之一。(任天)
Ⅷ 編程語言有哪些 有哪些編程語言
1、編程語言一、C語言,C語言是世界上最流行、使用最廣泛的高級程序設計語言之一。在操作系統和系統使用程序以及需要對硬體進行操作的場合,用C語言明顯優於其它高級語言,許多大型應用軟體都是用C語言編寫的。C語言繪圖能力強,具有可移植性,並具備很強的數據處理能力,因此適於編寫系統軟體,三維,二維圖形和動畫。它是數值計算的高級語言。
2、編程語言二、java,Java是一種可以撰寫跨平台應用軟體的面向對象的程序設計語言,是由Sun Microsystems公司於1995年5月推出的Java程序設計語言和Java平台(即JavaSE, JavaEE, JavaME)的總稱。Java 技術具有卓越的通用性、高效性、平台移植性和安全性,廣泛應用於個人PC、數據中心、游戲控制台、科學超級計算機、行動電話和互聯網,同時擁有全球最大的開發者專業社群。
3、編程語言三、c++,C++這個詞在中國大陸的程序員圈子中通常被讀做「C加加」,而西方的程序員通常讀做「C plus plus」,「CPP」。 它是一種使用非常廣泛的計算機編程語言。C++是一種靜態數據類型檢查的、支持多重編程範式的通用程序設計語言。它支持過程化程序設計、數據抽象、面向對象程序設計、泛型程序設計等多種程序設計風格。
Ⅸ 哪個編程語言,是世界上最好的語言
從辯證的角度考慮沒有哪個編程語言是最好的,適合自己的才是最好的,無論一個編程語言有多少優勢。
相信不同的程序員會有不同的答案。常用的編程語言有C++、 C、Java、C#、Python等等。每種編程語言都自身的優點,但也是或多或少的存在這一些缺陷。所以對於程序員來說那編程語言適合項目的開發並且使用順手那麼那種語言就是最好的語言。比如說幾乎不會有程序員去拿PHP、C#、Python來做嵌入式的開發。所以要選擇是使用哪種語言就要看所要使用的平台環境。下面就來大概說說不同語言的特點吧。
C語言,它既有高級語言的特點,又具有匯編語言的特點,它是結構式語言
簡潔緊湊、靈活方便;運算符豐富;數據類型豐富;表達方式靈活實用;允許直接訪問物理地址,對硬體進行操作;生成目標代碼質量高,程序執行效率高;可移植性好;
C++是面向對象的C語言,由於偏底層,所以性能非常高,僅次於C語言,主要用在一個要求高性能的領域。。。這個不好說,因為實際需求上,用處挺雜的,而且也確實不太好學。
PHP是一種通用開源腳本語言。語法吸收了C語言、Perl以及java的特點,入門門檻較低,易於學習,使用廣泛,主要適用於Web開發領域。
Java具有卓越的通用性、高效性、安全性,廣泛應用於個人PC、科學超級計算機、行動電話和互聯網,同時擁有全球最大的開發者專業社群
python語言,是一種面向對象、直譯式計算機程序設計語言,Python語法簡潔而清晰,具有豐富和強大的類庫。它常被昵稱為膠水語言,能用其他語言製作的各種模塊輕松地聯結在一起
C#和Java極其相似;它包括了諸如單一繼承、介面、與Java幾乎同樣的語法和編譯成中間代碼再運行的過程。但是C#與Java有著明顯的不同,它借鑒了Delphi,與COM是直接集成的,而且它是微軟公司 .NET windows網路框架的主角
總結起來:
PHP:沒有什麼突出的優點
C 底層操作、性能優化
Java、C# 庫多通用型強。
Python 語言清晰明白
C++ 什麼都能幹全能
Ⅹ 計算機編程語言有哪些
機器語言,匯編語言,高級語言。
JavaScript:一種直譯式腳本語言,是一種動態類型、弱類型、基於原型的語言,內置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用於客戶端的腳本語言,最早是在HTML網頁上使用,用來給HTML網頁增加動態功能。
Java:Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程。
(10)超級計算機能用什麼編程擴展閱讀:
注意事項:
注意保護眼睛和頸椎。程序員需要天天對著電腦敲鍵盤,眼睛和頸椎會承受很大的壓力,所以時刻要提醒個人注意健康。
看別人的源碼,其實看別人的源碼往往比用戶寫更有價值。如果可以看懂別人的源碼,並且分析出來別人是怎麼樣的原理。那麼處理一些邏輯的時候頭腦會很零活。
腦海中出現一段比較有意思的代碼時一定要,寫出來看看是否可以被執行,所謂1萬行代碼成就一個高手,10萬行代碼成就一位大神。