Wie wurde das erste Computerprogramm erstellt? [Duplikat]

8

Diese Frage hat mich schon immer gestört. Um ein Programm zu kompilieren, benötigen Sie einen Compiler, der auch eine Art Programm ist, also was kompiliert der Compiler? Jemand hat mir gesagt, dass die ersten Compiler in Assembler- oder Maschinencode geschrieben wurden. Aber darüber nachzudenken, ist immer noch nicht die ganze Geschichte. Wie kommt der Maschinencode schließlich von der Festplatte zum RAM zur CPU ohne Betriebssystem und Treiber? Die Fahrer mussten irgendwie programmiert worden sein.

Ich weiß, dass die sehr frühen Computer Schalter hatten und Ihnen erlaubten, den Schalter umzudrehen, um Bits anzuzeigen. Ich frage mich, wie der Sprung von Switches zu einer Möglichkeit gemacht wurde, die CPU dazu zu bringen, Maschinencode zu lesen, ohne ein Computerprogramm zu benötigen, um dies zu tun.

    
Community 23.01.2011, 07:35
quelle

3 Antworten

9

Die kurze Antwort: Die ersten Programme wurden sorgfältig in rohen Maschinencode geschrieben, und alles wurde von dort aus aufgebaut.

Die Idee wird Bootstrapping genannt. Angenommen, Sie haben eine nackte Maschine mit einem Prozessor, etwas Flash-Speicher und einer Festplatte. In der Regel wird der Prozessor beim Einschalten konfiguriert, um ein einfaches Betriebssystem namens bootloader von einem festen Standort in einem nichtflüchtigen Speicher (z. B. CMOS oder Flash) zu laden. Dieses Betriebssystem ist außerordentlich einfach und hat gerade genug Funktionalität, um den Computer auf den Punkt auf der Festplatte zu richten, auf dem sich das echte Betriebssystem befindet. Dieses Betriebssystem kann dann immer mehr Geräte einschalten und immer kompliziertere Programme laden, bis schließlich das ganze Betriebssystem läuft.

Aber was ist dieser Bootloader geschrieben? Ursprünglich wurden diese in rohen Maschinencode geschrieben und in die Maschine fest codiert. Die Programme, die es ausführen würde, wären ebenfalls in Maschinencode geschrieben, was unglaublich langsam und mühsam wäre. Irgendwann schrieb jemand den ersten einfachen Assembler im Maschinencode. Sobald Sie diesen Assembler haben, können Sie Programme in Assembly schreiben, einschließlich des Assemblers selbst. Sobald Sie einen einfachen Assembler haben, müssen Sie nie wieder Maschinencode schreiben. Sie können einfach den Assembler in Assembly schreiben!

Ab diesem Punkt können Sie komplexere Programmiersprachen erstellen, indem Sie zuerst den Compiler mit vorhandenen Werkzeugen (zum Beispiel dem Assembler) schreiben, um gerade genug Funktionalität zur Verfügung zu haben, damit der Compiler grundlegende Programmierung durchführen kann. Sie verwenden dann diesen Compiler, um einen Compiler für die Programmiersprache selbst zu schreiben, und verwenden denselben Trick, um sich von Ihrer früheren Arbeit zu entfernen, um etwas Größeres und Kühles zu erhalten. Diese Technik wird heute noch verwendet - die meisten Compiler werden in der Sprache geschrieben, in die sie kompiliert werden.

Zusammenfassend muss gesagt werden, dass alles zu einem schrecklichen Zeitpunkt in der Vergangenheit von Hand erledigt werden musste, aber dank der harten Arbeit der Leute, die das getan haben, können wir etwas aufbauen, was bereits da ist.

    
templatetypedef 23.01.2011, 07:42
quelle
4

In den frühen Tagen der Mikrocomputerindustrie mussten wir mühsam den Maschinencode direkt über Kippschalter eingeben. Dies war sehr ähnlich zu der Art und Weise, wie die ersten nicht-hartcodierten Programme ausgeführt wurden.

Einzelheiten hierzu finden Sie hier frühe Altair-Maschinen. Im Grunde haben Sie die binären Schalter für die Adresse und Daten gesetzt und dann einen Befehlsschalter verwendet, um diesen in den Speicher zu schreiben. Ja, ein Byte nach dem anderen. Wir waren damals "echte Männer": -)

Von der gleichen Seite ist der detaillierte Prozess verwendet, um ein Beispielprogramm einzugeben.

Sie sollten auch daran denken, dass Sie Programme für Maschine X nicht wirklich auf Maschine X kompilieren müssen. Sobald die Maschinen ein bestimmtes Niveau an Komplexität erreicht haben (z. B. könnte Maschine Y) Wenn Sie in Programmen ohne Umschalten arbeiten, können Sie Cross-Assembler und Cross-Compiler verwenden, um die Maschinensprache für Maschine X zu erstellen.

Dann brauchten Sie nur einen Weg, um das binäre Bild dieses Programms in Maschine X zu bekommen. Es war nicht immer einfach, aber es war ein sichtbarer Anblick, einfacher als Umschalten.

    
paxdiablo 23.01.2011 08:22
quelle
0

Wenn Sie einmal einen Computer benutzt haben, haben Sie den Maschinencode als Binärcode eingegeben. Die Leute waren es leid, das zu tun, also machten sie ein Programm (mit Maschinencode), das Assembly lesen würde. Nach einer Weile merkten sie, dass das Schreiben in der Versammlung angesaugt war, also benutzten sie die Assembly, um Hochsprachen wie FORTRAN zu erstellen.

Um die vollständige Geschichte zu erhalten, melde dich am College an und nimm ein paar CS- oder COMPE-Kurse.

    
regality 23.01.2011 07:42
quelle

Tags und Links