Quine----输出本身的程序

来源:互联网 发布:linux jira安装配置 编辑:程序博客网 时间:2024/05/16 07:38

程序在我们的日常生活中扮演了重要角色,小到吃饭刷卡,达到发射火箭,似乎无所不能。那么问题来了,有能输出本身源代码的程序吗?

这似乎是个死循环,就“如要理解递归,就要理解递归”一样。然而,如果我们采取一些巧妙的方法,还是有方法实现的,并且实现的方法不止一种。人们把这种程序称为“Quine”。下面是一个使用C++语言的Quine。

将换行符和引号等用对应的字符编码替换,巧妙地避免使用“\”引起死循环。

早在19世纪六十年代 爱丁堡大学的 Hamish Dewar就已写出第一个Quine程序

当时的程序是这样的

据说AGPL协议中的关于下载源的规定的灵感就来自Quine

我们也可以换一种思路写Quine,我们可以利用编译器中的预定义宏“__FILE__”

我们还可以通过各种不同的语言来写

Java

C++

它们分别输出对方的代码。

不仅是两种语言,我们还可以把50种不同的编程语言构成一个循环。

他叫Quine Relay


它一开始是一段Ruby代码,运行后生成Scala代码,后者运行后生成Scheme代码……最后又回到最初的Ruby代码。一边执行一边能画出一条正在吞食自己尾巴的蛇,刚好表示了循环。

项目地址:github.com/mame/quine-relay


更多Quine代码:www.nyx.net/~gthompso/

部分资料来自维基百科:en.wikipedia.org/wiki/Quine_(computing)


They Said "All we are is sinking endless."


原文地址:http://ozem.pw/archives/798

0 0
原创粉丝点击