Der Webserver wandelt den PHP Code nicht in C++ Code um und kompiliert ihn dann, der Webserver hat eine ganz eigene Art PHP zu kompilieren, PHP wird nicht in C++ umgewandelt sondern wurde lediglich auf dem selben Prinzip wie C++ entwickelt (Syntax, Funktionalität, etc.)
Warum der Computer weiß was zu tun ist?
Dafür muss man natürlich wissen wie ein Prozessor arbeitet.
Der Prozessor an sich kann eigentlich nur: addieren, subtrahieren und verketten (Bytes aneinander hängen).
Der Maschinencode heißt übrigens nicht Maschinencode weil irgend ein Entwickler das witzig fand, der Maschinencode ist ein für Maschinen lesbarer Code.
Ein Prozessor kann kein "a" lesen, aber der Prozessor kennt die Zustände: Strom / kein Strom (1 / 0).
Nehmen wir jetzt das a, das a, genauer das A.
Das große A hat eine nDezimalwert von 65 (das kleine a 97), im Maschinencode sieht 65 so aus: 1000001, siehe dazu folgende Tabelle:
- Code: Alles auswählen
1 = 64 +
0 = 32 +
0 = 16 +
0 = 8 +
0 = 4 +
0 = 2 +
1 = 1 =
64 + 1 = 65
Ein Prozessor arbeitet aber mit Bytes, jede 1 oder 0 in unserem neuen String ist ein Bit, ein Byte fasst 8 Bit und man käme insgesamt auf einen Dezimalwert von 255, ein Byte kann also 255 Zeichen auffassen (Achtung, heutzutage sprechen wir allerdings von 32 Bit Systemen, das heißt 4294967295 Zeichen, oder sogar 64 Bit: Zahl nicht so wirklich nachvollziehbar, wer hier eine PHP Aufgabe möchte: erstelle eine Schleife welche nach oben genannten Muster mit 64 Bit den Dezimalwert ausrechnet).
Da unser String (1000001) nur 7 Stellen hat, addieren wir für unser 8 Bit System noch eine 0 davor: 01000001
Der Prozessor bekommt nun diesen Code (noch nicht ganz). Wie auf dem Arbeitsamt kommt der Code erst mal ins Wartezimmer, hier ist das der RAM-Speicher (Random Access Memory, Speicher zum lesen, schreiben, überschreiben und löschen).
Von dort aus kommt er ins 1. Büro des Arbeitsamtes, dem Hauptteil des Prozessors, dieser liest den Code und weiß nun indirekt das es ein A werden soll, jedoch weiß der Prozessor nicht was damit zu tun ist, also spuckt er Fehler aus (meist ein Alert Fenster in dem der Speicherplatz auf dem RAM-Speicher benannt wird welcher Fehlerhaften Code sendet).
Kommt nun aber eine ganze Feriengruppe aus dem RAM-Speicher in den Prozessor (ein Willkürliches Beispiel: 00000010, 00110011, 00000001 [es stimmt zwarn icht unbedingt aber diese Kette an Bytes soll jetzt mal 2 + 1 heißen]).
Der Sachbearbeiter auf dem Arbeitsamt (der Prozessor) sieht jetzt 2 Zahlen und einen Operator (das +) und weiß somit: Diese Gruppe schicke ich in die Abteilung für + Rechnung, also macht sich die Reisegruppe auf in den 3. Stock auf das Addieramt, dort angekommen wird ein Sachbearbeiter herausfinden das 2 + 1 = 3 ist und wird mit einem neuen Operator (z.B. =) die Reisegruppe zuückschicken, diese sähe dann z.B. so aus: (00000000, 11110000, 00000011 [ = 3 ]).
Nun wird die Reisegruppe wieder zum 1. Sachbearbeiter zurückgeschickt, der sieht: ein ausgebbares Ergebnis und setzt die Gruppe in den
Rückgabebus (interessant: eine Gruppe würde man in einen Bus setzen, zum verreisen, ein Ergebnis der CPU setzt man in den Return Bus, heißt auch so..).
Der Bus fährt zurück zum Programm und wird dort wieder in für das Programm lesbaren Code verwandelt (dieses mal eben von 00000011 zu 3).
So grob lässt sich das erklären
