ein object auf die festplatte schreiben?
-
audacia schrieb:
...Der Unterschied zwischen Java und C++ ist hier lediglich, daß du in C++ den Code für die Abbildung eines Objektes selbst schreiben mußt, in Java hingegen nicht...
Wie ich schon schrob: 100% meine Meinung.
OT:
audacia schrieb:
...Punctum.
Eigentlich finde ich es unglaublich arrogant, wenn jemand nach seiner These die Diskussion für beendet erklärt .... auch, wenn sich das leider in INetforen so eingebürgert hat.
Aber ich gehe mal davon aus, dass Du das nicht böse meinst. PUNKT!
Gruß,
Simon2.
-
Simon2 schrieb:
[...]Nichtsdestotrotz ist C++-RTTI natürlich meilenweit hinter Java-Reflection zurück[...]
Dabei könnte das Leben deutlich einfacher sein, wenn RTTI wenigstens zum Teil plattformanabhängige Informationen liefern würde. Wenn
type_namez.B. immerscope::Tliefern würde. So wie es im Moment im Standard definiert ist, kann man es fast nicht gebrauchen.
-
@Simon2,
Verwechselst du nicht zwei Dinge?
Der Maschine nah <-> An die Maschine gebundenEine Sprache kann nahe an einer Maschine sein, ist aber nicht an eine Maschine gebunden.
Eine Sprache kann an eine Maschine gebunden sein, muss aber nicht nahe an der Maschine sein.Grüssli
-
Dravere schrieb:
@Simon2,
Verwechselst du nicht zwei Dinge?
Der Maschine nah <-> An die Maschine gebunden...Kann sein, dass da eine Differenzierung sinnvoll sein kann.
Allerdings habe ich (wenn ich mich recht entsinne) den Begriff der "Maschinennähe" gar nicht ins Spiel gebracht, sondern hahaha... und das auch nur aus der (richtigen aber in den falschen Zusammenhang gerückten) Wiki-Aussage, dass C++ maschinennahe Programmierung ermögliche.Ich habe nicht einmal behauptet, dass irgendeine Sprache an eine Maschine "gebunden" (im Sinne von "untrennbar eineindeutig") sei, sondern lediglich "verheiratet" ... meinte damit: Eng verknüpft.
Meine Kernaussage war: In Java gibt's ein ABI (für eine bestimmte Plattform) und es ist der Standardfall ... in C++ gibt's gar kein ABI.
Und: Mit ABI wird Reflection deutlich einfacher ... und mit beiden zusammen Serialisierung erst Recht.Gruß,
Simon2.
-
Simon2 schrieb:
Kann sein, dass da eine Differenzierung sinnvoll sein kann.
Allerdings habe ich (wenn ich mich recht entsinne) den Begriff der "Maschinennähe" gar nicht ins Spiel gebracht, sondern hahaha... und das auch nur aus der (richtigen aber in den falschen Zusammenhang gerückten) Wiki-Aussage, dass C++ maschinennahe Programmierung ermögliche.Nein, tntnet hat es getan und du hast ihm widersprochen (erste Seite):
Simon2 schrieb:
tntnet schrieb:
...C++ ist, wie bereits erwähnt näher an der Maschine mit allen seinen Vor- und Nachteilen. ...
Ich empfinde es genau anders herum: Während Java ganz eng mit seiner (virtuellen) Maschine verheiratet ist, ist C++ ein maschinenunabhängiger Sprachstandard. Deswegen kann die Objektpräsentation auf den unterschiedlichen Plattformen variieren und tut das auch.
Du hast das "näher an der Maschine" von tntnet mit gebunden, bzw. eng verheiratet, gleichgesetzt. Das ist meiner Meinung nach eine falsche Schlussfolgerung.
Grüssli
-
Simon2 schrieb:
hahaha. schrieb:
...Und C++ ist maschinennah, ...
http://de.wikipedia.org/w schrieb:
C++ ermöglicht sowohl die effiziente und maschinennahe Programmierung,...
...
Deine Aussage steht aber gar nicht im Wikipedia-Zitat.
Der link wurde abgeschnitten
http://de.wikipedia.org/wiki/C%2B%2BSimon2 schrieb:
Dravere schrieb:
@Simon2,
Verwechselst du nicht zwei Dinge?
Der Maschine nah <-> An die Maschine gebunden...Kann sein, dass da eine Differenzierung sinnvoll sein kann.
Allerdings habe ich (wenn ich mich recht entsinne) den Begriff der "Maschinennähe" gar nicht ins Spiel gebracht, sondern hahaha...So.
Simon2 schrieb:
tntnet schrieb:
...C++ ist, wie bereits erwähnt näher an der Maschine mit allen seinen Vor- und Nachteilen. ...
Ich empfinde es genau anders herum: ...
Dann hast du wohl gemeint, dass tntnet mit "näher an der Maschine" auch dein komisches "verheiratet" meint.
-
Man könnte fast meinen, ihr versteht euch absichtlich falsch

Ansonsten sehe ich's so wie Simon: Java basiert auf VM und Bytecode, C++ legt sich auf absolut nix fest, schwebt haltlos im Raum; womit Java enger verbunden ist mit der/einer Maschine.
-
hahaha. schrieb:
Simon2 schrieb:
hahaha. schrieb:
...Und C++ ist maschinennah, ...
http://de.wikipedia.org/w schrieb:
C++ ermöglicht sowohl die effiziente und maschinennahe Programmierung,...
...
Deine Aussage steht aber gar nicht im Wikipedia-Zitat.
Der link wurde abgeschnitten
http://de.wikipedia.org/wiki/C%2B%2B...ähhh ... ich hatte schon den richtigen Artikel.
Da steht lediglich, dass C++ "maschinennahe Programmierung ermöglicht", nicht, dass C++ maschinennah sei.Dravere schrieb:
...
...Du hast das "näher an der Maschine" von tntnet mit gebunden, bzw. eng verheiratet, gleichgesetzt. Das ist meiner Meinung nach eine falsche Schlussfolgerung....Das stimmt.
Da hatte ich tntnet wohl mißverstanden.
Nichtdestotrotz sehe ich
- weder, wo C++ maschinennah
- noch, wo es auf eine Plattform festgelegt sei.
(wie gesagt: Der gesamte Standard abstrahiert extrem von der Laufzeitplattform)
Was ich schon sehe ist, dass C++ Sprachmittel bereitstellt, die sich gut in (bestimmte) native Plattformmechanismen übersetzen lassen ... und deshalb das Schreiben "maschinennaher Programme" (will sagen: Programmstruktur im Source ähnelt der Ablaufstruktur innerhalb der Plattform) ermöglicht.
So wie C++ auch templates zur Verfügung stellt, aber deshalb noch keine "template-Sprache ist".Bei Java sehe ich da eine engere Verbindung.
Nicht zuletzt spiegelt sogar der Bytecode (= der "Maschinencode") immer noch sehr viel von der Sourcestruktur wieder (was ja Reflection vereinfacht) ...Badestrand schrieb:
Man könnte fast meinen, ihr versteht euch absichtlich falsch ...
Den Eindruck habe ich langsam auch.
Badestrand schrieb:
...
Ansonsten sehe ich's so wie Simon: Java basiert auf VM und Bytecode, C++ legt sich auf absolut nix fest, schwebt haltlos im Raum; womit Java enger verbunden ist mit der/einer Maschine.Danke.

Gruß,
Simon2.
-
danke jungs für eure hilfe, habs hinbekommen, maps sind jetzt abspeicher- und ladbar

den letzten satz hätte ich wohl weglassen sollen, wenn ich mir ansehen was für eine diskusion ich hier losgetreten habe^^ich hätte aber nochmal eine kurze frage:
ich habe eine klasse CollitionManager, und eine klasse Ball. der Ball ruft aus dem collition manager die methodeint testCollision(Ball *ball);auf. also muss ich in beiden klassen die jeweils andere klasse includieren. nur bekomm ich dann eine endlos schleife beim compilieren oder wenn ich #define & #ifndef benutzen bekomme ich bei einer der klassen fehlermeldung dass ball oder der manager nicht definiert ist!
also mach ich da irgendwas beim includieren falsch (was ich denke) oder geht das mit c so nicht?
den vergleich mit java spar ich mir dieses mal

-
Simon2 schrieb:
Nichtdestotrotz sehe ich
- weder, wo C++ maschinennahstd::cout<<sizeof(int)Gibt dir z.B. unterschiedliche Werte auf unterschiedlichen Maschinen (16/32 Bit) aus. Wenn das nicht maschinennah ist, was ist es dann?
- noch, wo es auf eine Plattform festgelegt sei.
Hab ich nie behauptet.
-
hahaha. schrieb:
std::cout<<sizeof(int)[/cpp]Gibt dir z.B. unterschiedliche Werte auf unterschiedlichen Maschinen (16/32 Bit) aus. Wenn das nicht maschinennah ist, was ist es dann?
Ganz einfach unspezifiziert. Auf meiner 64-Bit-Maschine hier könnte ich auch einen C++-Compiler oder -Interpreten laufen lassen, in welchem ein "int" 100 Bit groß ist.
-
@Vischnu,
http://en.wikipedia.org/wiki/Forward_declarationUnd natürlich das Auftrennen in Header und Source Files

Simon2 schrieb:
- weder, wo C++ maschinennah
Maschinen nah ist es insofern, da du mit "rohem" Speicher herumspielen kannst. Programmiert wird mit sehr Maschinen nahen Konstrukten. Zeiger, Funktionszeiger, Bytestrukturen usw. du kommst mit allen diesen Sachen in C++ deutlich stärker in Berührung, als es zum Beispiel in Java der Fall ist, da Java dir solchen Zugriff nicht gewährt. Java hält dich von der Maschine fern

Allerdings ja, ich würde mit dir auch übereinstimmen, dass Java extrem abhängig von einer Maschine ist.
Simon2 schrieb:
- noch, wo es auf eine Plattform festgelegt sei.
Das hat niemand gesagt, dass hast du irgendwie geschlussfolgert

Grüssli
-
Dravere schrieb:
Allerdings ja, ich würde mit dir auch übereinstimmen, dass Java extrem abhängig von einer Maschine ist.
Naja, Java wurde ja nicht so entwickelt, dass es zur VM passt, sondern die VMs werden entwickelt, dass sie zu Java passen.
-
hahaha. schrieb:
Dravere schrieb:
Allerdings ja, ich würde mit dir auch übereinstimmen, dass Java extrem abhängig von einer Maschine ist.
Naja, Java wurde ja nicht so entwickelt, dass es zur VM passt, sondern die VMs werden entwickelt, dass sie zu Java passen.
Ich habe mit dem Satz ja auch nichts in diese Richtung ausgesagt. Alles was ich gesagt habe ist, dass die Sprache Java abhängig von der Maschine ist. Also dass es eine Maschine braucht, welche den Java-Bytecode versteht.
C++ dagegen ist so aufgebaut, dass sich die Sprache nach der Maschine richtet, auf welcher der Code kompiliert wird. Daher ist C++ unabhängig von der Maschine.Grüssli
-
Dravere schrieb:
hahaha. schrieb:
Dravere schrieb:
Allerdings ja, ich würde mit dir auch übereinstimmen, dass Java extrem abhängig von einer Maschine ist.
Naja, Java wurde ja nicht so entwickelt, dass es zur VM passt, sondern die VMs werden entwickelt, dass sie zu Java passen.
Ich habe mit dem Satz ja auch nichts in diese Richtung ausgesagt. Alles was ich gesagt habe ist, dass die Sprache Java abhängig von der Maschine ist. Also dass es eine Maschine braucht, welche den Java-Bytecode versteht.
C++ dagegen ist so aufgebaut, dass sich die Sprache nach der Maschine richtet, auf welcher der Code kompiliert wird. Daher ist C++ unabhängig von der Maschine.Das Wort abhängig macht aber dann nicht wirklich Sinn. Oder ist C++ vom Compiler abhängig, weil es einen Compiler braucht der C++ versteht?
-
Simon2 schrieb:
audacia schrieb:
...Punctum.
Eigentlich finde ich es unglaublich arrogant, wenn jemand nach seiner These die Diskussion für beendet erklärt .... auch, wenn sich das leider in INetforen so eingebürgert hat.
Es war eher im Sinne von "das ist alles" gemeint. Für Diskussionen bin ich meistens offen

Edit: Typographie
-
hahaha. schrieb:
Das Wort abhängig macht aber dann nicht wirklich Sinn. Oder ist C++ vom Compiler abhängig, weil es einen Compiler braucht der C++ versteht?
C++ ist sogar EXTREM vom Kompiler abhängig, da vieles in C++ implementation defined ist. Erzeugter Maschinencode unterscheidet sich von Kompiler zu Kompiler auch bei gleicher Platform.
Und noch was:
Java-Bytecode ist ungleich Javasprache. Es ist also unsinnig, wenn du die Java-Bytecode Abhängigkeit damit probierst zu vergleichen, dass ein Kompiler C++ verstehen muss.Vielleicht nochmals zusammengefasst:
Java ist abhängig von der Maschine, weil die Maschine den Java-Bytecode verstehen muss. Wenn die Maschine keinen Java-Bytecode versteht, dann kannst du mit Java einpacken.
C++ dagegen ist nicht abhängig von der Maschine, weil je nach Maschine anderer Maschinencode erstellt werden kann. Dafür ist C++ abhängig vom Kompiler, da ein entsprechender Kompiler für die Maschine vorhanden sein muss und der Output sich von Kompiler zu Kompiler stark unterscheiden kann.Grüssli
-
hahaha. schrieb:
...
Simon2 schrieb:
- noch, wo es auf eine Plattform festgelegt sei.
Hab ich nie behauptet.
Ich weiß - und auch ich habe nie behauptet, dass Du es behauptet hättest. :p (Ich hoffe, das Spielchen geht jetzt nicht endlos weiter)
Der Begriff der "Plattformfestgelegtheit" ist in der Diskussion zwischen mir und Dravere aufgekommen.hahaha. schrieb:
...
Simon2 schrieb:
Nichtdestotrotz sehe ich
- weder, wo C++ maschinennahstd::cout<<sizeof(int)Gibt dir z.B. unterschiedliche Werte auf unterschiedlichen Maschinen (16/32 Bit) aus. Wenn das nicht maschinennah ist, was ist es dann?
Das ist dieselbe Form von "Maschinennähe", wie dass mein Javaprogramm auf einem 4GHz-Rechner schneller läuft als auf einem 1GHz-Rechner.
Wie ich schon sagte: Ja, es gibt im C++-Sprachmittel, die das Schreiben maschinennaher Programme erleichtern ... das macht aber IMHO die Aussage "C++ ist eine maschinennahe Sprache" nicht richtiger.
... und meine Aussage (um die es eigentlich geht) "C++ ist maschinenunabhängig(er als Java) definiert" nicht "falscher".In c++ ist NICHTS festgelegt, was auf eine konkrete Repräsentation abhebt: Kein Zeichensatz, keine Bytelänge, keine Adresslänge, kein Alignment/Padding, kein function-call-Mechanismus, kein Format für RTTI-Informationen, ...
das Einzige, was mir einfällt, sind marginale Altlasten in <ctime>.
Die Aussage ".. das Ergebnis wird für die zugrundeliegende Maschine passend umgesetzt" bedeutet für mich gerade KEINE Bindung an eine Maschine - weder im Sinne von "Programmstruktur ähnelt technischer Ablaufstruktur" noch im Sinne von "läuft nur auf einer Maschine".Gruß,
Simon2.
-
Dravere schrieb:
...
Allerdings ja, ich würde mit dir auch übereinstimmen, dass Java extrem abhängig von einer Maschine ist...Genau das meine ich ja auch die ganze Zeit ... nur dass ich das anscheinend bis auf Badestrand niemandem vermitteln konnte.
Dravere schrieb:
...
Simon2 schrieb:
- noch, wo es auf eine Plattform festgelegt sei.
Das hat niemand gesagt, dass hast du irgendwie geschlussfolgert

Grüssli
Das habe ich auch nicht geschlussfolgert, sondern in den Zusammenhang Deiner Differenzierung gestellt:
Dravere schrieb:
@Simon2,
Verwechselst du nicht zwei Dinge?
Der Maschine nah <-> An die Maschine gebunden
...Meine Aussage: Egal, um welche Eigenschaft es geht (maschinennah, maschinengebunden) -> ich sehe sie nicht bei C++.
Aber ich kann mich ja einfach mal festlegen: In meinen Augen ist Java deutlich maschinengebundener (an die JavaVM) als C++ (an irgendeine Plattform).
Und sie auch ist maschinennäher (an der JavaVM), weil die Sourcestruktur in jedem Fall sehr der Binärstruktur der Maschine (JavaVM) ähnelt ... wo es in C++ lediglich ermöglicht wird.Natürlich ist es nicht möglich, mit Java auf die "darunterliegende Maschine" (x86) zuzugreifen ... ebensowenig man mit C++ EPROMS brennen kann.

Ich glaube, die grundlegende Uneinigkeit besteht darin, welche Maschine man meint, wenn man von Maschinennähe und -abhängigkeit redet.
Gruß,
Simon2.
-
audacia schrieb:
..Es war eher im Sinne von "das ist alles" gemeint. Für Diskussionen bin ich meistens offen :)...
So habe ich es von Dir auch verstanden, weil ich Dich hier aus Diskussionen kenne....
... ich kenne nur leider (eher in anderen Foren) Andere, die das tatsächlich so wie von mir skizziert verwenden (auch gerne als "FAKT" o.ä. tituliert).Danke nochmal für die Klarstellung.
Gruß,
Simon2.