Shell Linux



  • Wenn man einmal C Code hat, wird der kompiliert interpretiert*, daraus wird dann Assembler.
    Aus dem Assembler werden dann 1 und 0en (manche System können auch direkt den C Code in 1 und 0en konvertieren, das ist ein bisschen effizienter). Die Hardware bastelt sich dann daraus die Schaltkreise und gibt da Strom drauf. Wie genau der letzte Schritt abläuft, weiß ich aber auch nicht.

    *Ist schließlich eine Skriptsprache und Skriptsprachen werden interpretiert, nicht kompiliert.



  • Lass dich nicht veräppeln. Nur die C-Shell (/bin/csh bzw. /bin/tcsh) geht über den C-Compiler.



  • blurry333 schrieb:

    Und der C-Code wird anschließend as usual kompiliert ?

    Nein, dafür braucht man einen einen speziellen Compiler, nämlich einen Interpreter-Compiler.



  • So, uns hat gerade jemanden angerufen, ich glaube blurby333 war sein Name, wir sollen hier ein paar Leute abholen und zur Psychiatrie bringen. Wen sollen wir mitnehmen?



  • Den Anrufer.


  • Mod

    Nathan schrieb:

    SeppJ schrieb:

    Aber das war noch einfach. Schon eine kleine Änderung lässt den Interpreter schwitzen:

    #!/bin/bash
    
    for i in 1 2 4 5   # 3 weg gelassen
    do
      echo $i
    done
    

    Da muss der auf einmal ganz schon komplizierte for-Schleifen für basteln! Ich weiß spontan selber nicht, was der daraus genau macht, aber die Übersetzung solcher Konstrukte macht den Großteil dessen aus, was das Programmieren einer Shell so kompliziert macht.

    Daraus wird dann C++11:

    #include <iostream>
    
    int main()
    {
    	for (auto i : {1, 2, 4, 5})
    		std::cout << i;
    }
    

    Das wiederum wird dann erst in C++03 und C++98 übersetzt, bevor der normale ShellScript Übersetzungsvorgang anfangen kann.
    Deshalb ist es einfacher eine if Abfrage einzubauen, die bei i == 3 nichts macht.
    Denn sobald etwas nicht mehr einfach in der einen Sprache auszudrücken ist, wird in eine andere gewechselt.

    Aber ist das dann nicht eine Endlosschleife, weil das C++ doch erst einmal über Shellscript zu C gemacht wird. Wenn jetzt aber das Shellscript wieder zu C++ wird... 😮

    Wie wird diese Art von Schleife eigentlich ausgeführt? Ich meine, irgendwo drin muss doch diese ganze Übersetzungskaskade ablaufen. Wie funktioniert das? Ist das der Linuxkernel? Kann man auch einen Computer ohne Kernel haben?



  • SeppJ schrieb:

    Wie wird diese Art von Schleife eigentlich ausgeführt?

    Der Assembler schreibt die Befehle immer wieder hintereinander, hast du gar nichts gelernt?



  • Wie kommt das eigentlich, dass ein Thread von blurry333 schon wieder soviel Aufmerksamkeit erhält?



  • Habt ihr noch nie was von Supercodes gehört?



  • Unter Windows sieht der Language-Stack übrigens so aus:

    Skriptsprache -> Python -> Lua -> Forth -> C -> Assembler -> Maschinensprache/Schaltungen -> VB.NET

    Das ist auch der Grund, warum Windows so unsicher ist, weil die extra für Windows hergestellten PC-Systeme ohne Maschineninstruktionen arbeiten. Wie Das möglich ist, ist bisher nicht eindeutig wissenschaftlich geklärt, es könnte aber, im Gegensatz zu Linux, mit dem Pikachu im inneren des Systems zusammenhängen. Aber keine Sorge, die NSA arbeitet an der Entschlüsslung dieser Technik.



  • [quote="SeppJ]Aber ist das dann nicht eine Endlosschleife[/quote]

    Nein, weil einfach eine If-Schleife verwendet wird. Die If-Schleife ist eine programmiertechnische Revolution, die dies möglich macht.



  • Nathan schrieb:

    Aber wie kommt das ganze Kupfer und Silizium in den PC, aus dem dann die Schaltkreiseinzelteile hergestellt werden? Post, so wie die Webseiten?

    Das wird temporär vom Kühlkörper benutzt. Deshalb können heutige Prozessoren auch komplexere Programme als früher interpretieren, weil aus den kleinen Kühlkörpern keine so komplexen Schaltkreise gebaut werden können. Der i486 kommt mit einem sehr kleinen Kühlkörper, deshalb laufen da so komplizierte Betriebssysteme wie z.B. Windows 7 nicht drauf. Dafür brauchst du eine moderne CPU mit großem Kühlkörper.


Anmelden zum Antworten