Ich bin gespannt auf die Geburt des Compilers. Wie begann die Programmierung? Haben die Leute zuerst Hardware gebaut, die einen bestimmten Satz von Befehlen erkannt hat, oder haben die Leute eine Sprache definiert und dann Hardware darum gebaut? Und in einem verwandten Punkt, was war die erste Programmiersprache?
programming-languages
history
compiler
assembly
David Cowden
quelle
quelle
Antworten:
Dies hat eine sehr klare Antwort: Quellcode stand an erster Stelle - mit großem Abstand.
Bevor wir die technischen Details erläutern, geben wir einen kurzen Überblick:
Die ersten Programmiersprachen wurden alle von Hand in Maschinensprache oder Assembler übersetzt . Die Idee, diese Übersetzung mithilfe einer Software (entweder über einen Compiler oder einen Evaluator) zu automatisieren, kam immer später und war alles andere als intuitiv.
Betrachten Sie dieses Zitat des Wikipedia-Artikels über FORTRAN, das die Zurückhaltung der Compiler zeigt:
=> Als der FORTRAN-Compiler auf den Markt kam (1957), programmierten die Leute bereits glücklich sowohl in Assemblersprache als auch in FORTRAN.
Ähnliches gilt für LISP (von Hackers & Painters ):
Auch hier geht der Quellcode (in LISP) nicht nur dem Interpreter voraus, der letztere war im ersteren nicht einmal implizit enthalten.
Diese Entwicklungen sind jedoch relativ spät. Auch wenn man Charles Babbages Analytical Engine und Ada Lovelaces erstes Programm nicht berücksichtigt , gab es im 20. Jahrhundert Programmiersprachen , die älter waren als Compiler:
Konrad Zuses Plankalkül und das von Alonzo Church eingeführte mathematische Konstrukt der λ-Rechnung . Beide sind zweifellos formal festgelegte Programmiersprachen, hatten aber zu diesem Zeitpunkt noch keinen Compiler.
Um dies ins rechte Licht zu rücken, stammt die λ-Rechnung aus den 1930er Jahren, und Plankalkül wurde um 1945 entwickelt. Der erste FORTRAN-Compiler erschien dagegen 1957 (aber wieder drei Jahre nach der Spezifikation von FORTRAN).
quelle
Die Programmierung begann damit, dass Leute Maschinencode direkt in den Speicher, auf Lochkarten und Papierstreifen oder sogar auf Kurzschlussverbindungen auf einem Patchpanel schrieben. Ob die Hardware auf die Bedürfnisse der Software zugeschnitten ist oder umgekehrt, ist schwer zu sagen. Mit Sicherheit der früheste Entwurf für einen vollständig programmierbaren Computer, die Analytical Engine von Babbage , das erste dokumentierte Programm von Ada Lovelace .
In Bezug auf die erste Programmiersprache habe ich argumentiert, dass dies die Maschinensprache von Babbages Analyse-Engine war (aus der Frage: Was war die erste Programmiersprache, die für Computer geschrieben wurde? ).
Um die Frage in Ihrer Frage Titel zu beantworten, da Assemblersprache ist Quellcode und Assemblersprachen vorge Datum hochsprachiger , die in Assembler kompiliert werden können, kam der Quellcode zuerst.
Auch ein Compiler war noch nie nötig , nur praktisch.
Es ist durchaus möglich, Software direkt in den Speicher zu schreiben, wenn Sie die entsprechenden Op-Code- Tabellen gespeichert haben . Tatsächlich mussten Benutzer bei einigen frühen Computern den Bootstrap-Code über die Hex-Tastatur auf der Vorderseite eingeben , um sie zum Booten zu bringen. Sie konnten jedoch einen beliebigen Code eingeben, der ausgeführt werden sollte.
Mit zunehmender Komplexität von CPUs wird dies zwar schwieriger, aber ein einfacher Befehlssatz wie 6809 oder Z80 (der alle seltsamen indizierten Modi ignoriert) ist auch ohne Assembler relativ einfach zu programmieren , geschweige denn mit einem Compiler aus einer höheren Sprache.
Wenn Babbages Analyse-Engine jemals gebaut worden wäre, hätte es bestimmt einen Steampunk-Mel gegeben , der optimierte Programme direkt auf Webkarten geschrieben hätte.
quelle
movl $0, -20(%rbp)
, während Maschinencode istC745EC00000000
, und es ist diese (na ja, so etwas wie es) , die zuerst von Hand eingegeben wurden oder aus Papierband lesen. Zur Frage , ob Maschinencode zählt als Quellcode , bin ich geneigt zu sagen , „was auch immer Ihr Boot schwimmt“. Wenn Sie es manuell einschalten, dann würde ich sagen, dass es zählt.Der Compiler war der Erste . Es wurde direkt in Maschinencode geschrieben, da die Quelle ohne einen Compiler nicht kompiliert werden konnte.
Wikipedia-Artikel wie dieser über Computersprachen können die meisten Fragen beantworten. Wenn nicht, wählen Sie einfach eines der Bücher von Tanenbaum, wie Structured Computer Organization , das mehr Fragen beantworten kann, als Sie selbst stellen können :)
Genauer kann ich nichts sagen, denn Ihre Frage ist zu weit gefasst.
quelle
Interpreter existierten vor Compilern, so dass Quellcode vor Compilern existierte.
Es gibt einige sehr interessante Beiträge über die Geschichte der Rechen hier . Der Quellcode für den FORTRAN II-Compiler sollte verfügbar sein, diese Links sind jedoch fehlerhaft.
Dieses Papier aus dem Jahr 1954 beschreibt den Whirlwhind-Interpreter.
quelle
Diese Frage steht im Mittelpunkt unserer semantischen Interpretation von 'Quellcode'. Wenn wir es als "textbasierte Computeranweisungen, die kompiliert werden" definieren, dann stand vermutlich ein Compiler an erster Stelle.
Ich bin eher geneigt, mich für etwas Autoritäreres zu entscheiden, wie zum Beispiel Mark Harmans Artikel "Warum Quellcode-Analyse und -Manipulation immer wichtig sein werden", der auf der 10. Internationalen IEEE-Arbeitskonferenz über Quellcode-Analyse und -Manipulation vorgestellt wurde
Und ich denke, Ihre Antwort ist implizit in dieser Definition enthalten - der Quellcode war mit Sicherheit der erste.
quelle
Die Algorithmen wurden auf Papier aussortiert, dann wurden die Alus physikalisch / mechanisch verdrahtet (bewegliche Drähte). Um das Programm zu ändern, bewegen Sie die Drähte und laufen erneut.
Später wurde die Assemblersprache auf Papier sortiert, von Hand in Maschinencode übersetzt und dann mit Hilfe von Schaltern usw. in den RAM eingespeist. Oder Lochkarten usw. Schließlich können Sie einen Assembler erstellen, dann können Sie in Assembler keinen Maschinencode programmieren, dann können Sie einen Compiler erstellen. Schließlich können Sie diesen Compiler booten. Und mache neue Sprachen und neue Compiler, etc.
Die erste Sprache war keine Sprache, später war die erste Sprache Assemblersprache. Für jeden Prozessor ist die erste Sprache die Assemblersprache (abgeleitet vom Maschinencode). Der Befehlssatz wird zuerst entworfen, dann die Hardware, um ihn dann zu implementieren, Assembler, dann Compiler.
quelle