微软透露量子计算编程语言Q Sharp发展方向
微软的量子计算开发工具包Q#在2017年底发布,已满一年,微软也在今年初开源并支持了macOS与Linux平台,以扩大开发者规模。近期,微软阐述了说明了Q#的设计理念与接下来的发展方向。
微软发布Q#的原因,除了要让量子开发更容易,同时也希望能满足特定情境的需求,如微软预告会添加自动化功能。微软提到,量子位布局和量子闸合成,通常仍需要针对每个程序和目标硬件逐一进行,而自动化可以加速这个过程。
另外,Q#也能解决开发人员常会担心代码在硬件上执行时的错误纠正问题。以及由于量子位现在仍是稀缺资源,微软认为,量子计算的长期目标应该是被用来解决,当前硬件还无法解决的计算密集型工作,微软也希望在开发工作上,大规模量子程序优化应该被当作优先选项。
因此微软选择开发自有的语言,以便对信息的表达方式拥有完全的控制力,使其富有弹性,以及在量子编译时能够支持模块化与可扩展软件架构。微软提到,编程语言不仅代表一组方便用来表达算法的工具,也同时塑造了开发者思考问题的方法,以及拆解问题成小任务并建构解决方案的方式。
根据目的调整和组合这些工具,编程语言可以对理解现有方法产生极大的影响,更不用说用在全新领域上。微软想集合编程语言设计人员、编译工程师、量子物理学家、算法和硬件专家以及各种软件开发者,为量子计算塑造一种新的计算架构。
2018年11月Q#发布了0.3版,官方现在已经着手准备下一个版本,并且说明了Q#发展的方向。微软提到,Q#中对数据结构的支持很少,虽然提供了许多高级语言功能来抽象经典概念以及量子控制流,但忽略了一些诸如类别等面向对象的机制。
微软未来会将重点放在修正量子态的转换,将其表达成Q#中的操作以及在未来的特性和关系。然而,数据的基本捆绑和这些操作为许多程序重要的部分,微软希望提供适当的机制来表达,以允许达到抽象、方便以及降低代码编写错误。
除了增加的类型安全性之外,当前设置中的用户定义类型的能力受限,目前以黑盒的方式将类型参数化,因此限制了他们的用途。由于微软没有提供动态反射的机制,因此不可能将运算符或是其他类型特定功能,应用于每个单独呼叫解析其类型的参数项目。因此就这个设计的意义来说,这些项目只是个黑盒子,仅能用于传递。