編 輯:Sakura 審 校:Peiyong Wang隨著量子計算技術的不斷發展,各種量子計算機程式語言應運而生,全球量子計算競爭的格局增添了一個新的維度:
量子程式語言。類似於經典計算機,量子計算機也需要一種「語言」來與其交流,這個「語言」就是經常聽到的量子程式語言。程式語言通過發送指令並從量子計算機接收輸出,以此達到與量子計算機交流的目的。
編程有不同的級別:從向計算機提供特定指令的彙編語言(也稱為量子機器指令集)到已經可以進行底層編程量子算法的高級語言。為了對量子程式語言有一個基本的了解,接下來,將引入一些特定的概念。量子計算機實際上是由量子設備(硬體)和經典計算機組成的混合系統,彙編語言將指令發送到硬體並接收和處理結果(軟體)。量子語言與此經典軟體相對應。而有的庫則是使用某些知名程式語言如python,C ++,Matlab編寫,這些語言可幫助用戶構建編寫量子算法。在本文及其對應的圖中,上述兩種情況都統稱為「量子語言」(Quantum Language)。
下圖為不同級別的量子編程算法。 不同級別的量子編程算法 在真正的量子設備出現之前,量子語言就已經存在了。它們已經被用來在經典計算機上模擬量子算法。隨著真正的量子計算機的問世,研究小組和公司都開發了自己的程式語言來使用他們自身的設備,這促進了更多語言的創建。這些語言試圖結合現有語言的一些元素,使其可以用於任何後端, 這種語言稱為
通用量子語言(Universal Quantum Languages)。更加通用的量子語言是可以被創建的,因為幾乎每個人都在開發開源軟體,也就是說,任何人都可以通過使用 GitHub 這樣的平臺來改進和擴展這些語言。「開源」軟體和「免費」軟體之間有什麼區別呢?相對於專有軟體而言,「開源」軟體和「免費」軟體指的是對使用方式的限制較少的軟體。但是,二者之間是不同的,它們基於完全不同的價值觀。
開源是一種「開發方法」,自由軟體是一種「社會運動」。自由軟體允許用戶「具有運行、複製、分發、學習、更改和改進軟體的自由」,而不必從零開始。而開源軟體則更側重於協作和社區驅動的開發模式的價值。開源軟體運動起源於最初的自由軟體社區,通常,自由軟體代碼也是開源的,但開源的軟體不一定是自由軟體。開源方法在軟體代碼的開發和改進中引入了毋庸置疑的優勢。如果社區正在嘗試創建一種很新的應用程式程式語言,則該優勢更加明顯。量子計算是一個相對較新的領域,它引入了新的計算範式,運行量子算法的技術完全不同,最終的程式語言應滿足所有可能用戶的需求。然而,在經典編程和量子編程之間建立並行性不容易。我們將嘗試以不同的抽象層對一些最著名的量子程式語言進行分類,尤其是那些由私人公司和初創公司開發的語言。這並不是一個詳盡而且全面的清單,您可在量子客後期的更新中獲得更完整的信息。本文接下來將專注於開發量子計算機的公司所使用的量子語言。但是,並不是所有的公司都使用這種開源策略來創建他們的代碼,一些公司使用的語言是不公開的,甚至連名稱也尚未公開。IBM已經開發了量子信息軟體工具包(
QISKit),這是一個用於編寫,模擬和運行量子程序的全棧庫。該工具包包括了四個部分:1)Terra,它允許在量子門和脈衝級別編程(量子門通過脈衝序列實現);2)Aqua,運行量子化學、優化問題和人工智慧中使用的算法的高級編程;QISKit將量子程序轉換為一種稱為
QASM的量子指令語言。Rigetti Computing創建了
Forest,這是一個用於編寫和運行量子程序的開發環境。他們的量子設備使用名為 pyquil的python庫進行編程,該庫將根據量子門編寫的程序轉換為稱為 quil的較低級語言。他們還開發了 Grove庫,其中包含用於量子化學的算法(例如,用於量子化學的變分量子本徵求解器)或用於優化問題的量子優化算法(QAOA)。微軟提供的量子開發套件包括量子模擬器、實現量子算法的庫以及稱為
Q#的全棧量子程式語言,該語言可作為Visual Studio的單獨下載的擴展程序獲得。微軟仍在使用拓撲量子比特來開發其量子計算機,因此,他們目前提供了一個運行量子程序的量子模擬器。D-Wave的軟體環境包括一種稱為
qbsolv的量子語言,可幫助用戶將其QUBO問題(其量子退火器要解決的問題的類型)映射到D-Wave設備的量子比特,連接並將程序轉換為量子指令語言。他們還提供了一些更高級別的庫來實現一些稱為 QSage和 ToQ的優化問題。谷歌開發了一種稱為
Cirq 的量子語言,它由一個python庫組成,用於編寫、操縱和優化線路,並再次運行它們,以運行量子計算機和模擬器。目前,一些公司和組織已使用它來運行Google量子設備。他們開發了
Strawberry Fields,這是一個專門針對連續變量量子計算的全棧庫,該庫基於光子的量子計算機。量子線路是使用 Blackbird量子程式語言編寫的,該語言是其量子設備的彙編語言。本源量子開發了
QRunes的程式語言,該語言用於編寫和運行由本源開發的量子編程框架QPada構建的量子程序,該語言是其量子設備的彙編語言。由上文可以看出,當下有多種量子計算語言,每個公司都提出了對其設備進行編程的語言。其中哪一個會更好?沒有誰能妄加論斷。就像經典程式語言,最終將遭受一種自然選擇,只有最常用的才能生存。有些公司試圖通過開發通用語言來簡化研究人員的工作,這些語言將根據所使用的硬體設備來對量子程序進行編譯。
ProjectQ便是這種通用量子語言之一,它可以將程序轉換為任何類型的後端,比如IBM設備和Google量子計算機的模擬。另一種通用語言是
XACC,這是一個用於對IBM、Rigetti和D-Wave量子計算機進行編程的全棧庫。量子設備仍在不斷的發展,量子語言也在不斷的進化。在歷史的進程中,各個量子公司的程式語言最終哪家能夠成為通用程式語言,亦或者是否會誕生新的程式語言,力壓群雄,最終成為真正的量子通用程式語言?且拭目以待。https://www.microsoft.com/en-us/quantum/development-kithttps://www.dwavesys.com/softwarehttps://www.rigetti.com/productshttps://medium.com/qiskit/qiskit-and-its-fundamental-elements-bcd7ead80492https://github.com/eclipse/xacchttps://mp.weixin.qq.com/s/6e4E-hQxoIPAHjJvcU8OWw
聲明:此文出於傳遞更多信息之目的。若有來源標註錯誤或侵權,請作者持權屬證明與我們聯繫,我們將及時更正、刪除