Tigerass 2.0 schrieb:
Um zu verstehen, wie C++ funktioniert, musst du erstmal C verstehen.
Um zu verstehen, wie C funktioniert, würde ich mir Assembler anschauen.
Fonce schrieb:
Um zu verstehen wie C++ funktioniert brauchst du kein C. Das sind verschiedene Sprachen, wann lernen die Leute das endlich?
ich glaube, Tigerass meinte weniger, dass man erst C lernen müsse um C++ lernen zu können. Er meinte wohl eher dass C++ intern auf C-artige Konstrukte zurückgreift. Z.B. werden (oder wurden zumindest in früheren Umsetzungen von C++) Methoden so realisiert, dass es im Grunde einfache C-Funktionen sind, die versteckt als ersten Parameter immer einen this-Pointer auf die aktuelle Klasseninstanz übergeben bekommen.
Um in C++ programmieren zu können, muss man solche Sachen nicht wissen, das ist richtig (es sei denn, man verwendet Methodenpointer in seinem Code, da benötigt man das schon eher). Aber wenn man verstehen will, wie C++ funktioniert, also was da eigentlich im Hintergrund geschieht, ist so etwas durchaus nützlich.
@Threadtitel: Eine Antwort auf diese Frage, die nicht allzu ausufernd werden soll, würde ich folgendermaßen formulieren. Wie ein Computer funktioniert, macht man sich am besten anhand eines Schichtenmodells klar. Auf der untersten Schicht befinden bei heutigen Computern integrierte Schaltkreise aus Halbleiterbauelementen, so ziemlich das wichtigste Bauelement ist dabei der Transistor. Aus mehreren solcher Bauelemente baut man dann einen Schaltkreis, ein sog. Gatter zusammen, das eine logische Funktion, wie AND, OR, oder NOT, realisiert. Ein AND-Gatter hat z.B. zwei Eingänge und einen Ausgang, wobei an jedem der Eingänge ein Spannungssignal anliegt, das für eine 1 oder eine 0 steht. Stehen beide Eingänge auf 1, liefert der Ausgang als Ausgangssignal das Spannungssignal für 1, ansonsten das für 0.
Auf der nächsthöheren Schicht baut man dann aus mehreren solcher Gatter ein Rechenwerk zusammen, das z.B. zwei 64-Bit-Integer-Zahlen addieren, multiplizieren oder eine Reihe anderer mathematischer oder logischer Operationen darauf anwenden kann. Aus einem oder mehreren solcher Rechenwerke und anderen Komponenten, z.B. Registern zum Speichern der an das Rechenwerk weiterzugebenden Operanden (Zahlen, die zu verrechnen sind) oder zum Zwischenspeichern der vom Rechenwerk angelieferten Rechenergebnisse, kann man dann eine CPU zusammenbauen.
Eine CPU alleine macht allerdings noch keinen Computer aus, man braucht daneben zumindest noch einen Arbeitsspeicher (RAM), der heutzutage ebenfalls aus Halbleiterbauelementen besteht, die man ähnlich wie die Gatter in der CPU zu Schaltkreisen zum Speichern einzelner Bits, den Speicherzellen, zusammenschaltet. Bei SRAM, das meist bei Cache-Speichern zum Einsatz kommt, sind solcher Speicherzellen als Flip-Flops realisiert, bei DRAM mittels eines Kondensators. Üblicherweise sind solche Speicherzellen in einem Speicherchip in Matritzen aus Zeilen (Rows und Spalten (Columns) angeordnet. Mit den Spalten sind dann z.B. so Sachen die CAS Latency Time (kurz CL) verknüpft, wobei das C für Column steht.
Damit CPU und Speicher miteinander kommunizieren können, ist außerdem ein Bus erforderlich, über den beide Daten austauschen können. Bei Computern auf der Basis von x86-Prozessoren waren hier sogar gleich zwei Busse am Werk, einmal der Front Side Bus (FSB), der die CPU mit der Northbridge des Mainboards verband, und dann noch der Speicherbus, für die Verbindung Northbridge - Arbeitsspeicher. Neben CPU und Arbeitsspeicher braucht es dann außerdem noch Ein-/Ausgabe-Ports, damit der Computer mit der Außenwelt interagieren kann. Sollen die Daten auch nach einem Abschalten des Computers noch verfügbar sein, braucht es außerdem noch einen nicht-flüchtigen Speicher, etwa in Form einer Festplatte.
Das sind wohlgemerkt erst mal nur ein paar Grundprinzipien, moderne Computer sind i.d.R. noch weitaus komplizierter in ihrem Aufbau.