果然科技树只能按照顺序点:量子计算机上的程序无法调试,无法测试,只能依靠编译器在编译时形式化验证

2014-05-27 08:11:08 +08:00
 akfish
在看一些量子计算机相关的文献,看到这么一段:

来源: http://www.monoidal.net/papers/tutorialqpl-2.pdf

Speci cation and veri cation.
In classical programming languages, debuggers
are useful tools while writing programs. In quantum computation, due to
impossibility to watch quantum information without modifying it, a debugger
for a program is a lost cause.
In classical programming languages, one can develop test suites to analyze
the behavior of a program and check whether it (statistically) behaves
correctly in the expected input data-range. In the case of embedded software, if
it is not possible to do it with the actual device, one can usually perform these
tests o -site. In quantum computation, because of the cost of running code
early quantum computers and the impossibility to e efficiently simulate quantum
computation on large inputs, test suites are not an option.
In typed classical programming languages, one has the choice between
strong type systems, dynamic type systems, or even blends of these, bearing the
fact that run-time errors can be captured and potentially resolved by the user
(as in LISP, for example). In quantum computation, due to the cost of the run
of a quantum computation and the difficulty to keep stable quantum memory,
the programmer cannot afford run-time errors in his code, specially if they come
from something as simple as the attempt to clone a quantum bit.
The conclusion is that the work have to be done upstream.

简单的说就是由于观察者效应,对量子态的观察必定会造成结果的改变,你不可能设个断点然后把量子CPU上的寄存器内容撸出来看了,还能继续正确运行,你一观察内容就变了。所以调试器是不可能有的。

由于运行成本高,以及不可能有效的对输入数据规模很大时的运算过程进行模拟,所以测试也是不可能。

唯一的出路只有在编译时验证。

所以如果人类一开始捡到了外星人的黑科技,尝试在没有电子计算机的情况下,直接去点量子计算机的科技树,可能根本无法做到自举,因为要写出一定规模的量子程序,需要首先有另外一种运算能力强的设备去撸编译器。
8449 次点击
所在节点    程序员
52 条回复
dong3580
2014-05-27 14:28:08 +08:00
@loading
速度太快了,切都切不出来,这个时候是不是可以考虑给人工智能来使用.
jianghu52
2014-05-27 14:32:42 +08:00
除了观察者校验能看得懂,其他的完全不懂。我是不是太low了。
HowardMei
2014-05-27 15:22:50 +08:00
@akfish 好吧,基本上沟通是很困难的一件事,承认这点并不伤自尊。

其一:你犯了一个错误,主题措辞和心中想讨论的问题本身完全不符,从字面上看,你想讨论爬科技树;觉得歪楼了,指明一下就是了,你只是重复“关注点”偏了,并不能把楼正过来。

其二:我并没有声称自己完全对,特意写了“我的看法”。不对的地方,你完全可以逐条指出来,打滚撒泼不是讨论。

事实上,之前我确实没仔细看完这篇文章,特别3.2部分,作者在结论的地方都没提他们的Propose,我评价成水文,确实武断了,但这也正是你应该指出来给大家,说3.2节是最有价值的地方,否则你给这个链接有什么意义呢?

我对量子计算的了解只局限于这篇文章前面的Model部分,以及传统编程语言也很有可能被用在这个模型上。再看了一遍,我对作者结论的只有“强类型语言”才适用,仍然有怀疑。如果你有更深理解,分享一下,当然欢迎。

代入情绪,恐怕没法真正讨论。
edwardro
2014-05-27 16:40:37 +08:00
@HowardMei “有些东西就是试错试出来,十几年后才有完备理论解释”——有些东西就是试错试出来就代表所有的东西都是试错出来的?

人类没有发明计算机之前拿到一台外星人的量子计算机,能试错试出来一个量子程序编译器?

感觉自己在带着情绪以及偏见在讨论问题,结果说成别人带情绪。
HowardMei
2014-05-27 17:32:18 +08:00
@edwardro 破折号后面是你的结论,不是我的,你把“有些”毫无障碍地引申为“所有”,然后归谬树靶子打自己,真得很神奇。

楼主说“科技树只能按照顺序点”,并用量子计算机必须以电子计算机为基础这个个例来
证明所有东西都是积累出来的,我举了个射频的反例,并且后面还说明了,突破性的进展,
通常跟积累无关,楼主说的顺序点,只合乎缓变阶段。所以,我结论是楼主的观点不完全成立,
“有些”东西是试错出来的,而不是积累出来的。反过来,这里除了你,没人荒唐到说所有东西都是
试错试出来的,那不叫科技,叫炼金术。

就此结束吧,表达精确、逻辑严密是沟通和讨论的基础,不然就是像你这样把自己的话塞到别人嘴里,
然后加以鄙视。
windylcx
2014-05-27 19:10:27 +08:00
@HowardMei
表达精确、逻辑严密是沟通和讨论的基础。同意。
edwardro
2014-05-27 20:48:41 +08:00
@HowardMei 既然知道有些东西不是靠试错试出来的,结果反而拿着不一定正确的逻辑来反驳别人,我看你说的话正好就是在说你自己,“把自己的话塞到别人嘴里,
然后加以鄙视”说的就是你这种人,打自己嘴巴打得真响!好!!
sharpnk
2014-05-27 23:08:02 +08:00
@HowardMei 赞~ 好久没在网上看到这么多逻辑清晰的汉字了。
wodemyworld
2014-06-04 14:43:52 +08:00
@akfish 我不是说他们怎样,我是说你的理解太狭义了,调试有很多方法,测试又有很多方法,不是量子信息不可被完美重发就不能调试和测试的,量子信息保证了发出的信息只能被观察到一次,但是如果引入第三方并且信任他,一致认定第三方重发的信息作为有效信息,那么调试和测试就不存在什么问题,哪有调试的时候程序不信任调试器的呢。。。。。
akfish
2014-06-04 16:00:31 +08:00
@wodemyworld 还第三方,搞量子密码学的要哭了,别YY了好不。
恩,测试有很多方法,你怎么不说编译时静态验证也是测试的一种,我的标题是自己打脸呢?

量子计算最基本的就是量子纠缠态的建立量子比特,中间的任何量子逻辑运算的前提都是这个纠缠态的完整性,第三方必然导致对纠缠态的干扰。你可以设个断点,你可以假装信任所谓的“第三方”,但你取出来的东西根本不可靠,你也无法从断点处恢复继续运行。

至于说(量子计算机早期)测试的不可行,那是由于量子计算的成本,和模拟运算量大的不可行性导致的。量子计算机的发展早期会经历一个较长的阶段,它会是地球上计算能力最强的设备,在它上面进行的计算会完全榨干其性能。在这个阶段内,根本没有任何设备有足够的运算量(在合理的成本范围内)去跑有效的测试。
你的想法就等于用算盘来测试电子计算机,理论上可行,前提是要有足够多的时间、人力和算盘。

这不是信任问题,不是方法论问题,而是可行性问题。
不要用经典领域的眼光,去看待完全不同的领域。
wodemyworld
2014-06-04 17:06:29 +08:00
@akfish 还密码学,真是没救了。。。。。。
akfish
2014-06-04 17:55:06 +08:00
@wodemyworld 没救的是你,局限在自己那点知识里,量子计算机也就有生之年内能看到的东西,无需多言,谁是井底之蛙自有分晓。就这样吧,看你对量子力学一点基本了解都没的样子,实在也不会有什么建设性的讨论。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/114409

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX