可以机械地实施任何程序吗?


13

是否可以构建一个单一目的的(非图灵完整的)机械实现,例如Microsoft Word?是否可以实现诸如迭代器,一阶函数以及整个编程技术之类的东西?齿轮和其他机械零件能否代表数据结构甚至是程序对象?在某种程度上,这是否有必要建造一台通用的图灵等效机器,或者每个功能,变量等都可以以飞轮和/或齿轮,棘轮的形式拥有自己独特的机械结构,那么您呢?总之,我想知道标准计算机上的任何给定软件是否可以编译为机械蓝图。


我认为,运行Microsoft Word的某些程序甚至不需要在Turing Machine上运行,因为除了主事件循环外,应该知道Word中的所有过程都可以(证明)终止(除非有bug ofc)。
Realz Slaw 2012年


1
如果这是可能的(似乎是可能的),那么应该有可能创建一个非图灵完整的计算机,充当编译器,并从源代码为其他计算机创建蓝图。本身可能会或可能不会完成的机器。
尼克·约翰逊

@Realz Slaw:如果您包含I / O,VBA宏或扩展名,则不会,例如,我怀疑Word如果您向它提供无限的Word文档会抱怨。可能达到极限的底层操作系统。
reinierpost

@reinierpost,但是每个例程不需要完全完成;他们要么可以证明终止,要么可以证明不是。即,如果您向它提供了无限的文档,则证明它不会终止。我的观点是,大多数程序,我们让没有使用图灵完整的语言,因为我们可以把它限制在程序,我们可以证明终止,给定的非无限的数据,以及如果给予无限的数据不会终止; 如果您可以执行此操作,则停止问题就不会出现问题。TLDR;如果您无法证明例程是否终止,那么您就是一个糟糕的程序员。
Realz Slaw 2015年

Answers:


23

是的。这是您的操作方式:

基本上,您可以编译任何喜欢的电路程序。例如,请参见Dan Ghica及其合作者在“合成几何”上的工作,其中展示了如何将程序编译为电路。

  1. Dan R. Ghica。综合的几何:VLSI设计的结构化方法
  2. Dan R. Ghica,Alex Smith。综合II的几何:从游戏到对延迟不敏感的电路
  3. Dan R. Ghica,Alex Smith。综合的几何III:通过类型推断进行资源管理。
  4. Dan R. Ghica,Alex Smith,Satnam Singh。合成的几何IV:将仿射递归编译为静态硬件。

然后,电路又在工程中反复出现。约翰·贝兹(John Baez)在“本周的发现288-296”中给出了概念的大类表,并建立了很多联系。因此,如果您确实愿意,Dan的编译器生成的电路图可以实例化为机械或液压系统!

╔══════════════════════════════════════════════════════════════╗
║                 displacement  flow      momentum     effort  ║
╠══════════════════════════════════════════════════════════════╣
║ Mechanics      position      velocity  momentum     force    ║
║ (translation)                                                ║
║                                                              ║
║ Mechanics      angle         angular   angular      torque   ║
║ (rotation)                   velocity  momentum              ║
║                                                              ║
║ Electronics    charge        current   flux         voltage  ║
║                                        linkage               ║
║                                                              ║
║ Hydraulics     volume        flow      pressure     pressure ║
║                                        momentum              ║
╚══════════════════════════════════════════════════════════════╝
  1. http://math.ucr.edu/home/baez/week288.html
  2. http://math.ucr.edu/home/baez/week289.html
  3. http://math.ucr.edu/home/baez/week290.html
  4. http://math.ucr.edu/home/baez/week291.html
  5. http://math.ucr.edu/home/baez/week294.html
  6. http://math.ucr.edu/home/baez/week296.html

12
结论:软件专利毫无意义。
安德拉斯·萨拉蒙

1
对于我几乎不知道该怎么问的问题的绝佳答案。感谢您添加图表!
亚历克斯·奈

5

一个实际的例子是由波士顿科学博物馆的Tinker Toys制造的Tic Tac Toe计算机(最初是由一群MIT学生制造的)。当然,这比Microsoft Word简单得多。

是《科学美国人》(Scientific American)1989年的一篇文章,对此进行了描述。

也有一些图灵机是由乐高积木制成的(这有点作弊,因为它使用电力(实际上是一台计算机)进行运动,但我认为可以对设计进行修改以避免这种情况)废金属等等。


我很喜欢这篇文章和乐高玩具,谢谢。
亚历克斯·奈

1

为了具体解决您在硬件中创建编辑器的示例,有一台早期的实验计算机被制造出来,该计算机完全以硬件方式实现了操作系统和编辑器。后来,编辑器被软件取代,从而大大减少了所需的硬件。在有关计算机体系结构和历史的书中对此进行了描述。不幸的是,我忘记了名称,也没有找到可以追踪原始来源的关键字。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.