Je suis curieux de la naissance du compilateur. Comment la programmation a-t-elle commencé? Les gens ont-ils d'abord construit du matériel qui reconnaissait un certain ensemble de commandes, ou ont-ils défini un langage, puis construit du matériel autour de lui? Et sur une note connexe, quel a été le premier langage de programmation?
programming-languages
history
compiler
assembly
David Cowden
la source
la source
Réponses:
Cela a une réponse très claire, en fait: le code source est venu en premier - par une grande marge.
Avant de donner les détails techniques, un peu de recul:
Les premiers langages de programmation ont tous été traduits à la main en langage machine ou assembleur . L'idée d'utiliser un logiciel pour automatiser cette traduction (via un compilateur ou un évaluateur) est toujours venue plus tard et était loin d'être intuitive.
Considérez cette citation de l'article de Wikipedia sur FORTRAN qui illustre les réticences auxquelles les compilateurs ont dû faire face:
=> Au moment où le compilateur FORTRAN est arrivé sur le marché (1957), les gens programmaient déjà avec bonheur en langage assembleur et en FORTRAN.
Le cas était similaire pour LISP (de Hackers & Painters ):
Encore une fois, non seulement le code source (dans LISP) est antérieur à l'interpréteur, ce dernier n'était même pas implicite dans le premier.
Mais ces développements sont relativement tardifs. Même sans tenir compte du moteur analytique de Charles Babbage et du premier programme connexe d'Ada Lovelace , il y avait des langages de programmation au 20e siècle qui étaient antérieurs aux compilateurs:
Plankalkül de Konrad Zuse et la construction mathématique du λ-calcul introduite par Alonzo Church. Ces deux langages de programmation sont indubitablement spécifiés formellement, mais aucun n'avait de compilateur à l'époque.
Pour mettre cela en perspective, le λ-calcul date des années 1930 et Plankalkül a été développé vers 1945. En revanche, le premier compilateur FORTRAN est sorti en 1957 (mais encore trois ans après que FORTRAN ait été spécifié).
la source
La programmation a commencé avec des personnes écrivant le code machine directement dans la mémoire, sur des cartes perforées et du ruban de papier ou même en court-circuitant des liens sur un panneau de brassage. Il est difficile de dire si le matériel a été construit en fonction des besoins du logiciel ou vice versa. Certainement la conception la plus ancienne d'un ordinateur programmable complet , le moteur analytique de Babbage , antérieur au premier programme documenté d' Ada Lovelace .
Quant au premier langage de programmation, j'ai soutenu qu'il s'agissait du langage machine du moteur analytique de Babbage (d'après la question Quel a été le premier langage de programmation écrit pour les ordinateurs? )
Pour répondre à la question dans le titre de votre question, étant donné que le langage d'assemblage est du code source et que les langages d'assemblage sont antérieurs aux langages de haut niveau qui pourraient être compilés dans l'assembleur, le code source est venu en premier.
De plus, un compilateur n'a jamais été nécessaire , juste pratique.
Il est parfaitement possible d'écrire un logiciel directement dans la mémoire si vous avez mémorisé les tables de code op appropriées . En fait, certains premiers ordinateurs exigeaient que l'utilisateur saisisse le code d'amorçage sur le clavier hexadécimal du panneau avant pour les amorcer, mais vous pouviez taper n'importe quel code que vous vouliez et il serait exécuté.
Certes, à mesure que le processeur devient plus complexe, cela devient plus difficile, mais un jeu d'instructions simple comme 6809 ou Z80 (en ignorant tous les modes indexés étranges) est relativement facile à programmer même sans assembleur , sans parler d'un compilateur à partir d'un langage de haut niveau.
Si le moteur analytique de Babbage avait jamais été construit, je suis sûr qu'il y aurait eu un Steampunk Mel , écrivant des programmes optimisés directement sur des cartes métier.
la source
movl $0, -20(%rbp)
, alors que le code machine l' estC745EC00000000
, et c'est ce dernier (enfin, quelque chose comme ça) qui a d'abord été entré manuellement ou lu sur du papier. Quant à savoir si le code machine compte comme code source , j'ai tendance à dire "tout ce qui fait flotter votre bateau". Si vous l'activez manuellement, alors oui, je dirais que cela compte.Le compilateur était le premier . Il a été directement écrit en code machine, car la source ne pouvait pas être compilée sans compilateur.
Des articles de Wikipédia comme celui-ci sur les langages informatiques peuvent répondre à la plupart des questions. Sinon, choisissez simplement l'un des livres de Tanenbaum, comme Structured Computer Organization , qui peut répondre à plus de questions que vous ne pouvez même en poser :)
Je ne peux rien dire de plus précis, car votre question est trop large.
la source
Les interprètes existaient avant les compilateurs, donc le code source existait avant les compilateurs.
Il y a des documents très intéressants sur l'histoire de l' informatique ici . Le code source du compilateur FORTRAN II est censé être disponible, mais ces liens sont rompus.
Cet article , de 1954, décrit l'interprète Whirlwhind.
la source
Cette question pivote fortement sur notre interprétation sémantique du «code source». Si nous le définissons comme «des instructions informatiques basées sur du texte qui sont compilées», alors un compilateur est probablement venu en premier.
Je suis plus enclin à aller avec quelque chose de plus faisant autorité, comme le document de Mark Harman "Pourquoi l'analyse et la manipulation du code source sera toujours important" présenté à la dixième conférence de travail internationale de l'IEEE sur l'analyse et la manipulation du code source
Et je pense que votre réponse est implicite dans cette définition - le code source est certainement venu en premier.
la source
Les algorithmes ont été triés sur papier, puis les alus ont été câblés physiquement / mécaniquement (fils en mouvement). pour changer le programme, vous déplacez les fils et exécutez à nouveau.
Plus tard, le langage d'assemblage a été trié sur papier, traduit en code machine à la main, puis en utilisant des commutateurs, etc. pour l'introduire dans le bélier. Ou des cartes perforées, etc. Finalement, vous pouvez créer un assembleur, puis vous pouvez programmer en assembleur et non du code machine, puis vous pouvez créer un compilateur. Finalement, vous pouvez amorcer ce compilateur. Et faire de nouveaux langages et de nouveaux compilateurs, etc.
La première langue n'était pas une langue, plus tard la première langue était le langage d'assemblage. pour chaque processeur, la première langue est le langage d'assemblage (dérivé du code machine). Le jeu d'instructions est conçu d'abord puis le matériel pour l'implémenter puis l'assembleur, puis les compilateurs.
la source