假设我们有一台具有无限内存和无限CPU功率的神奇图灵机。
利用您的想象力来确定如何做到这一点,例如:它使用某种超空间连续体来自动并行化所需的任何东西,这样它就可以计算任何可计算问题的答案,无论它的时间复杂度和实际“逻辑步骤”的数量,都在一秒钟内。 / p>
然而,它只能在一秒钟内回答可计算的问题......所以我不是假定一台“不可能”的机器(至少我不这么认为)...例如,这台机器仍然不会能够解决停止问题。
这种机器的编程语言是什么样的?我所知道的所有编程语言目前都必须对“算法复杂性”做出一些让步......虽然删除了这个约束,但我希望我们所关心的只是编程语言的“表现力”。即它能够简明扼要地表达“可计算的问题”......
无论如何,为了一个充满希望的有趣讨论,将其打开为社区维基......
答案 0 :(得分:4)
SendMessage travelingSalesman "Just buy a ticket to the same city twice already. You'll spend much more money trying to solve this than you'll save by visiting Austin twice."
SendMessage travelingSalesman "Wait, they built what kind of computer? Nevermind."
答案 1 :(得分:4)
这不合逻辑。如果事物需要O(1)时间,那么即使在量子计算机上,进行n次也将花费O(n)时间。 “一切”都不可能花费O(1)时间。
例如:Grover's algorithm,在您所链接的问题的接受答案中提到的那个,花费O(n ^ 1/2)时间来查找n个项目的数据库中的元素。那不是O(1)。
答案 2 :(得分:3)
内存量或内存速度或处理器速度并未定义算法的时间和空间复杂性。基础数学就是这么做的。如果一切都可以在O(1)中计算,那么询问编程语言会是什么样子就像问如果pi为3并且所有平方根的结果都是整数,我们的计算器会是什么样子。这真的是不可能的,如果不是,它可能不太有用。
现在,问自己我们用无限的过程能力和无限记忆做什么可能是一个有用的练习。我们仍然需要处理算法的复杂性,但我们可能会以不同的方式工作。为此,我建议The Hundred-Year Language。
答案 3 :(得分:2)
它可能是一种haskell-ish语言。老实说,编写代码是一个梦想。你编写类型,类和函数的“规律”,然后让它们松散。它非常有趣,功能强大,您可以编写一些非常简洁优雅的代码。这就像一门艺术。
答案 4 :(得分:2)
请注意,即使暂停问题不可计算,“对于尺寸小于M的所有可能输入,这会在N个步骤中停止”!
因此,任何编程语言都将成为纯粹的规范。您需要做的就是准确指定函数的前置和后置条件,编译器可以实现最快的代码来实现您的规范。
此外,这会很快触发奇点。如果你能做近乎无限的计算,那么构建一个AI会容易得多 - 一旦你有一个任何效率,它就会问可计算的问题“如果我花了我的话,我将如何改进我的程序十亿年思考它?“......
答案 5 :(得分:1)
也许它看起来更像伪代码而不是“真正的”代码。毕竟,您不必再担心任何实现细节了,因为无论您采用哪种方式,它都足够快。
答案 6 :(得分:1)
你低估了O(1)。这意味着存在常数C> 0,使得计算问题的时间限于此C.
你忽略的是C的实际值可能很大,并且它可以(并且大部分)对于不同的算法是不同的。你可能有两种算法(或计算机 - 无关紧要)和O(1),但在一种情况下,这个C可能比另一种算法大十亿倍 - 那么后者将会慢得多,而且时间可能非常慢。
答案 7 :(得分:1)
可扩展性不再是问题。我们的AI比我们更聪明。 我们不需要再编程了,相反,AI会在我们自己意识到之前弄清楚我们的意图。
答案 8 :(得分:0)
SQL就是这样一种语言 - 你需要一些数据然后才能得到它。如果您不必担心db的详细实现细节,那么编程可能会很有趣。
答案 9 :(得分:0)
如果一切都在一秒钟内完成,那么大多数语言最终都会像这样,我称之为DWIM理论(我的意思是理论):
Just do what I said (without any bugs this time)
因为如果我们开发一台可以在一秒内完成所有计算的机器,那么我们可能会在那个阶段控制精神,至少是人工智能。
答案 10 :(得分:-1)
我不知道会出现什么样的新语言(我是一名物理学家,而不是计算机科学家),但我仍然会用Python编写我的程序。