Як зазначили Мувічієль та Еміліо Гаравалья , концепція передує обчислювальній техніці. Однак першим екземпляром програмного циклу стала петля Ада Лавлейса, яка використовується для обчислення чисел Бернуллі , як описано в примітці G її перекладу Ескіз аналітичного двигуна, винайденого Чарльзом Беббіджем , Л. Ф. Менабреа . Здатність Аналітичного двигуна до циклу відзначається Менабреєю рано:
Зрозумівши це, давайте на початку серії операцій, які ми бажаємо виконати, помістимо голку C на відділ 2, голку B на відділ 5 і голку A на відділ 9. Дозвольмо молоток циферблата C для удару; вона вдариться двічі, і в той же час голка В пройде через два відділи. В останньому тоді буде вказано число 7, яке введено число 5 у стовпчик перших відмінностей. Якщо ми дозволимо удару молотка циферблата B по черзі, він вдарить сім разів, під час якого голка А просуне сім відділів; ці додані до дев'яти вже позначених нею дадуть число 16, що є квадратним числом, послідовним 9. Якщо ми зараз розпочнемо ці операції, починаючи з голки C, яку завжди потрібно залишити на діленні 2,
Циклічний механізм аналітичного двигуна безпосередньо успадкований від механічного ткацького верстата Джозефа Марі Жаккарда (1801 р.), Як зазначається в мемуарі Менабрії:
Тепер буде запитано, як машина може сама по собі і, не звертаючись до руки людини, припустити наступні диспозиції, придатні до операцій. Вирішення цієї проблеми було взято з апарату Жаккарда, який використовується для виготовлення брокадованих матеріалів, таким чином:
У тканих виробах зазвичай розрізняють два види ниток; одна - це основна або поздовжня нитка, інша - ватяна або поперечна нитка, яка передається інструментом, що називається човником, і яка перетинає поздовжню нитку або основу. Коли потрібні брокатні речі, необхідно, в свою чергу, не допускати перетину певних ниток, і це відповідно до послідовності, яка визначається характером конструкції, яка має бути відтворена. Раніше цей процес був тривалим і складним, і потрібно було, щоб робітник, відвідавши проект, який він повинен був скопіювати, повинен сам регулювати рухи, які повинні робити нитки. Звідси виникла висока ціна цього опису продуктів, особливо якщо нитки різних кольорів увійшли до тканини. Щоб спростити це виробництво, Жаккард розробив план з'єднання кожної групи ниток, які повинні діяти разом, з чітким важелем, що належить виключно до цієї групи. Усі ці важелі закінчуються стержнями, які об'єднані в один пучок, мають зазвичай форму паралелопіпеда з прямокутною основою. Стрижні циліндричні, і відокремлені один від одного невеликими інтервалами. Таким чином, процес підняття ниток вирішується на процес переміщення цих різних важелів у потрібному порядку. Для цього береться прямокутний лист картону, дещо більший за розміром, ніж переріз пучка важелів. Якщо цей лист нанести на основу пучка, а потім подати рух, що рухається, на картон, цей останній переміститься разом з ним усіми стрижнями пучка, і, отже, нитки, які пов'язані з кожною з них. Але якби картон, замість того, щоб бути простим, пробивали отворами, відповідні кінцівкам важелів, які його зустрічають, то, оскільки кожен із важелів під час руху останнього пройде через картон, всі вони залишаться в своїх місця. Таким чином, ми бачимо, що так легко визначити положення отворів у картоні, щоб у будь-який момент піднялася певна кількість важелів і, отже, посилки з ниток, а решта залишалася там, де вони були. Припустимо, що цей процес послідовно повторюється відповідно до закону, визначеного шаблоном, який слід виконати, ми вважаємо, що ця модель може бути відтворена на матеріалах. Для цього нам потрібно просто скласти серію карток відповідно до необхідного закону, і розташувати їх у відповідному порядку один за одним; потім, примушуючи їх проходити через багатокутний промінь, який так з’єднаний, щоб перетворити нове обличчя для кожного ходу човника, яке обличчя потім має бути приведене паралельно до себе до пучка важелів, операція підняття нитки будуть регулярно виконуватись. Таким чином, ми бачимо, що броковані тканини можуть виготовлятися з точністю та швидкістю, яку раніше було важко отримати.
Ткацький верстат Жаккарда - це дуже раннє застосування циклу в контексті замовлення машини для отримання повторного виходу :
Ідеєю жакардового ткацького верстата була система перфокарт та гачків. Картки були зроблені дуже товстими і мали в них пробиті прямокутні отвори. Цими отворами у картоні керувались гачки та голки, що використовувались у ткацтві. Коли гачки контактували з карткою, вони трималися нерухомими, якщо на них не траплявся один із пробитих отворів. Потім гачок зміг пройти через отвір голкою, вставивши ще одну нитку, формуючи таким чином потрібний візерунок. Складні структури були досягнуті, якщо багато карт розташовувались одна за одною та / або використовувались повторно.
Жаккардовий ткацький верстат також визнаний дуже ранньою формою збереженої програми :
Якщо поштовх, що стоїть за великою частиною розроблених досі обчислювальних машин, виникав із чисельних обчислень, мотивація, що призвела до найдавнішої форми "збереженої програми", повинна надходити з зовсім іншого джерела: текстильної промисловості. Раніше ми бачили, що одним із фундаментальних аспектів обчислювальних систем є концепція представлення інформації, і, хоча ми цього не зробили прямо, чітко, застосування цієї ідеї можна виявити у всіх артефактах, які ми досліджували до цього часу: у розробці письмових уявлень про числові значення та механічні паралелі, що випливали з них. Таким чином, вирівнювання камінчиків на рамці абакуса, суміщення рухомих ваг на слайді-правилі та конфігурація зубчастих передач на пристроях Шикарда, Паскаля та Лейбніца, - це всі приклади зображувальних прийомів, які прагнуть спростити складні процеси, що лежать в основі арифметичних завдань. Однак існують категорії інформації та їх уявлення, крім кількості, за якою можна виконувати обчислювальні процеси. Технологія ткацтва, розроблена Джозефом-Марі Жакардом у 1801 році, ілюструє один приклад такої категорії.
Чарльз Беббідж також адаптував процедуру зберігання Жаккарда в аналітичному двигуні , наявність або відсутність отвору передала машині просту команду відключення:
Аналітичний двигун має безліч суттєвих особливостей, які можна знайти в сучасному цифровому комп'ютері. Це було програмовано за допомогою перфокарт, ідея, запозичена із жакардового ткацького верстата, що використовується для плетіння складних візерунків з текстилю. Двигун мав "Магазин", де можна було б проводити номери та проміжні результати, і окремий "Млин", де проводилася обробка арифметики. Він мав внутрішній репертуар із чотирьох арифметичних функцій і міг виконувати пряме множення та ділення. Він також міг виконувати функції, для яких у нас є сучасні назви: умовне розгалуження, циклічне повторення (ітерація), мікропрограмування, паралельна обробка, ітерація, фіксація, опитування та формування імпульсу, серед інших, хоча Беббідж ніколи не використовував ці терміни. Він мав найрізноманітніші виходи, включаючи друк на паперовій копії, перфокарти,
Умовні гілки Analytical Engine у поєднанні з механічними шлейфами, натхненими жаккардом і процедурою зберігання, є неприємно схожими (концептуально) на ваш приклад, особливо якщо ми додаємо принтер Babbage до суміші, для print "...";
деталей.
Очевидно, механічні петлі передували ткацькому верстату Жаккарда, першим відомим пристроєм, який працював у петельному режимі, був механізм Антікітера (100 р. До н.е.), і якщо ми ще більше заглянемо в історію (і ризикуємо жахливо від теми), сонячні годинники , мабуть, є найстаршими механізмами, створеними людиною там, де зрозуміле розуміння петель, слідуючи, звичайно, за повторюваною схемою орбіт сонця та інших зоряних тіл.
Однак я думаю, що в контексті обчислень (а не обчислення чи чогось іншого) алгоритм обчислення чисел Бернуллі в аналітичному двигуні та Ада може бути зарахований за введення циклів, поділивши принаймні частину кредитів із ткацьким верстатом Жакарда, безпосередньо адаптувавши концепцію з це.