来源丨转自 码农的荒岛求生(ID:escape-it)大家好,我是小风哥,今天给大家聊聊一个有趣的事实。
只要给定足够的时间以及内存,所有的计算设备,不管是大块头的超级计算机还是小小的嵌入式设备、也不管它有多贵或者有多便宜、运算速度有多快或者有多慢,它们能完成的事情是一样的。超级计算机能完成的事情,树莓派也能完成,你手里拿着的手机也能完成,只不过小型设备运算速度更慢一点,但是超级计算机并不能完成一些树莓派也搞不定的事情。这告诉我们一个有趣的事实,计算设备的差异仅仅存在于“配置”上,核数多运算速度就快,核数更多就是超级计算机,核数少主频低内存少,那么运算速度就慢些,不存在某段代码只能在超级计算机上运行而不能在嵌入式设备上运行的可能,只要把你的程序编译到对应的处理器平台上,它们都能很好的执行你编写的程序。你可能会问这是为什么呢?凭什么超级计算机能完成的事情嵌入式设备也能完成?图灵等价是说当某个系统完成的功能和图灵机一样时,那么我们就说该系统是图灵等价的。当某个系统至少能完成和图灵机一样的功能时,那么我们说该系统是图灵完备。如果某人声称自己的系统是图灵完备的其实是在说它的系统可以解决一切可计算问题。有趣的是,现代编程语言也都是图灵完备的,不存在某个可计算问题只能用A编程语言来解决而不能用B编程语言编来解决,差别仅仅在效率上或者所需要的代码行数等等,所以不要再争论无谓的“A语言就是比B语言好”这类没有意义的问题了,每个编程语言都有自己的应用场景,一个web开发者用C语言来写网页就会觉得C语言真垃圾,一个驱动开发者要用JavaScript来开发驱动更是根本几乎不可能的事情。在计算机还没有发明之前,人们想知道会不会存在这样一种机器,这种机器能解决他们手动计算的那些问题,但是这样的机器该怎样工作呢?又该怎样创造出来呢?天才的图灵提出了一种机器,这种机器有一条无限长的纸带,被分割成了一个个格子,每个格子都可以写上一个符号;一个符号表,该表中记录了所有纸带上可能会出现的符号;一个机械头,可以在纸带上来回移动;状态表,记录当前机器的状态;指令,规定特定情况下机器的行为。只要给定足够的时间,这台机器可以解决任何可计算问题。图灵首次向世人展示了该如何构建这样一台机器,这也是所有计算设备的鼻祖,当前的计算设备在计算能力上是一样的,这就解释了我们在本文开头提出的这个事实。