Come hanno notato mouviciel ed Emilio Garavaglia , il concetto precede l'informatica. Tuttavia, la prima istanza di un ciclo software è stata il ciclo utilizzato da Ada Lovelace per calcolare i numeri di Bernoulli , come descritto nella Nota G della sua traduzione dello Sketch of the Analytical Engine inventata da Charles Babbage , da LF Menabrea . La capacità del ciclo analitico del motore analitico è nota all'inizio di Menabrea:
A questo proposito, all'inizio della serie di operazioni che desideriamo eseguire, posizioniamo l'ago C sulla divisione 2, l'ago B sulla divisione 5 e l'ago A sulla divisione 9. Consentiamo il martello del quadrante C per colpire; colpirà due volte e allo stesso tempo l'ago B passerà su due divisioni. Quest'ultimo indicherà quindi il numero 7, che subentra al numero 5 nella colonna delle prime differenze. Se ora permettiamo al martello del quadrante B di colpire a sua volta, colpirà sette volte, durante il quale l'ago A avanzerà di sette divisioni; questi aggiunti ai nove già contrassegnati da esso daranno il numero 16, che è il numero quadrato consecutivo a 9. Se ora ricominciamo queste operazioni, iniziando con l'ago C, che deve sempre essere lasciato sulla divisione 2,
Il meccanismo di looping del motore analitico è direttamente ereditato dal telaio meccanico di Joseph Marie Jacquard (1801), come osservato nel libro di memorie di Menabrea:
Si chiederà ora come la macchina può di per sé, e senza ricorrere alla mano dell'uomo, assumere le disposizioni successive adatte alle operazioni. La soluzione di questo problema è stata presa dall'apparato di Jacquard, utilizzato per la fabbricazione di materiale broccato, nel modo seguente: -
Di solito si distinguono due specie di fili in tessuti; uno è il filo di ordito o longitudinale, l'altro il filo o filo trasversale, che viene convogliato dallo strumento chiamato navetta e che attraversa il filo o ordito longitudinale. Quando è necessario un materiale broccato, è necessario a sua volta impedire ad alcuni fili di attraversare la trama, e questo secondo una successione determinata dalla natura del disegno che deve essere riprodotto. In precedenza questo processo era lungo e difficile, ed era necessario che il lavoratore, prestando attenzione al disegno che doveva copiare, dovesse regolare lui stesso i movimenti che i fili dovevano prendere. Da qui nacque il prezzo elevato di questa descrizione delle cose, specialmente se filati di vari colori entrassero nel tessuto. Per semplificare questa fabbricazione, Jacquard ha ideato il piano di collegamento di ciascun gruppo di fili che dovevano agire insieme, con una leva distinta appartenente esclusivamente a quel gruppo. Tutte queste leve terminano in aste, che sono unite in un unico fascio, che di solito ha la forma di un parallelopipedo con una base rettangolare. Le aste sono cilindriche e sono separate l'una dall'altra da piccoli intervalli. Il processo di sollevamento dei fili viene così risolto in quello di spostare questi vari bracci a leva nell'ordine richiesto. Per fare ciò, viene preso un foglio rettangolare di cartone, di dimensioni leggermente maggiori rispetto a una sezione del fascio di bracci a leva. Se questo foglio viene applicato alla base del fascio e un movimento di avanzamento viene quindi comunicato al cartone, quest'ultimo si sposterà con esso tutte le aste del fascio, e di conseguenza i thread che sono collegati a ciascuno di essi. Ma se i pannelli di cartone, anziché essere semplici, fossero perforati con fori corrispondenti alle estremità delle leve che lo incontrano, allora, poiché ciascuna delle leve passerebbe attraverso il pannello di cartone durante il movimento di quest'ultimo, rimarrebbero tutti nel loro posti. Vediamo quindi che è facile determinare la posizione dei fori nel cartone, che, in un dato momento, deve esserci un certo numero di leve, e conseguentemente di pacchi di fili, sollevati, mentre gli altri rimangono dove sono erano. Supponendo che questo processo venga ripetuto successivamente secondo una legge indicata dal modello da eseguire, percepiamo che questo modello può essere riprodotto sul materiale. A tal fine dobbiamo semplicemente comporre una serie di carte secondo la legge richiesta, e disporli in ordine adeguato uno dopo l'altro; quindi, facendoli passare sopra una trave poligonale che è così connessa da trasformare una nuova faccia per ogni colpo della navetta, la quale faccia deve quindi essere spinta parallelamente a se stessa contro il fascio di bracci a leva, l'operazione di sollevamento del i thread verranno eseguiti regolarmente. Quindi vediamo che i tessuti broccati possono essere fabbricati con una precisione e una rapidità precedentemente difficili da ottenere.
Il telaio di Jacquard è un'applicazione molto precoce di un ciclo nel contesto dell'ordinazione di una macchina per produrre un risultato ripetuto :
L'idea alla base del telaio Jacquard era un sistema di schede perforate e ganci. Le carte erano molto spesse e avevano dei fori rettangolari. I ganci e gli aghi utilizzati nella tessitura erano guidati da questi fori nel cartone. Quando i ganci sono entrati in contatto con la carta sono stati tenuti fermi a meno che non incontrasse uno dei fori. Quindi il gancio è stato in grado di passare attraverso il foro con un ago inserendo un altro filo, formando così il motivo desiderato. Modelli complessi sono stati raggiunti disponendo molte carte disposte una dopo l'altra e / o usate ripetutamente.
Il telaio di Jacquard è anche riconosciuto come una forma molto antica di un programma memorizzato :
Se l'impulso dietro gran parte dello sviluppo delle macchine calcolatrici discusso finora era derivato dal calcolo numerico, la motivazione che ha portato alla prima forma di "programma memorizzato" doveva provenire da una fonte molto diversa: l'industria tessile. Abbiamo visto in precedenza che uno degli aspetti fondamentali dei sistemi computazionali è il concetto di rappresentazione delle informazioni e, sebbene non l'abbiamo fatto esplicitamente, l'applicazione di questa idea può essere individuata in tutti i manufatti che abbiamo esaminato finora: nello sviluppo di rappresentazioni scritte per valori numerici e parallelismi meccanici che ne sono derivati. Pertanto, l'allineamento dei ciottoli su un telaio di abaco, la giustapposizione di scale mobili su una regola di scorrimento e la configurazione di ingranaggi dentati sui dispositivi di Schickard, Pascal e Leibniz, sono tutti esempi di tecniche di rappresentazione che cercano di semplificare i complessi processi alla base delle attività aritmetiche. Vi sono, tuttavia, categorie di informazioni e loro rappresentazioni, oltre al numero su cui è possibile eseguire processi computazionali. La tecnologia di tessitura sviluppata da Joseph-Marie Jacquard nel 1801 illustra un esempio di tale categoria.
Charles Babbage ha anche adattato la procedura di memorizzazione di Jacquard nel motore analitico , la presenza o l'assenza di un foro comunicava un semplice comando on-off alla macchina:
Il motore analitico ha molte funzionalità essenziali presenti nel moderno computer digitale. Era programmabile usando le schede perforate, un'idea presa in prestito dal telaio Jacquard utilizzato per tessere modelli complessi nei tessuti. Il motore aveva un "negozio" in cui potevano essere conservati numeri e risultati intermedi e un "mulino" separato in cui veniva eseguita l'elaborazione aritmetica. Aveva un repertorio interno delle quattro funzioni aritmetiche e poteva eseguire la moltiplicazione e la divisione diretta. Era anche in grado di funzioni per le quali abbiamo nomi moderni: diramazione condizionale, looping (iterazione), microprogrammazione, elaborazione parallela, iterazione, latching, polling e modulazione di impulsi, tra gli altri, sebbene Babbage non abbia mai usato questi termini. Aveva una varietà di uscite tra cui stampa cartacea, schede perforate,
I rami condizionali del motore analitico combinati con i circuiti meccanici ispirati a Jacquard e la procedura di conservazione sono spaventosamente simili (concettualmente) al tuo esempio, specialmente se aggiungiamo la stampante di Babbage alla miscela, per le print "...";
parti.
Ovviamente i circuiti meccanici precedono il telaio di Jacquard, il primo dispositivo noto a funzionare in modo circolare è il meccanismo Antikythera (100 a.C.), e se guardiamo ancora più avanti nella storia (e ci avventuriamo in modo orribile fuori tema), le meridiane sono probabilmente i più antichi meccanismi creati dall'uomo dove è evidente la comprensione dei cicli, seguendo ovviamente lo schema ripetitivo delle orbite del sole e di altri corpi stellari.
Tuttavia, penso che nel contesto dell'informatica (e non del calcolo o di altro), all'analitico algoritmo di calcolo dei numeri del motore analitico e di Bernoulli di Ada si possano attribuire dei loop, condividendo almeno parte del merito con il telaio di Jacquard, avendo direttamente adattato il concetto da esso.