ein object auf die festplatte schreiben?
-
@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.
-
@Simon2: Deine Definition von maschinennah ist mir noch nie begegnet. Hast du dazu noch irgendwelche Quellen außerhalb dieses Forums, (die sogar auch noch sagen das Java maschienennäher ist)?
Das Dravere schreibt ist das was auch ich unter maschinennah verstehe.Dravere schrieb:
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

Und das Java genau zu den JVMs passt, ist irgendwie logisch, weil die JVMs für Java geschrieben wurden.
-
hahaha. schrieb:
...Und das Java genau zu den JVMs passt, ist irgendwie logisch, weil die JVMs für Java geschrieben wurden.
Zu welchen Maschinen passt denn C++ Deiner Meinung nach?
Gruß,
Simon2.
-
Zu welchen Maschinen passt denn C++ Deiner Meinung nach?
hihi, streng genommen zu seiner Runtime ... also zur runtime die mit dem compiler mitgeliefert wurde. wobei es mehrere runtimes sein koennen (multithreaded, 64bit support ... etc) und es den spezialfall gibt, das die runtime in das binarie zugelinkt (statisch gelinkt) werden kann.
Oder Meinst du die Sprache an sich ?
die eigentliche Hirarchie ist doch :
C-Runtime(BS spezifisch) + C - Interface zum OS (WinApi, Posix ..)
C++ Runtime(Kompiler Spezifisch)
C++ BinaryAlso laeuft C++ eigentlich auch in Maschine quasi, oder ?
Gabs auch ned Java COmpiler ... also wo die Java binaries gleich mit ihrer runtime zusammen verpackt wurden ? waer aehnlich zum statisch gelinkten C++ Binary.
Wobei die C++ Runtime sicher viel weniger macht, und den Titel VM sicher ned verdient ^^
Ciao ...
-
RHBaum schrieb:
Zu welchen Maschinen passt denn C++ Deiner Meinung nach?
hihi, streng genommen zu seiner Runtime ...
int main() { return 3; }Welche Runtime?
RHBaum schrieb:
...Oder Meinst du die Sprache an sich ? ...
Ich spreche von der Sprache ... so wie hahaha..
Und zu der scheint ja seiner Meinung nach ganz selbstverständlich eine "Maschine zur Sprache" zu geben (natürlich ohne, dass die Sprache mit dieser Sprache "verheiratet" sei ...).Gruß,
Simon2.
-
Also ich meint nur von den abhaengigkeiten her bezogen ...
Der hauptunterschied sollt eh klar sein ... C++ kompiler erzeugen Maschinencode, der direkt auf der CPU laufen kann ...
Java BCode kann nur in der JVM laufen ...Somit stellen die runtimes (c++) nur gewisse Funktionalitaet und schnittstellen an externe sourcen bereit ...
Welche Runtime?
Ja zeig mir deine Compiler und linkereinstellungen den compiler, den nutzt ^^
Wie gross ist denn dein binary geworden ?
Soll das eigentlich nen C oder nen C++ Programm sein ? Uebersetzt das im C oder C++ Mode ?Und zu der scheint ja seiner Meinung nach ganz selbstverständlich eine "Maschine zur Sprache" zu geben (natürlich ohne, dass die Sprache mit dieser Sprache "verheiratet" sei ...).
Mit der Maschine meinst Du ... ?
IMHO so ganz unrecht hat er in der Konsequenz auch ned.
C und C++ ham standards. Um die Gegebenheiten eines BS / Kernels an die Standards anzupassen brauchst immer so was wie eine runtime. Oder was glaubst wer Dir Stdin Stdout ... FILE ... etc zur verfuegung stellt.
Fuer den User ist der Unterschied zwischen der VM und der Runtime gar ned so gross.... wenn man mal von der Performance und dem Handling(plattformabhaengigkeit) absieht.Ciao ...
-
RHBaum schrieb:
Der hauptunterschied sollt eh klar sein ... C++ kompiler erzeugen Maschinencode, der direkt auf der CPU laufen kann ...
Java BCode kann nur in der JVM laufen ...C++-Compiler könnten auch Bytecode erzeugen, Java-Bytecode kann direkt auf einem Prozessor laufen (*klick*, ist insofern auch "Maschinencode").
Der Unterschied ist imo eher, dass die Form des Java-Bytecodes vorgegeben ist, die Form des C++-Outputs nicht.
-
@Simon2: Das ist das Konzept von Java, dass es auf einer VM läuft. Das hat aber nichts mit maschinennah zu tun, oder wo ist die Quelle die maschinennah so beschreibt wie du? (Die Frage hast du oben geschickt überlesen.) Oder ist dein "verheiratet" jetzt doch wieder nicht maschinennah?
-
Uff ... Jetzt gehts wieder um den Wissenskampf. Ich hab die Seiten nur mal eben ganz schnell überflogen und ich denke ein Compiler passt net zu dem Thema Objekte. Da ich jetzt alles nur überflogen habe und nicht weiß ob er schon seine Antwort bzw. einen Link bekommen hab, kriegt er von mir auch nochmal was.
Ich denk mal, dass wonach du suchst, ist die Serialisation.
http://www.codesynthesis.com/products/xsde/c++/serializer/
http://www.osix.net/modules/article/?id=348
Ob das gute Beispiele sind, weiß ich nicht, aber der 1. Link sieht vielversprechend aus und ist der 1. Link in Google und kenne es nur aus C#.mfg
-
hihi, streng genommen zu seiner Runtime
Nö C++ gibts nicht nur hosted sondern auch freestanding. Bei letzterem gibt es zumindes keine Standardbibliothek mehr.
-
http://www.c-plusplus.net/forum/viewforum-var-f-is-3.html
Und macht ein Diskussions Post in C++ auf.
Am besten wird noch ein Off-Topic für so sinnlose Diskussionen erstellt. Ich dachte eigentlich immer die Mitglieder dieses Forum haben eine gewisse Reife, doch mit solchen Diskussionen und Posts die nicht zu dem Thema gehören, in denen es darum geht seine Dominanz in der Kategorie Wissen und seine allgemeine Intelligenz unter Beweiß zu stellen, zeigen dann doch das manche einfach nicht nachgeben können. Ihr seid doch alle so klug, wieso handelt ihr dann nicht nach dem guten alten Motto "der Klügere gibt nach" ? Es wird sowieso wieder ein ewig langer Thread, in dem am Ende niemand mehr weiß wie der Anfang war.
-
hahaha. schrieb:
@Simon2: Das ist das Konzept von Java, dass es auf einer VM läuft....
Mehr behaupte ich auch nicht.
Dann sind wir uns im ersten Punkt schon einig.Nun zum 2.: Nach welchem Konzept läuft C++ auf welcher Maschine?
Meine These: Gibt nichts Vergleichbares. Ergo: Weniger mit Maschine Verheiratet als Java.Zum Quellensuchen bin ich gerade zu faul ... seltsamerweise teilen aber immerhin die 10 Leute (darunter mehr Javafans als C++-Fans) aus meiner Abteilung meine Ansicht.
Gruß,
Simon2.