量子开发者究竟是什么?
由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!
近来,量子计算可谓是新闻热点,毫不夸张地说。
关于量子计算的各种消息和进展层出不穷,让人眼花缭乱,不知如何入门。有时,量子计算甚至会蒙上一层神秘的面纱,这源于一些流行的比喻,例如“同时存在于两个地方”、“超距作用”以及其他一些令人费解的解释。
虽然网上有很多优质资源可以帮助你入门,但要真正了解量子开发者的工作内容仍然很难。无论是在酒吧、拼车、推特、会议上,还是其他场合,只要我说自己从事量子计算方面的工作,话题就很容易变得尴尬;量子计算固然很酷,但我具体是做什么的呢?在这篇文章中,我希望通过分享我日常的量子开发工作,帮助大家更好地了解这个行业。
我是谁?
但首先,由于每个人的量子开发之路都不尽相同,简单介绍一下我自己或许能提供一些有用的背景信息。我是克里斯·格拉纳德,微软量子系统组的研究软件开发工程师。在此之前,我曾在阿拉斯加大学费尔班克斯分校获得三个学位,在圆周理论物理研究所获得硕士学位,在量子计算研究所获得博士学位,并在悉尼大学从事博士后研究。毋庸置疑,学习量子计算贯穿了我人生的大部分时间。闲暇时,我可能会发布一些超现实的表情包,策划一场《黑暗世界》桌面游戏战役,或者带着我们可爱的小狗去西雅图众多允许携带宠物入内的啤酒厂之一散步。
在此处插入双关语
鉴于此,人们可能会认为我整天埋头于晦涩难懂的期刊论文,埋头于纸笔计算,或者在黑板上涂涂画画。虽然这些都是研究量子计算的有效且有用的方法,但我尝试过之后发现,至少对我个人而言,还有其他方式可以做出贡献。
例如,早在大学本科学习之前,我就一直很喜欢用编程解决问题。我的编程启蒙是 QBASIC 和 GWBASIC(没错,我正式成为一名老程序员了;不知怎么的,我居然还是个千禧一代?),我喜欢用编程来解答我好奇的问题。当我想要更好地理解人口增长及其对生态的影响时,我借了我妈妈的人口动力学教科书,开始在 Excel 中用 VBA 宏来编写相关程序。
事实证明,这对于量子计算来说也是一种绝佳的方法。构建量子计算机非常困难,而经典计算机可以在很多方面帮助我们实现这一目标。我们可以利用经典计算机来模拟我们希望量子计算机执行的操作,例如借助线性代数软件包;或者,我们可以使用经典计算机对从量子设备返回的数据运行统计推断算法,从而帮助我们了解如何制造更好的量子设备。
当然,我们还可以更进一步,使用经典计算机来编写和测试我们希望在量子计算机上运行的实际程序;因此,像 Q#! 这样的量子编程语言应运而生。
那么,你会怎么做?
一旦你开始使用传统计算机解决各种问题,你就会重新回到构建、测试、打包、部署和设计传统软件这些有趣的环节中。最近,作为2019 年 Q# 圣诞倒计时活动的一部分,Andres Paz 解释了构成 Q# 和量子开发工具包的许多组件。Q# 的运行涉及编写传统编译器和模拟器,与 C# 和 Python 等现有语言集成,开发编辑器集成扩展以帮助我们编写量子程序,编写所有相关文档,甚至创建 Docker 容器来支持Q# 的在线优先体验。这是一项团队合作,因为设计、构建和维护量子开发工具包必然需要比团队中任何一位成员所具备的更多领域的专业知识。
就我个人而言,我主要负责设计和维护 QDK 自带的各种Q# 库,并与领域专家合作,力求让这些库更加完善,从而更好地融入团队协作。这意味着我每天的大部分时间都花在用 Q# 编写单元测试、修复构建失败的问题、阅读 pull request 以及研究如何以最佳方式打包代码,以便其他量子开发者能够使用我参与编写的代码。如果您想了解更多我的工作内容,欢迎在 GitHub 上关注我!由于量子开发工具包是开源的,您可以随时关注我们添加新功能、修复 bug、引入新 bug 以及其他软件开发者日常工作。
换句话说,作为一名量子开发者,我所掌握的大部分技能与其他任何软件开发工程师岗位所需的技能都是相同的。虽然我每天都会用到在量子计算培训中学到的技能,但正是传统的软件开发工程实践为我提供了运用这些技能所需的基础。
这一切肯定是有原因的,对吧?
当你投身量子计算领域时,你会将自身的技能、背景和经验融入到工作中。成为一名量子开发者或为量子计算社区做出贡献的方式并非只有一种。我希望通过分享我的经历,能够为大家提供一个范例,说明我是如何运用自身背景来帮助社区的。你的道路将会与我不同,这不仅没问题,而且非常棒。量子计算领域最令人惊叹之处在于它汇聚了各种不同的技能和背景。你将在这里成就非凡,并以你自己的方式去实现它。
如果您喜欢这篇文章,请访问我的博客阅读更多内容,或者阅读 《使用 Python 和 Q# 学习量子计算》,该书现已由 Manning Publications 出版,提供抢先体验版。
文章来源:https://dev.to/cgranade/what-is-a-quantum-developer-anyway-38l