while (1) {
if (1+1==2) {
print "Yes, you paid attention in Preschool!";
} else {
print "Wait... I thought 1+1=2";
}
}
En tant que développeur, nous devons tous utiliser des boucles très fréquemment. Nous savons que. Ce que je me demandais, c'est qui a pensé à l'idée d'avoir des boucles? Quelle langue a introduit les boucles? Quelle était la construction de la première boucle? Était-ce une while
boucle? Une for
boucle? etc?
repeat
invoquerait une autrerepeat
- vous ne finiriez jamais. Je pense que peut-être les femmes lisent les instructions de shampoing de cette façon, mais les hommes le lisent comme une itération et n'ont besoin que de quelques minutes pour se laver les cheveux.Réponses:
Comme l'ont noté mouviciel et Emilio Garavaglia , le concept est antérieur à l'informatique. Cependant, la première instance de boucle logicielle a été la boucle utilisée par Ada Lovelace pour calculer les nombres de Bernoulli , comme indiqué dans la note G de sa traduction de l' esquisse du moteur d'analyse inventé par Charles Babbage , de LF Menabrea . Menabrea a noté très tôt la capacité du moteur analytique à boucler en boucle:
Le mécanisme de bouclage du moteur analytique est directement hérité du métier à tisser mécanique de Joseph Marie Jacquard (1801), comme l'indique le mémoire de Menabrea:
Le métier à tisser de Jacquard est une application très précoce d'une boucle dans le contexte de la commande d'une machine pour produire une sortie répétée :
Le métier à tisser de Jacquard est également reconnu comme une forme très précoce d'un programme stocké :
Charles Babbage a également adapté la procédure de stockage de Jacquard dans le moteur d'analyse . La présence ou l'absence d'un trou transmettait une simple commande marche-arrêt à la machine:
Les branches conditionnelles du moteur analytique combinées aux boucles mécaniques inspirées par Jacquard et à la procédure de stockage sont extrêmement similaires (conceptuellement) à votre exemple, en particulier si nous ajoutons l’imprimante de Babbage au mélange, pour les
print "...";
pièces.Les boucles mécaniques sont bien antérieures au métier à tisser de Jacquard, le premier dispositif connu fonctionnant en boucle étant le mécanisme d'Anticythère (100 BCE), et si nous regardons plus loin dans l'histoire (et nous aventurons horriblement hors sujet), les cadrans solaires sont probablement les plus anciens mécanismes fabriqués par l'homme où la compréhension des boucles est évidente, en suivant bien sûr le motif de répétition des orbites du soleil et des autres corps stellaires.
Cependant, je pense que dans le contexte de l'informatique (et non de calcul ou autre chose), le moteur d'analyse et l'algorithme de calcul des nombres de Bernoulli d'Ada peuvent être crédités pour l'introduction de boucles, partageant au moins une partie du crédit avec le métier de Jacquard, ayant directement adapté le concept de il.
la source
Les boucles précèdent l'informatique. Vous pouvez les trouver en notation musicale dès le chant grégorien:
la source
Le concept de "refaire" est en quelque sorte "primitif" pour la perception humaine. Vous pouvez le dire à un enfant qui vient d’élaborer une compréhension minimale du langage naturel.
Dans les systèmes discrets, on trouve des boucles dans toutes les machines à états finis lorsque vous admettez que vous pouvez atteindre un état que vous avez déjà été .
La boucle la plus simple est le cycle entre deux états (une horloge). Etant donné qu'un nombre d'états plus élevé peut en résulter, chaque machine plus complexe est construite sur un "compteur" incrémenté par une horloge qui peut "sauter" sur certains drapeaux représentant certaines opérations combinatoires. C’est le cœur d’une machine Von Neumann sur laquelle est basé chaque ordinateur à microprocesseur.
Dans le code machine, un saut est codé
JP-Z-nnnn
(où Z est le drapeau de base qui détermine votre condition). Dans les langues de niveau supérieur, cela se traduit presque immédiatement enUne boucle n'est rien de plus qu'un point
goto
où l'étiquette x précède l'instruction goto elle-même.Toute autre formulation (pour, fait, tout, etc.) est juste un "sucre syntaxique" pour mieux domestiquer le goto sauvage dans les cas très fréquents de répétition jusqu'à ce que quelque chose se produise
la source
Le concept de bouclage est l’un des éléments qui distinguent un ordinateur complet d’une simple calculatrice. Si un système ne prend pas en charge la mise en boucle, il n'est pas complet et n'est donc pas un ordinateur.
La première conception complète de Turing était le moteur analytique de Babbage , qui devait donc avoir un concept de boucle. Cependant, il existe des systèmes qui fonctionnent en boucle mais qui ne sont pas complets (parce qu'ils omettent autre chose). Le travail de Babbage est probablement un bon point de départ.
la source
Supposons que vous parliez de langages de programmation informatiques modernes.
Algol60 a "POUR", "DO", "UNTIL" et "WHILE", donc c'était avant 1960.
Le musée du calcul rétro comprend quelques langues avant 1960.
Kvikkalkul , le langage des années 50 pour la programmation des sous-marins nucléaires suédois, n'a que le GOTO. (Cependant, le kvikkalkul est presque certainement un canular des années 90, pas un vrai langage historique.)
Plankalkül de Konrad Zuse est le premier que j'ai trouvé. Il a une construction "für".
la source
DO
boucles.Le travail de Liebniz et de Newton contient des algorithmes avec des constructions en boucle. Liebniz a construit une calculatrice mécanique et a spéculé (comme Lovelace l’a fait des années plus tard) sur une machine permettant d’effectuer des analyses plus sophistiquées. Ses notes sur ces idées sont sommaires, mais elles décrivent une logique structurée avec des boucles.
Cependant, l'idée de séquences de répétition et de comptage de boucles contrôlées, ainsi que ce que nous appellerions des boucles tandis que sont décrites dans le travail de l'homme pour qui les algorithmes sont nommés: Muhammad ibn Musa al-Khwarizmi du IXe siècle. Son deuxième livre, al-Kitab al-Mukhtasar fi hisab al-jabr wa'l-muqabala (Un Compendium sur le calcul par complément et équilibrant) était connu de Newton, Liebniz, Babout, Aventure, Aventure, .
Bien entendu, al-Khwarizmi s'est en partie fié aux Grecs de l'Antiquité. À un moment donné, nous reviendrons probablement à la version d'Adam et Eve qui dit «rincez, mousse, répétez».
Pour en savoir plus sur Al-Khwārizmī et son travail, voir:
http://www-groups.dcs.st-andrews.ac.uk/history/Mathematicians/Al-Khwarizmi.html
la source