量子計算是如今發展最快的科技之一。許多公司和研究實驗室都在儘可能快地向市場發布功能強大的量子硬體。在該領域取得的每一點進步都意義重大。
當前還沒有絕對完美的量子計算機有能力運行可靠的算法,例如 Shor 算法和 Grover 算法等。然而,現在的量子機器正在迅速的進步。IBM 公司表明,在下一個十年,量子計算機將具備不可否認的優勢,足以解決很多傳統計算機無法解決的問題。
在 2019 年,IBM 提出了一種度量標準,叫做 Quantum Volume(QV)。該標準是從硬體的角度去衡量一個量子計算機的能力和有效性。QV 是一個基於不同因子計算所得的數值,例如計算機中量子位的數值、它們的連接性以及錯誤率的度量等。如果我們需要在實際的硬體上運行真實世界規模的算法,我們就需要一個很大的 QV 值。到目前為止,IBM 公司擁有 QV 值最大(32)的設備。
從軟體的角度來說,一些研究人員預測,未來十年市場對於量子編程人員的需求將會呈指數級增長。例如 Google、IBM 和 Microsoft 等公司將會投入大量的財力和巨大的努力去培養下一代的量子研究人員和編程人員。
事實上,為了建立一個量子計算機,你不需要在物理和數學領域具備很高的學位。在我看來,你只需要具備很好的想像力即可。
圖片來自作者(使用 Canva 繪製)
和傳統計算機相比,量子計算機的運行基於一種完全不同的模式。用一種簡單的思路來理解就是:在傳統計算機中,我們使用的是 0 和 1 兩個數字。而在量子計算機中,在原有 0 和 1 的基礎上,還增加了一個」可能為 0 或者 1「的狀態,也被稱作"疊加態"(superposition)。所有的量子算法都是利用了這種「可能」的狀態來表現量子計算機的強大能力。如今,量子計算機的編程有點像 1950 年代時我們對傳統計算機的編程——雖然採用了類似於彙編語言的風格,但是具有更好的語法。
彙編語言並不簡單,所以這似乎聽上去很有挑戰性。但實際情況是,當你了解了基本 ( https://towardsdatascience.com/take-your-first-step-into-the-quantum-realm-a13e99fab886 ) 的定義,以及量子位和疊加態的意義 ( https://medium.com/digital-diplomacy/the-three-pillars-of-quantum-computing-d80ff5f50ec7 ) 後,你就可以開始為量子計算機編程了。這也就是說,實際量子代碼的編寫並不需要對於物理有很深層次的掌握。
圖片來自作者(使用 Canva 繪製)
無論是公司還是研究實驗室都在致力於開發一種高級的量子程式語言,使程式設計師可以不需要非常熟悉量子物理學和量子力學就能夠使用。事實上,現如今存在的量子程式語言和在傳統程式語言基礎上建立的量子編程庫的數量可能比你想像的還要多。
因此,你的選擇要麼是在量子彙編的級別上編程,要麼是使用一個基於傳統程式語言的、用於量子計算的庫,或者也可以使用一個純粹的量子程式語言。我在下圖中列舉了在每一個類別中最廣為人知和使用最廣的選擇。
圖片來自作者(使用 Canva 繪製)
彙編級別的量子編程
具有量子編程庫的傳統程式語言
使用傳統程式語言去寫量子代碼已經有很多的選擇。我將會按照受歡迎的程度進行排序。
事實上還有一些其他的基於傳統程式語言的量子編程庫存在,但是他們中的大多數已經過時或者在某一時刻已經停止了開發,這裡就不再贅述。
為了摒棄傳統程式語言並建立獨立的量子程式語言,研究人員已經開發出了在語法上和著名的傳統語言相類似的量子程式語言。這也簡化了從傳統編程到量子編程的轉換過程。這些語言包括:
有了這麼多選擇,你可能會對於應該選擇從哪開始你的量子旅程感到不知所措。我的建議是:從一個基於你曾經使用過的傳統程式語言編寫的量子編程庫著手,慢慢適應了量子邏輯和思考方法後,再轉到一個純粹的量子程式語言上。
只有在我想深入了解量子計算機的工作原理和門之間的動態關係時,我才會考慮使用一個低級別的語言(例如 QX Simulator)。
我是從 Qiskit 入手的,而且今天仍然用得很多——不僅因為它是用 Python 寫的,還因為我可以在一個真實的量子計算機上運行我的代碼。雖然目前為止結果依然很糟,但可以在真實的量子計算機上運行你的代碼仍然是非常有趣的事。
為了方便說明,我們使用之前提到的九種方法來實現相同的量子代碼。你可以分析實現一個電路的不同方法,來選擇你覺得有趣的那一個入手。
在當前的很多量子編程裡,你需要搭建一個使用量子門(等同於經典門)的電路來應用你的算法。讓我們來嘗試實現一個可以在兩個量子位之間創造疊加態的量子迴路。為了完成這個任務,你需要了解用於創建疊加態的「魔法門」,稱為 Hadamard Gate。輸入 0 或者 1,它將會返回一個 0 和 1 的對等疊加態。
圖片來自作者(使用 Canva 繪製)
圖片來自作者(使用 Canva 繪製)
圖片來自作者(使用 Canva 繪製)
我是一個喜歡學習和探索新事物的人,但我同時也明白,我們需要在一個時間點把自身的能量專注學習一件事才能表現得更好。
這也是我建議你可以從基於傳統程式語言的量子編程庫著手的原因。這樣,你只需要關注量子的思維方式,而不需要同時學習一種特定的程式語言。當你適應了量子編程的邏輯後,再去關注一個量子程式語言,就會容易得多。在這之後,如果你還想進一步拓展你的知識,就可以繼續往下走去探索 QASM 了。
參考文獻
原文連結:
https://medium.com/better-programming/program-a-quantum-computer-today-a62de23268f0
關注我並轉發此篇文章,私信我「領取資料」,即可免費獲得InfoQ價值4999元迷你書,點擊文末「了解更多」,即可移步InfoQ官網,獲取最新資訊~