正如mouviciel和Emilio Garavaglia指出的那样,该概念早于计算。然而,一审软件循环是循环阿达洛夫莱斯用于计算伯努利数,如在注摹她的翻译由查尔斯·巴贝奇发明了分析机的草图,通过LF Menabrea。Menabrea在早期就指出了分析引擎的循环能力:
可以理解,让我们在要执行的一系列操作的开始时,将针头C放在分区2上,将针头B放在分区5上,将针头A放在分区9上。拨盘C的锤击;它将击中两次,同时针B将越过两格。然后,后者将指示数字7,该数字将在第一差的列中继数字5之后。如果我们现在允许拨盘B的锤子敲打,它将敲打七次,在此期间,指针A前进七格;这些加到已经标记的9上将得到数字16,它是连续的9的平方数。如果我们现在重新开始这些操作,则从总是保留在除法2处的针C开始。
分析引擎的循环机制直接继承自Joseph Marie Jacquard的 机械织机(1801),如Menabrea的回忆录所述:
现在将询问机器如何能够自身而无需依靠人的手来承担适合于操作的连续布置。该问题的解决方案是通过以下方式从提花设备制造的,该设备用于制造锦缎产品:
编织物通常区分两种线。一种是经线或纵向线,另一种是纬线或横向线,由称为穿梭装置的仪器传送,并与纵向线或经线交叉。当需要织锦缎的东西时,有必要依次防止某些线穿过纬线,并且这要根据由要复制的设计的性质决定的顺序来进行。以前,此过程是漫长且困难的,并且有必要使工人通过遵循他要仿制的设计,自己来调节螺纹的运动。因此引起了这种材料描述的高昂价格,尤其是当各种颜色的线进入织物时。为了简化制造过程,提花制定了计划,将要一起使用的每组线程连接在一起,并有一个专门属于该组的独特杠杆。所有这些杠杆都以杆的形式终止,杆成一束,通常呈平行四边形,带有一个矩形底。杆是圆柱形的,并且彼此隔开很小的间隔。因此,抬高螺纹的过程被分解为以必要的顺序移动这些各种杠杆臂的过程。为此,采用矩形的粘贴板,其尺寸比杠杆臂束的一部分大一些。如果将这张纸贴到捆束的底部,然后将前进的动作传递给粘贴板,则粘贴板将与捆束的所有杆一起移动,因此,与它们每个连接的线程。但是,如果粘贴板(不是平整的)上开有对应于与之相接的杠杆末端的孔,则由于每个杠杆在粘贴板的运动过程中都会穿过粘贴板,因此它们都将保留在其内部。的地方。因此,我们发现,很容易确定粘贴板上的孔的位置,即在任何给定的时刻,都应有一定数量的杠杆,因此会提起线束,其余的保持在它们固定的位置是。假设根据要执行的模式所指示的定律连续重复此过程,我们认为该模式可以在素材上重现。为此,我们只需要根据所需的法律组成一系列卡片,并以适当的顺序依次排列它们;然后,通过使它们越过一个多角形梁,该多角形梁被连接成在航天飞机的每次行程中都转动一个新面,然后该面应平行于自身而被推向杠杆臂束,抬起线程将定期执行。因此,我们看到锦缎组织可以以前难以获得的精度和速度制造。
提花织机是在命令机器产生重复输出的上下文中循环的非常早期的应用:
提花织机背后的想法是打孔卡和挂钩系统。这些卡非常厚,并在其上打了矩形孔。编织中使用的钩针是通过纸板上的这些孔引导的。当卡钩与卡钩接触时,除非卡钩遇到穿孔之一,否则它们将保持静止。然后,钩子可以用插入另一根线的针穿过该孔,从而形成所需的图案。通过将许多卡一张一张接一张地排列和/或重复使用,可以实现复杂的图案。
提花织机也被认为是存储程序的早期形式:
如果到目前为止讨论的计算机发展的主要动力来自于数值计算,那么导致最早的“存储程序”形式的动力就来自一个截然不同的来源:纺织工业。前面我们已经看到,计算系统的基本方面之一是表示信息的概念,尽管我们尚未明确进行表示,但在迄今为止所研究的所有伪像中,都可以看出该思想的应用:在开发数值的书面表示形式以及由此产生的机械上的相似之处。因此,卵石在算盘框架上的对齐,滑动尺上运动刻度的并置以及Schickard,Pascal和Leibniz装置上的齿轮齿构造,都是代表性技术的示例,这些技术试图简化算术任务背后的复杂过程。但是,除了可以执行计算处理的编号以外,还有信息的类别及其表示。Joseph-Marie Jacquard在1801年开发的织造技术就是这种类型的一个例子。
查尔斯·巴贝奇(Charles Babbage)还将提花机的存储过程调整为分析引擎,有无孔将简单的开关命令传达给了机器:
分析引擎具有现代数字计算机中发现的许多基本功能。它可以使用打孔卡进行编程,这是从提花织机借来的想法,用于在纺织品上编织复杂的图案。该引擎有一个“存储”,可以保存数字和中间结果,还有一个单独的“磨”,用于执行算术处理。它具有四个算术函数的内部库,并且可以执行直接乘法和除法。它还具有我们以其现代名称命名的功能:条件分支,循环(迭代),微编程,并行处理,迭代,锁存,轮询和脉冲整形等,尽管巴贝奇在任何地方都没有使用这些术语。它具有多种输出,包括硬拷贝打印输出,打孔卡,
Analytical Engine的条件分支与Jacquard启发的机械循环和存储过程相结合,在概念上(与概念上)极为相似,尤其是在零件中添加Babbage打印机的情况下print "...";
。
显然,机械循环早于提花织机,最早已知的以循环方式工作的装置是Antikythera机制(公元前100年),如果我们进一步研究历史(并且冒险地脱离话题),日di可能是最古老的人造机制在对环的理解很明显的地方,当然要遵循太阳和其他恒星体轨道的重复模式。
但是我认为,在计算(而不是计算或其他任何东西)的情况下,分析引擎和Ada的Bernoulli数计算算法可归因于引入循环,并与Jacquard的织机共享了至少一些功劳,并直接从它。