量子運算開發套件Q#在2017年底釋出以來,已經滿一年,微軟也在今年初開源並新支援了macOS與Linux桌面平臺,以擴大開發者人數,而在年末的時候,微軟對外說明了Q#的設計理念與接下來的發展方向

微軟釋出Q#的原因,除了要讓量子開發更容易,同時也希望能滿足特定情境的需求,像是微軟預告添加的自動化功能,以自動化原本需要手動的工作,微軟提到,量子位元布局和量子閘合成,通常仍需要針對每個程式和目標硬體逐一進行,而自動化作業可以加速這個過程。

另外,Q#也能解決開發人員很常會擔心程式碼在硬體上執行時的錯誤糾正問題,以及由於量子位元現在仍是稀缺資源,微軟認為,量子運算的長期目標應該是被用來解決,當前硬體還無法解決的計算密集行工作,微軟也希望在開發工作上,大規模量子程式最佳化應該被當作優先事項。

因此微軟選擇開發自有的語言,以便對訊息的表達方式擁有完全的控制力,使其富有彈性,以及在量子編譯時期能夠支援模組化與可擴展軟體架構。微軟提到,程式語言不僅代表一組方便用來表達演算法的工具,也同時塑造了開發者思考問題的方法,以及拆解問題成小任務並建構解決方案的方式。

根據目的調整和組合這些工具,程式語言可以對理解現有方法產生極大的影響,更不用說用在全新領域上。微軟想集合程式語言設計人員、編譯器工程師、量子物理學家、演算法和硬體專家以及各種軟體開發者,為量子運算塑造一種新的運算架構。

2018年11月Q#釋出了0.3版,官方現在已經著手準備下一個版本,並且說明了Q#發展的方向。微軟提到,Q#中對資料結構的支援很少,雖然提供了許多高級語言功能來抽象經典概念以及量子控制流,但刻意省略了一些諸如類別等物件導向的機制。

微軟未來會將重點放在修正量子態的轉換,將其表達成Q#中的操作以及在未來的特性和關係。然而,資料的基本捆綁和這些操作為許多程式重要的部分,微軟希望提供適當的機制來表達,以允許達到抽象、方便以及抵抗程式碼編寫錯誤。

除了增加的類型安全性之外,當前設置中的用戶定義類型的能力受限,目前以黑盒子的方式將類型參數化,因此限制了他們的用途。由於微軟沒有提供動態反射的機制,因此不可能將運算子或是其他類型特定功能,應用於每個單獨呼叫解析其類型的參數項目。因此就這個設計的意義來說,這些項目只是個黑盒子,僅能用於傳遞。

由於量子裝置偵錯非常困難,微軟希望能以靜態的方式,執行這些繁重的工作,微軟提出了兩種可能的機制,以來減輕這些負擔,其中一是類型限制,這是一種的常見於熱門語言的機制,可以被視為基於類型屬性的專業化,另一種則是根據實際類型本身,追求更嚴格的專業化方向,以增加目前避免使用的過載的類型。而無論是哪一種方法,透過明確地將使用者定義的類型,與類型系統中的元組分開,是跨出擴展其能力的第一步。

微軟表示,Q#借助社群的力量不斷發展,雖然量子運算建立在量子力學之上,一般人因為對於這領域不熟悉而卻步,但是又因為量子運算建立在理想化量子系統的概念上,因此也符合部分容易學習的原則。微軟透過Q#dev部落格的文章傳遞這些原則,並促使開發人員進行交流。


Advertisement

更多 iThome相關內容