Как отметили Мувичиэль и Эмилио Гаравалья , концепция предшествует компьютерным вычислениям. Тем не менее, первым экземпляром программного цикла был цикл Ада Лавлейс, использованный для вычисления чисел Бернулли , как описано в примечании G ее перевода « Эскиза аналитического механизма, изобретенного Чарльзом Бэббиджем » Л. Ф. Менабреа . Способность Аналитического Механизма к циклу уже отмечена Менабреа:
Понятно, что в начале серии операций, которые мы хотим выполнить, поместите иглу C в деление 2, иглу B в деление 5 и иглу A в деление 9. Позвольте нам молот циферблата С ударить; он ударит дважды, и в то же время стрелка B пройдет через два деления. Затем последний укажет число 7, которое следует за номером 5 в столбце первых различий. Если теперь мы позволим молотку циферблата B ударить в свою очередь, он ударит семь раз, в течение которого стрелка A продвинется на семь делений; эти числа, добавленные к уже отмеченным девяткам, дадут число 16, представляющее собой квадратное число, следующее за 9. Если мы сейчас возобновим эти операции, начиная с стрелки C, которую всегда следует оставлять в делении 2,
Механизм зацикливания Аналитического двигателя непосредственно унаследован от механического ткацкого станка Джозефа Мари Жаккарда (1801), как отмечено в мемуарах Менабреа:
Теперь будет задан вопрос, как машина может сама по себе и, не прибегая к помощи человека, принять последовательные решения, подходящие для операций. Решение этой проблемы было взято из жаккардового аппарата, используемого для изготовления парчовых изделий, следующим образом:
Два вида нитей обычно различают в тканых материалах; одна представляет собой основную или продольную нить, другая - поперечную или поперечную нить, которая передается инструментом, называемым челноком, и пересекает продольную нить или основание. Когда требуются вещи из парчи, необходимо, в свою очередь, не допускать пересечения определенных нитей определенными нитями, и это в соответствии с последовательностью, которая определяется характером конструкции, которая должна быть воспроизведена. Раньше этот процесс был длительным и сложным, и было необходимо, чтобы рабочий, следя за дизайном, который он должен был скопировать, сам регулировал движения, которые должны были выполнять нити. Отсюда и дороговизна этого описания материалов, особенно если в ткань вошли нити разных цветов. Чтобы упростить это производство, Жаккард разработал план соединения каждой группы нитей, которые должны были действовать вместе, с отдельным рычагом, принадлежащим исключительно этой группе. Все эти рычаги оканчиваются стержнями, которые объединены в один пучок, обычно в форме параллелепипеда с прямоугольным основанием. Стержни имеют цилиндрическую форму и отделены друг от друга небольшими интервалами. Таким образом, процесс поднятия нитей сводится к перемещению этих различных рычагов в необходимом порядке. Для этого берется прямоугольный лист картона, несколько большего размера, чем участок пучка рычагов. Если этот лист будет применен к основанию связки, и затем передаточное движение будет сообщаться к монтажному щиту, этот последний будет перемещать вместе с ним все стержни связки, и, следовательно, темы, которые связаны с каждым из них. Но если бы картон, вместо того, чтобы быть простым, был пробит отверстиями, соответствующими конечностям рычагов, которые встречают его, тогда, так как каждый из рычагов проходил бы через картон во время движения последнего, они все оставались бы в их мест. Таким образом, мы видим, что так легко определить положение отверстий в картоне, что в любой данный момент должно быть определенное количество рычагов и, следовательно, участков нитей, поднятых, а остальные остаются там, где они мы. Предположим, что этот процесс последовательно повторяется в соответствии с законом, указанным в шаблоне, который должен быть выполнен, мы понимаем, что этот шаблон может быть воспроизведен на материале. Для этого нам нужно просто составить серию карточек в соответствии с требованиями закона, и расположите их в подходящем порядке один за другим; затем, заставляя их проходить через многоугольную балку, которая соединена таким образом, чтобы при каждом ударе челнока поворачивать новую грань, эта грань затем должна быть прижата параллельно себе к пачке рычажных рычагов, операция подъема темы будут регулярно выполняться. Таким образом, мы видим, что парчовые ткани могут быть изготовлены с точностью и скоростью, которые раньше было трудно получить.
Жаккардовый ткацкий станок - это очень раннее применение цикла в контексте заказа машины для получения повторного вывода :
Идея жаккардового станка заключалась в системе перфокарт и крючков. Карты были сделаны очень толстыми, и в них были пробиты прямоугольные отверстия. Крючки и иголки, используемые при плетении, направлялись этими отверстиями в картоне. Когда крючки соприкасались с картой, они оставались неподвижными, если только они не сталкивались с одним из пробитых отверстий. Затем крючок мог проходить через отверстие с помощью иглы, вставляя другую нить, образуя тем самым нужный рисунок. Сложные шаблоны были достигнуты благодаря тому, что многие карты располагались одна за другой и / или использовались многократно.
Жаккардовый ткацкий станок также считается очень ранней формой хранимой программы :
Если стимул, стоящий за большой частью разработки вычислительных машин, о которой говорилось до сих пор, возник из численных вычислений, мотивация, которая привела к самой ранней форме «хранимой программы», должна была исходить из совершенно другого источника: текстильной промышленности. Ранее мы видели, что одним из фундаментальных аспектов вычислительных систем является концепция представления информации, и, хотя мы не сделали этого явно, применение этой идеи можно обнаружить во всех артефактах, которые мы исследовали до сих пор: в развитии письменных представлений для числовых значений и механических параллелей, которые возникли из них. Таким образом, выравнивание камешков на раме счёта, наложение движущихся весов на линейку скольжения и конфигурация зубчатых колес на устройствах Шикарда, Паскаля и Лейбница, Все примеры методов представления, которые стремятся упростить сложные процессы, лежащие в основе арифметических задач. Однако существуют категории информации и их представления, отличные от числа, для которого могут выполняться вычислительные процессы. Технология ткачества, разработанная Жозефом-Мари Жаккардом в 1801 году, иллюстрирует один из примеров такой категории.
Чарльз Бэббидж также адаптировал процедуру хранения Жаккарда в Аналитическом движке , наличие или отсутствие отверстия сообщало машине простую команду включения-выключения:
Аналитический движок имеет много важных функций, которые можно найти в современном цифровом компьютере. Его можно было программировать с помощью перфокарт - идея, заимствованная из жаккардового станка, использовалась для плетения сложных рисунков в текстиле. У двигателя был «Магазин», в котором могли храниться числа и промежуточные результаты, и отдельный «Мельница», где выполнялась арифметическая обработка. Он имел внутренний репертуар из четырех арифметических функций и мог выполнять прямое умножение и деление. Он также был способен выполнять функции, для которых у нас есть современные имена: условное ветвление, зацикливание (итерация), микропрограммирование, параллельная обработка, итерация, фиксация, опрос и формирование импульсов, среди прочего, хотя Бэббидж нигде не использовал эти термины. У него было множество выходов, включая распечатку, перфокарты,
Условные ветви Analytical Engine в сочетании с механическими петлями и процедурой хранения, вдохновленными Жаккардом, очень похожи (концептуально) на ваш пример, особенно если мы добавим принтер Бэббиджа в смесь для print "...";
деталей.
Очевидно, что механические петли предшествуют ткацкому станку Жаккарда, первое известное устройство, работающее по принципу петли, представляющее собой механизм Antikythera (100 г. до н.э.), и, если мы заглянем еще дальше в историю (и рискну ужасно не по теме), солнечные часы , вероятно, являются самыми старыми искусственными механизмами. где понимание петель очевидно, следуя, конечно, повторяющейся схеме орбит Солнца и других звездных тел.
Тем не менее, я думаю, что в контексте вычислений (а не вычислений или чего-либо еще), алгоритм Analytical Engine и алгоритм вычисления чисел Аду Бернулли могут быть зачтены для введения циклов, разделяя, по крайней мере, некоторую часть заслуг с жаккардовым станком, непосредственно адаптировав концепцию из Это.